面向对象程序设计及语言

面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术到一定阶段后的产物。如今,面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构,CAD技术、人工智能等领域。

面向对象语言借鉴了20世纪50年代的人工智能语言LISP,引入动态绑定的概念和交互式开发环境的思想。始于20世纪60年代的离散事件模拟语言SIMULA67,引入了类的要领和继承,成型于20世纪70年代的Smalltalk。

面向对象语言发展的两个方向:一种是纯面向对象语言,如Smalltalk、EIFFEL、C#、Java. 另一种是混合型面向对象语言,即在过程式语言及其它语言中加入类、继承等成分,如C++、Objective-C.

面向对象语言的操作以对象为基础,对硬件底层的操作不是很方便。面向过程语言是以过程或函数为基础,对底层硬件、内存等操作比较方便,但是写代码和调试维护会很麻烦。另外,如今程序设计也有了新的需求。正像当初的结构化模式和后来的面向对象模式是来满足大型程序和巨型团队的要求,如今的因为要求处理更多的数据的趋势而出现的关键问题就是并行性(parallelism)。基于这个背景出现的微软的F#语言的目标就是并行性——为了更好的在多处理器的电脑上并行工作。F#是一种函数型程序设计(FP,Functional Programming)语言。

面向对象语言刻画客观系统较为自然,便于软件扩充与复用,主要有以下四个特点:

1、识认性,系统中的基本构件可识认为一组可识别的离散对象;

2、类别性,系统具有相同数据结构与行为的所有对象可组成一类;

3、多态性,对象具有唯一的静态类型和多个可能的动态类型;

4、继承性,在基本层次关系的不同类中共享数据和操作。

计算机诞生初期,人们要使用计算机必须用机器语言汇编语言编写程序。世界上第一种计算机高级语言是诞生于1954年的FORTRAN语言

BASIC语言是1964年由 Dartmouth 学院 John G. Kemeny 与 Thomas E. Kurtz 两位教授在FORTRAN语言的基础上简化而成的, 适用于初学者设计的小型高级语言;C语言是1972年由美国贝尔实验室的D.M.Ritchie所开发,采用结构化编程方法,遵从自顶向下的原则。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,但在编写大型程序时,C语言仍面临着挑战。

1983年,贝尔实验室Bjarne Stroustrup在C语言基础上推出了C++。 C++进一步扩充和完善了C语言,是一种面向对象的程序设计语言。如上所述,典型的面向对象语言如下:

C#是微软公司2000年7月发布的一种简单、安全、面向对象的程序设计语言,是专门为.NET的应用而开发的语言。它吸收了C++、VB、Delphi、Java等语言的优点。C#继承了C语言的语法风格,同时又继承了C++的面向对象特性,但C#的对象模型已经面向Internet进行了重新设计,使用的是.NET框架的类库。

C#不提供对指针类型的支持,使得程序不能随便访问内存地址空间,从而更加健壮。C#不支持多重继承,避免了以往类层次结构中由于多重继承带来的可怕后果。.NET框架为C#提供了一个强大的、易用的、逻辑结构一致的程序设计环境。同时,公共语言运行时(CLR)为C#提供了一个托管的运行时环境,使程序比以往更加稳定、安全。

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由Sun Microsystem公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台,科学超级计算机、移动电话和互联网。在全球云计算和互联网产业环境下,Java更具有了显著优势和广阔前景。

Java由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API). SUN公司对Java编程语言的解释是:Java语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

Java平台由Java虚拟机和Java应用编程接口构成。Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台安装一个Java平台之后,Java应用程序就可运行。Java适合团队开发,软件工程可以相对做到规范,但是不是和互联网模式的持续不断修改。互联网软件工程管理上的不足,持续的修修补补导致架构的破坏。

SUN公司在推出Java之际就将其作为一种开放的技术。全球数以忘记的Java开发公司被要求所设计的Java软件必须相互兼容。“Java 语言考群体的力量而非公司的力量”是SUN公司的口号之一,这与微软公司所倡导的注重精英和封闭的模式完全不同。

Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。

后来的面向对象语言大都借鉴了C/C++语言,这里继续说回C++作为面向对象语言的特点。这里先不详细介绍C++语言的具体语法,只介绍C++对于面形对象程序的设计实现过程与逻辑。

C++的发展大致可以看作,由B语言(B语言是贝尔实验室开发的一种通用的程序设计语言,它是于1969年前后由美国贝尔实验室的电脑科学家肯·汤普森(Ken Thompson)在丹尼斯·利奇(Dennis Ritchie)的支持下设计出来)到C语言,再到C++,然后标准C++,到现在的托管C++。

托管C++

托管原理:现将高级语言程序翻译成一种与具体计算机类型无关的中间语言程序,当要在某种具体计算机上执行此程序时,再将它编译成机器相关的程序执行。其优点在于语言程序与机器无关,可在任何计算中执行,增强了程序的可移植性,实现程序的平台无关性。

CLI(Common Language Infrastructure)定了一组通用数据类型规范,它与具体机器无关。CLR(Common Language Runtime)(和Java虚拟机类似),是.NET一个标准化的程序执行环境,能够将中间语言程序转换成具体的机器语言程序。

