文档介绍:第九章面向对象实现
面向对象实现主要包括两项工作:
,翻译成用某种程序语言书写的面向对象程序;
。
面向对象编程
面向对象测试
第一节面向对象编程
一、非面向对象的语言与面向对象的语言
面向对象设计的结果,既可以用面向对象语言,也可以用非面向对象语言实现。使用非面向对象语言编写面向对象程序,必须由程序员自己把面向对象概念映射到目标程序中。
例如,C语言本身并不直接支持类或对象的概念,程序员只能利用结构(struct)定义变量,由于不能直接在结构中定义函数,因此必须利用指针间接定义相应的函数。另外,所有非面向对象语言都不支持继承的实现,使用这类语言编程时,要么完全回避继承的概念,要么在声明特殊化类时,把对一般化类的引用嵌套在它里面。
面向对象语言充分支持面向对象概念的实现。从问题域到面向对象分析模型,从面向对象模型到面向对象设计模型,最后从面向对象设计模型到面向对象编程都具有一致的表示方法。一致的表示方法既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。
二、面向对象语言选择
80年代以来,面向对象语言像雨后春笋一样大量涌现,形成了两大类面向对象语言,一类是纯面向对象语言,如Smalltalk和Eiffel等语言,着重支持面向对象方法研究和快速原型的实现;另一类是混合型面向对象语言,也就是在过程语言的基础上增加面向对象机制,如C++等语言,它的目标是提高运行速度和使传统程序员容易接受面向对象思想。
下面介绍几种典型的面向对象语言和选择面向对象语言时应着重考察的一些技术特点。下表是各种面向对象语言中使用的术语对比。
面向对象概念
Smalltalk-80术语
C++术语
Objective-C术语
Eiffel术语
对象
对象
对象
对象
对象
类
类
类
对象工厂
对象工厂
方法
方法
成员函数
方法
例程
属性
实例变量
数据成员
实例变量
属性
消息
消息
函数调用
消息表达式
例程施用
子类
子类
派生类
子类
后代
继承性
继承性
派生
继承性
继承性
(一)几种典型的面向对象语言
Smalltalk起源可追溯到20世纪60年代后期,由美国的Xerox公司Palo Alto研究中心(PARC)开发。Smalltalk语言在Xerox PARC经过了多次重大修改,最终形成了Smalltalk-80版本。Smalltalk-80全面支持面向对象的概念,从上表可以看出二者基本一致,表明了这种语言对OOP的深刻影响。
除了概念上的影响作用外,Smalltalk-80对OOP的其它主要贡献是构成其开发环境的两个要素:窗口化的程序设计工具和类库。Smalltalk-80实际上与开发环境不可分离。这个环境同样是用类和对象实现的,提供了一组对象管理功能,具有多窗口、图形化的用户界面和一组程序设计工具。
在这些工具的支持下,程序中的类、消息和方法的实现都可以在不同的窗口中联机地设计、实现、浏览和调试。Smalltalk-80是最早引入类库的语言。Smalltalk-80的类库实际上就是语言的核,连语言的(伪)编译程序、排错程序、编辑程序,也是基于类库中的类实现的。用这种语言进行程序设计,首先要了解并会使用它的类库。