可见,数据的最终抽象,究竟是“结构体”还是“对象”,只是缘于我们在“如何找到数据”这个问题上的不同选择"而已。除开这一点,二者殊途同归,在其抽象本质上是一样的②二对象是带有一系列相关性质的数据。除此之外,它不带有任何必须附加的概念。明确这一点,有利于我们看到对象系统的本质与构建过程。
在《结构程序设计》中,达尔用一种非常奇特的方式来定义了类与对象之间的关系,即:如果一个过程能够产生比调用语句存活得更久的数据实体,则我们称该过①通过地址或名字。这是目前计算机发展中对这个问题的两个答案,但并非只有这两个可能答案。②所以我们看到最新的Go语言只支持所谓结构,而.NET中的结构与对象之间的界线也相当模糊。③奥利-约翰·达尔(Ole-Johan Dah)与霍尔合写了该书的第三篇。达尔被称为面向对象之父,是2002年图灵奖得主。霍尔同时是该书第二篇的作者,是1980年图灵奖获得者。
程为类;这样的数据实体(实例,instance),我们称之为对象。更有趣的是,《结构程序设计》将这样构建对象系统的过程称为“层次程序结构①”。不过这其中的“层次”却并不是指类的继承层次,而仅仅是指“按层次的方式构造和分析”去处理系统的复杂性问题。达尔在书中强调了“层次方式”是唯一有效的办法,但并没有认为系统的逐层分解与对象的继承之间存有某种必然联系。
事实上在Simula 67最初的“面向对象”观念中,对象只是一种(相对于一般数据类型而言)更为高级的数据抽象形式。直到1971年SmalITalk才提出了继承性概念。如今,对象的PME(Property-Method-Event,即属性、方法、事件)模型,以及EIP(Encapsulation-Inheritance-polymiorphism,即封装、继承、多态)构成了完整的面向对象编程的概念集。
但这些都并不是对象这一概念抽象的本义,而是实现对象系统过程中的一些实践。例如,我们可以将基于继承的对象系统,视作是通过层次方式来处理系统复杂性的一个实践。准确地说,它通过类属关系从开发目标复杂无序的数据中抽取了一部分出来,使它们成为一个可编程的、(在一定程度上)可复用的对象集。正因为这一过程只处理了具有类属关系的层次数据,所以——必然地——下面这些问题也就局限了面向对象系统的应用:□无类属关系的数据;或□非层次的数据;或口系统中的逻辑需求。
【三】yipindushu.com
将对象作为“一种数据”来观察,则所谓PME中的方法(M)与事件(E)就可以视为是“面向对象逻辑需求的”特殊属性(P)。其中,方法是对象创建之前即可确知的自有逻辑,事件则是在对象创建时仍有未定因素的外部逻辑,这二者本质上也是对象的性质。
所以PME其实只是概括了对象属性,而无助于得到这一对象本身。也就是说,从PME的角度上来思考,只是对对象的细节刻画;如何从目标系统中识别到该对象,则是刻画它的前提。
对象的继承性则是对“对象如何获得”的一个解释。如同我们说整数作为数据,在它的系列中的关系为“+1”一样,继承性约定了对象——这个数据在它的系列中的“关系”为层次继承,
①这里的“结构”更适宜理解为动词。
角度1:从数据性质之于计算的作用,来识别语言所需要实现的抽象概念图2-19 PME作为语言特性所实现的抽象概念对象A对象B对象C图2-20 基本的对象继承若对象C继承自B,B继承自A,则C必继承自A,即C必具有A都有的属性性质。如同人位于生物继承关系的最末端,因而人必然有所有生物的所有基础性质。又
基于以上推论,若对象A具有某唯一性质,例如“A是对象”,则X、B、C都“必为对象"。因此,对象的继承性保证了对象系统中的每一个数据都必然是对象。
但是对象X与对象C又各自具有不同性质,例如人与马具有所有陆生动物的性质,但人与马又有不同。这一点,又是通过对象的多态性来说明的。多态性意味着对象X与对象C是在对象B的基础上相同的,但在其各自的表达范围中却是不同的(多态)。例如图2-22说明对象X、C在范围{B}中是相同的,但在范围{X}和{C}中各自不同。由此,我们可以进一步推论图2-23中的对象X1、X2与对象C在范围{B}中也是相同的:对象A{B}{X}对象B对象X对象C{C}|图2-22 X与C是范围{B}中同类对象的多态对象A{B}{X}}对象X对象B对象C{C}|X1图2-23 继承性决定了X1、X2与C在范围{B}中的多态关系由此可见,多态性是对象的性质在其继承关系上的表现。由于继承关系本身即是附加的性质,因而多态性也是附加的性质。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
【节数以及对数据的性质的思考25:http://www.yipindushu.com/xuexifangfa/16439.html
推荐文章
12-03
1 如何提升学习能力12-12
2 历史学习方法总结12-29
3 如何提高孩子的学习效率12-02
4 高考状元的学习方法12-24
5 成人的英语学习方法