预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

面向对象技术原理综述 前沿 面向对象技术是一种全新设计和构造软件的技术,它使计算机解决问题的方式更符合人类的思维方式,更能直接地描述客观世界,通过增加代码的可重用性、可扩充性和程序自动生成功能来提高编程效率,并且大大减少软件维护的开销,已经被越来越多的软件设计人员所接受。八十年代末以来,随着面向对象技术成为研究的热点出现了几十种支持软件开发的面向对象方法。 1面向对象技术的基本概念 1.1对象与消息 1.1.1对象 参考资料 对象是现实世界中的一个实体,在计算机世界中,它以数据为中心而不是以功能为中心来描述系统,可以把对象看成是存储器中一个可标识的区域,它能保存固定或可变数目的数值(或数值的集合)。为了发现对象,开发人员要在系统需求和系统分析的文档中查找名词和名词短语,包括客观世界可感知的事物(桌子、椅子、机器);角色(学生、教师、工人、农民、公务员);事件(禽流感、恐怖活动、空中救援);互相作用(批评、上课、宣传);人员;场所;组织;设备;和地点。 当重要的对象被发现后,通过一组互相关联的模型详细表示对象之间的关系和对象的行为,这些模型从四个不同的侧面表示了软件的体系结构:静态逻辑、动态逻辑、静态物理和动态物理。 静态逻辑模型描述实例化(类成员关系)、关联、聚集(整体/部分)、和一般化(继承)等关系。这被称为对象模型。一般化关系表示属性和方法的继承关系。定义对象模型的图形符号体系通常是从用于数据建模的实体关系图导出的。对设计十分重要的约束,如基数(一对一、一对多、多对多),也在对象模型中表示。 动态逻辑模型描述对象之间的互相作用。互相作用通过一组协同的对象,对象之间消息的有序的序列,参与对象的可见性定义,来定义系统运行时的行为。 静态物理模型通过模块描述代码的布局。动态物理模型描述软件的进程和线程体系结构。 1.1.2消息 消息是对象之间相互请求或相互协作的途径,是要求某个对象执行其中某个功能操作的规格说明。同一对象可接收不同形式的多个消息,产生不同的响应;相同形式的消息可以送给不同的对象,所作出的响应可以是截然不同的;消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必须的。 1.2类 面向对象程序由类的定义和类的使用两部分组成,类是对一组客观对象的抽象,它将该组对象所具有的共同特征(包括结构特征和行为特征)集中起来,以说明该组对象的能力和性质。面向对象技术将数据和对数据的操作封装在一起,作为一个整体来处理,采用数据抽象和信息隐蔽技术,将这个整体抽象成一种新的数据类型,也就是类。 在面向对象程序设计中,类的确定与划分非常重要,是软件开发中关键的一步,划分的结果直接影响到软件系统的质量。如果划分得当,既有利于程序进行扩充,又可以提高代码的可重用性。因此,在解决实际问题时,需要正确地进行分“类”。理解一个类究竟表示哪一组对象,如何把实际问题中的事物汇聚成一个个的“类”,而不是一组数据。这是面向对象程序设计中的一个难点。 类的确定和划分并没有统一的标准和固定的方法,基本上依赖设计人员的经验、技巧以及对实际问题的把握。但有一个基本原则:寻求一个大系统中事物的共性,将具有共性的系统成分确定为一个类。确定某事物是一个类的步骤包括:第一步,要判断该事物是否有一个以上的实例,如果有,则它是一个类;第二步,要判断类的实例中有没有绝对的不同点,如果没有,则它是一个类。另外,还要知道什么事物不能被划分为类。不能把一组函数组合在一起构成类,也就是说,不能把一个面向过程的模块直接变成类。类不是函数的集合! 1.3对象与类的关系 对象由属性和行为两部分组成。对象只有在具有属性和行为的情况下才有意义,属性是用来描述对象静态特征的一个数据项,行为是用来描述对象动态特征的一个操作。对象是包含客观事物特征的抽象实体,是属性和行为的封装体,在程序设计领域,可以用“对象=数据十作用于这些数据上的操作”这一公式来表达。 类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分,类是对象集合的再抽象。 类与对象的关系如同一个模具与用这个模具铸造出来的铸件之间的关系。类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。所以,一个对象又称作类的一个实例。 2面向对象系统的特征 面向对象技术的基本特征主要有封装性、继承性和多态性。 2.1封装性 封装是指将一个数据和与这个数据有关的操作集合在一起,形成一个有机的实体———对象。用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象即可。封装有两个含义:一是把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。对象的属性值(除了公有的属性值)只能由这个对象的行为来读取和修