- 内容提要
- 序 1:程序里的世界
- 序 2:最后一层表象
- 关于本书
- 致谢
- 引言:简单的本源
- 篇一:计算系统
- 第 1 章 数,以及对数据的性质的思考
- 第 2 章 逻辑
- 第 3 章 抽象
- 篇二:语言及其面临的系统
- 第 4 章 语言
- 第 5 章 从功能到系统
- 篇三:程序设计的核心思想
- 第 6 章 数据结构:顺序存储
- 第 7 章 数据结构:散列存储
- 第 8 章 执行体与它在执行过程中的环境
- 第 9 章 语法树及其执行过程
- 第 10 章 对象系统:表达、使用与模式
- 篇四:应用开发基础
- 第 11 章 应用开发的背景与成因
- 第 12 章 应用开发技术
- 第 13 章 开发视角下的工程问题
- 第 14 章 应用程序设计语言的复杂性
- 篇五:系统的基础部件
- 第 15 章 分布
- 第 16 章 依赖
- 第 17 章 消息
- 第 18 章 系统
- 篇六:系统的基本组织方法与原理
- 第 19 章 行为的组织及其抽象
- 第 20 章 领域间的组织
- 附一:主要编程范式 及其语言特性关系
- 附二:继承与混合,略谈系统的构建方式
- 附三:像大师们一样思考——从 UML 何时死掉 谈起
- 附四:VCL 已死,RAD 已死
10.3 对象是 属性包:方法与事件可以视为属性的特例
将对象作为“一种数据”来观察,则所谓 PME 中的方法(M)与事件(E)就可以视为是“面向对象逻辑需求的”特殊属性(P)。其中,方法是对象创建之前即可确知的自有逻辑,事件则是在对象创建时仍有未定因素的外部逻辑,这二者本质上也是对象的性质。如图 19 所示。
图 19 PME 作为语言特性所实现的抽象概念
所以 PME 其实只是概括了对象属性,而无助于得到这一对象本身。也就是说,从 PME 的角度上来思考,只是对对象的细节刻画;如何从目标系统中识别到该对象,则是刻画它的前提。
对象的 继承性 则是对“对象如何获得”的一个解释。如同我们说整数作为数据,在它的系列中的关系为“+1”一样,继承性约定了对象——这个数据在它的系列中的“关系”为层次继承 7 ,如图 20 所示。
图 20 基本的对象继承
若对象 C 继承自 B,B 继承自 A,则 C 必继承自 A,即 C 必具有 A 都有的属性性质。如同人位于生物继承关系的最末端,因而人必然有所有生物的所有基础性质。又如图 21 所示。
图 21 对象继承性的衍化与证明
基于以上推论,若对象 A 具有某唯一性质,例如“A 是对象”,则 X、B、C 都“必为对象”。因此,对象的继承性保证了对象系统中的每一个数据都必然是对象。
但是对象 X 与对象 C 又各自具有不同性质,例如人与马具有所有陆生动物的性质,但人与马又有不同。这一点,又是通过对象的 多态性 来说明的。多态性意味着对象 X 与对象 C 是在对象 B 的基础上相同的,但在其各自的表达范围中却是不同的(多态)。例如图 22 说明对象 X、C 在范围{B}中是相同的,但在范围{X}和{C}中各自不同。由此,我们可以进一步推论图 23 中的对象 X1、X2 与对象 C 在范围{B}中也是相同的:
图 22 X 与 C 是范围{B}中同类对象的多态
图 23 继承性决定了 X1、X2 与 C 在范围{B}中的多态关系
由此可见,多态性是对象的性质在其继承关系上的表现。由于继承关系本身即是附加的性质,因而多态性也是附加的性质。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论