些大学出版社 TSINGHUA UNIVERSITY PRESS (2)把所有对象都划分成各种对象类(简称为类, class)),每个对象类都定义了一组数据和一组方法。 数据用于表示对象的静态属性,是对象的状态信息。 因此,每当建立该对象类的一个新实例时,就按照 类中对数据的定义为这个新对象生成一组专用的数 据,以便描述该对象独特的属性值。 类中定义的方法,是允许施加于该类对象上的 操作,是该类所有对象共享的,并不需要为每个对 象都复制操作的代码
(2) 把所有对象都划分成各种对象类(简称为类, class),每个对象类都定义了一组数据和一组方法。 数据用于表示对象的静态属性,是对象的状态信息。 因此,每当建立该对象类的一个新实例时,就按照 类中对数据的定义为这个新对象生成一组专用的数 据,以便描述该对象独特的属性值。 类中定义的方法,是允许施加于该类对象上的 操作,是该类所有对象共享的,并不需要为每个对 象都复制操作的代码
些大学出版社 TSINGHUA UNIVERSITY PRESS (3)按照子类(或称为派生类与父类(或称为基类)的 关系,把若干个对象类组成一个层次结构的系统 (也称为类等级)。 在这种层次结构中,通常下层的派生类具有和 上层的基类相同的特性(包括数据和方法),这种现 象称为继承 Inheritance)。但是,如果在派生类中 对某些特性又做了重新描述,则在派生类中的这些 特性将以新描述为准,也就是说,低层的特性将屏 蔽高层的同名特性
(3) 按照子类(或称为派生类)与父类(或称为基类)的 关系,把若干个对象类组成一个层次结构的系统 (也称为类等级)。 在这种层次结构中,通常下层的派生类具有和 上层的基类相同的特性(包括数据和方法),这种现 象称为继承(inheritance)。但是,如果在派生类中 对某些特性又做了重新描述,则在派生类中的这些 特性将以新描述为准,也就是说,低层的特性将屏 蔽高层的同名特性
些大学出版社 TSINGHUA UNIVERSITY PRESS (4)对象彼此之间仅能通过传递消息互相联系。 对象与传统的数据有本质区别,它不是被动地 等待外界对它施加操作,相反,它是进行处理的主 体,必须发消息请求它执行它的某个操作,处理它 的私有数据,而不能从外界直接对它的私有数据进 行操作。也就是说,一切局部于该对象的私有信息, 都被封装在该对象类的定义中,就好像装在一个不 透明的黑盒子中一样,在外界是看不见的,更不能 直接使用,这就是“封装性
(4) 对象彼此之间仅能通过传递消息互相联系。 对象与传统的数据有本质区别,它不是被动地 等待外界对它施加操作,相反,它是进行处理的主 体,必须发消息请求它执行它的某个操作,处理它 的私有数据,而不能从外界直接对它的私有数据进 行操作。也就是说,一切局部于该对象的私有信息, 都被封装在该对象类的定义中,就好像装在一个不 透明的黑盒子中一样,在外界是看不见的,更不能 直接使用,这就是“封装性”
些大学出版社 TSINGHUA UNIVERSITY PRESS 面向对象的方法学可以用下列方程来概括: oo=objects+classes+inheritance+communication with messages 也就是说,面向对象就是既使用对象又使用类 和继承等机制,而且对象之间仅能通过传递消息实 现彼此通信。 如果仅使用对象和消息,则这种方法可以称为 基于对象的 object-based)方法,而不能称为面向对 象的方法;如果进一步要求把所有对象都划分为类, 则这种方法可称为基于类的( class-based)方法,但 仍然不是面向对象的方法。只有同时使用对象、类 继承和消息的方法,才是真正面向对象的方法
面向对象的方法学可以用下列方程来概括: OO=objects+classes+inheritance+communication with messages 也就是说,面向对象就是既使用对象又使用类 和继承等机制,而且对象之间仅能通过传递消息实 现彼此通信。 如果仅使用对象和消息,则这种方法可以称为 基于对象的(object-based)方法,而不能称为面向对 象的方法;如果进一步要求把所有对象都划分为类, 则这种方法可称为基于类的(class-based)方法,但 仍然不是面向对象的方法。只有同时使用对象、类、 继承和消息的方法,才是真正面向对象的方法
些大学出版社 TSINGHUA UNIVERSITY PRESS 212面向对象方法学的优点 1.与人类习惯的思维方法一致 传统的程序设计技术是面向过程的设计方法, 这种方法以算法为核心,把数据和过程作为相互独 立的部分,数据代表问题空间中的客体,程序代码 则用于处理这些数据
1. 与人类习惯的思维方法一致 传统的程序设计技术是面向过程的设计方法, 这种方法以算法为核心,把数据和过程作为相互独 立的部分,数据代表问题空间中的客体,程序代码 则用于处理这些数据。 2.1.2 面向对象方法学的优点