oop语言技术比较

oop语言技术比较

ID:32366783

大小:65.50 KB

页数:13页

时间:2019-02-03

oop语言技术比较_第1页
oop语言技术比较_第2页
oop语言技术比较_第3页
oop语言技术比较_第4页
oop语言技术比较_第5页
资源描述:

《oop语言技术比较》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、OOP语言技术比较:Java,C++,ObjectPascal本文将主要涉及三种面向对象语言:Internet上最流行的语言Java,最常见的OOP语言C++,以及Borland公司用于他们的集成开发环境Delphi中的Object Pascal。这三种语言具有很多相同点。本文将从多个技术角度对这三种语言进行深入研究,并逐一比较。至于哪一种语言最优秀,我不想做过多的评论,这在很大程度上取决于你究竟要做什么。本文假定你基本掌握了所涉及的三种语言中的一种,或者至少大体上对OOP概念有一定的了解。我将会描述一些重要的语言特性,然后我会对三种语言的实现作一个比较。我不打算举实际的例子,我并不是要

2、教授OOP,只是比较这些语言。OOP关键特性面向对象程序设计(OOP)并不是一种新的程序设计技术。它最早可以上溯到Simula-67,虽然它的第一个真正完整的实现是Simula-80。在80年代下半期,OOP变得流行起来,并且出现了许多支持OOP的语言,比如C++,Objective-C(另一种C语言扩展),Object PAscal和Turbo Pascal,CLOS(Lisp的面向对象扩展),Eiffel,Ada(其最新的版本),以及最近的Java。本文将集中讨论C++、Object Pascal和Java,并有限的设计其它OOP语言。OOP的关键特性是广为人知的,在继续下面的内容之

3、前,我将简单的重复一下,以便你再熟悉一下这些通用技术。·第一个关键特性是定义了类,封装了表现和操作的抽象数据类型。在OOP语言中,类是模块、封装和数据抽象的基础。·第二个关键特性是继承,从已存在的类型中继承元素(表现和方法),改变或扩展旧类型的方法。·第三个关键技术被称为多态性,它允许使用类似的方法操作不同类型的对象(通常是子类对象)。它使得类的可用性进一步提高,程序也因此更容易维护和扩展。一种语言如果是面向对象的,必须具有类、继承和多态这几个特性(仅支持类而不支持继承和多态的语言,通常被称为基于对象的)。不同的OOP语言可能会使用完全不同的方法实现以上几个特性。我们可以通过比较类型检查

4、机制、对不同程序设计模型的支持以及所支持的对象模型来区别不同的OOP语言。下面我将深入语言特性的细节。编译期类型检查 vs. 运行期类型检查类型的强壮性是评价程序设计语言的重要标准。涉及到类型检查的内容包括对已存在的方法的调用,方法的参数的类型,数组边界的检查,等等。C++、Java和Object Pascal多或多或少的支持编译期类型检查,其中,C++的类型检查最弱,而Java的最强。原因是,C++保留了对C语言的支持,而C语言虽然支持编译期类型检查,却极其微弱。例如,C和C++认为所有数字类型都是兼容的(虽然向整型变量赋浮点数值时编译器会报警)。在Object Pascal和Java

5、语言中,布尔值与整型数值不同,而字符类型则是另一个完全不兼容的类型。虽然Java虚拟机在运行期“翻译”比特码,但并不表示它放弃了编译期类型检查。相反,在Java中类型检查进行的相当彻底。另外一些OOP语言,例如Smalltalk和CLOS,则在运行期进行类型检查。混合OOP语言 vs. 纯OOP语言另一个区别存在于纯的和混合的OOP语言之间。纯OOP语言只允许应用一种程序设计模型:OOP。你可以声明类和方法,但不能使用老式的普通函数、过程和全局变量。在以上三种语言中,只有Java是纯OOP语言(Eiffel和Smalltalk也是),初看上去纯OOP是个很好的主意,然而,你最终还是会使用

6、许多静态方法和静态数据。除了语法更复杂,这与使用全局函数和数据没有任何区别。我个人的观点是,纯OOP语言对于OOP的初学者非常有帮助,因为他将不得不使用(并学习)面向对象程序设计模型。另一方面,C++和Object Pascal都是典型的混合语言,他们允许程序员使用传统的C或Pascal程序设计方法。要注意的是,Smalltalk大大扩展了纯面向对象的概念。在Smalltalk中,所有预定义数据类型,例如整型、字符型,甚至整个语言架构(例如循环指令)都是以对象封装的。这完全是出于对纯理论的兴趣,因为这样极大的降低了程序的执行效率。Java没有做得如此绝对,它允许使用传统的,非面向对象的数

7、据类型(虽然它提供了对传统类型的类封装)。普通对象模型 vs. 对象引用模型OOP语言之间存在的第三个主要区别在于它们的对象模型。一些比较传统的OOP语言允许程序员在栈、堆和静态存储区中创建对象。在这些语言中,一个类的变量(实例)对应于内存中的一个对象。C++就是这样工作的。之后的OOP语言倾向于使用另一种模型,称为对象引用模型。在这个模型中,每个对象都动态的创建于堆中,一个类的变量实际上是一个指向内存中的对象的引用或句柄(技术上类

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。