update:2016/11/5
(一)对象和类
1.对象和类的认识
1.对象
对象(object)是问题域中某些事物的抽象,是具有唯一标识的某些属性、操作和方法的封装体。
对象之间通过消息(message)进行通信。
消息是从一个对象(发送者)向另一个或几个对象(接收者)发送信号,或者由一个对象(调用者)调用另一个对象(接受者)的操作。某项任务通常需要多个对象协作完成,而多个对象之间的协作是通过消息传递来完成的。称为了完成一个特定任务而在对象间产生的一组消息称为一个消息序列。
在面向对象的程序设计中,消息可以通过函数调用、程序间内部通信、事件的发生等进行实现。对象具有生命周期(lifetime)。
生命周期是指对象从创建、活动到删除的过程。在计算机中,对象生命周期中的状态主要由其所占用的存储空间是否有效为标志:
对象的创建是指在内存中为其对象分配空间;
对象的活动是指对象能自主地运行,并且可以接收消息加以处理,通过处理外来消息改变自身状态,并且向其他对象发送消息等;
对象的删除是指当对象的使命完成后,可以将内存中其占用的存储空间置为无效并回收。
2.类
类(class)是一组客观对象的抽象,是一组具有共同的静态特征和行为特征的对象集合。
- 类是对象的本质,对象是类的实例。
对于同一类的不同实例之间,具有如下特点:①相同的属性;②相同的操作和方法;③不同的对象名;④不同的属性值。
3.属性、操作和方法
类和对象都包含了属性、操作和方法。
属性(attribute)是类和对象中的静态特征。在面向对象程序中用一个数据单元来表示属性。属性可以用属性名、类型、可修改性、多重性、可见性描述,属性可以有初始值。对于可以修改的属性,可以改变其属性值。
操作(operation)是对象执行某种功能的规格说明。
方法(method)是操作的实现,是说明生成操作结果的算法或过程,通常用函数体或过程体来表示方法。
消息可以是调用者对被调用者操作的调用。被调用者在接收到调用者传递的消息时,激活操作相应的方法。执行终了,调用者收回控制,并获得方法处理的结果。
2.面向对象方法的基本特征
面向对象(object-orientation programming,OOP)的基本特征是封装、继承和多态。
1.封装
封装(encapsulation)就是将属性和操作封装在对象中并和外部区隔开来。在面向对象编程中,对象是一种自治、封装的实体,对象之间通过接口进行消息传递。
封装给程序设计带来如下的好处:
- 有效控制某个对象内部发生变化时对其他对象的影响。
- 通过对象的接口简化对象的使用,保持程序结构的稳定。
- 便于对数据和功能的复用。
2.泛化和继承
泛化(generalization)是一般类和特殊类之间的层次关系。
- 一般类也称为基类(base class)或父类(super class);特殊类称为派生类(derived class)或子类(subclass)。派生类建立在基类的基础之上,继承(inherit)基类所有的属性、操作,并对其进行扩展。泛化有时也叫做“is-a”关系,因为派生类的实例也可看成(is a)基类的实例。
继承(inheritance)是类间数据和操作的共享。