托管的具体执行过程如下图:

 

.NET平台的主要功能

.NET是基于因特网和Web的,它独立于任何语言或平台,对于程序开发的语言不作限制,开发者可以使用多种.NET兼容语言的任意组合创建.NET程序,这就允许在同一软件项目中,多个程序员分别使用自己精通的.NET语言编写程序代码。

下次将介绍个人对Visual Studio 2010 中VC++的理解

>The ISO/IEC C++ standard ---- unmanaged C++. This version of C++ is supported on the majority of computer platforms.

>The C++/CLI standard ---- managed c++. This version is designed specifically for writing programs that target the CLR and is an externsion of the ISO/IEC C++.

时间: 2024-10-01 02:54:19

面向对象程序设计及语言的相关文章

中国MOOC_面向对象程序设计——Java语言_期末考试编程题_1细胞自动机

期末考试编程题 返回 这是期末考试的编程题 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成绩. 1 细胞自动机(30分) 题目内容: 这是细胞自动机的非图形版本.细胞自动机是指在一个二维网格内,每一个网格是一个细胞.每个细胞有活和死两种状态. 初始时刻,有些细胞是活的,有些细胞是死的.自动机的每一步,根据每个细胞周围8个格子内的其他细胞的生存情况决定这个细胞下一步是否存活.具体的规则如下:

中国MOOC_面向对象程序设计——Java语言_第2周 对象交互_1有秒计时的数字时钟

第2周编程题 查看帮助 返回 第2周编程题,在课程所给的时钟程序的基础上修改 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 1 有秒计时的数字时钟(10分) 题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,

中国MOOC_面向对象程序设计——Java语言_第3周 对象容器_1查找里程

第3周编程题 查看帮助 返回 第3周编程题.注意程序(包括注释)中不能出现汉字. 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 1 查找里程(10分) 题目内容: 题目内容: 下图为国内主要城市之间的公路里程: 你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程. 注意:任何两个城市之间的里程都

查找里程(MOOC面向对象程序设计--Java语言)

查找里程 题目内容: 下图为国内主要城市之间的公路里程: 你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程. 注意:任何两个城市之间的里程都已经给出,不需要计算经第三地中转. 注意:你并不需要去录入上图的数据,数据是在程序输入中给的. 输入格式: 首先,你会读到若干个城市的名字.每个名字都只是一个英文单词,中间不含空格或其他符号.当读到名字为"###"(三个#号)时,表示城市名字输入结束,###并不是一个城市的名字.如果记读到的城市名字的数量为n.

分数(MOOC面向对象程序设计--Java语言)

分数 题目内容: 设计一个表示分数的类Fraction.这个类用两个int类型的变量分别表示分子和分母. 这个类的构造函数是: Fraction(int a, int b) 构造一个a/b的分数. 这个类要提供以下的功能: double toDouble(); 将分数转换为double Fraction plus(Fraction r); 将自己的分数和r的分数相加,产生一个新的Fraction的对象.注意小学四年级学过两个分数如何相加的哈. Fraction multiply(Fraction

有秒计时的数字时钟(MOOC面向对象程序设计--Java语言)

有秒计时的数字时钟 题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目. 我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数: public Clock(int hour, int minute, int second); 用hour, minute和second初始化时间. public void tick();

2018面向对象程序设计(Java)第7周学习指导及要求

第7周学习指导及要求(2018.10.11-2018.10.14)   学习目标 深入理解OO程序设计的特征:继承.多态: 熟练掌握Java语言中基于类.继承技术构造程序的语法知识: 利用继承定义类设计程序,能够设计开发含有1个主类.2个以上用户自定义类的应用程序. 学习资源 1.教材第5章 2.第5章教学课件 3. corejava.zip 4. Eclipse简明教程.pdf 5. 实验七任务书 6.MOOC & 视频 浙江大学 翁恺老师:面向对象程序设计--java语言  第四周 学习任务

面向对象程序设计(JAVA) 第8周学习指导及要求

2019面向对象程序设计(Java)第8周学习指导及要求 (2019.10.18-2019.10.21)  学习目标 掌握接口定义方法: 掌握实现接口类的定义要求: 掌握实现了接口类的使用要求: 理解程序回调设计模式: 掌握Comparator接口用法: 掌握对象浅层拷贝与深层拷贝方法: 掌握Lambda表达式语法: 了解内部类的用途及语法要求. 学习资源 1.教材第6章 2.第6章教学课件 3. corejava.zip 4. Eclipse简明教程.pdf 5. 实验七任务书 6.MOOC

Ruby(面向对象程序设计的脚本语言)入门

Ruby是一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言. 简介 Ruby 是开源的,在Web上免费提供,但需要一个许可证. Ruby 是一种通用的.解释的编程语言. Ruby 是一种真正的面向对象编程语言. Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言. Ruby 可以用来编写通用网关接口(CGI)脚本. Ruby 可以被嵌入到超文本标记语言(HTML). Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby. Ruby 与 C++ 和