1
 软件工程
1.8.2.1 6.2.1 对象

6.2.1 对象

在现实世界中,每个实体都是对象,对象是现实世界中一个个实际存在的事物,是构成客观世界的独立单位,它可以是有形的,也可以是无形的。每个对象都有它的静态的属性和动态的行为。例如,一位学生是一个对象,他有学号、姓名、性别、出生日期等属性。又如开会,那么这个“会”也是一个对象,它是抽象的、看不到的,但却是实际存在的。可见,对象是问题域中某个实体的抽象。

1.对象的定义

对象是系统中用于描述客观事物的实体,是构成系统的基本单位。每个对象由名字、一组属性和对这组属性进行操作的一组服务(或称为方法,Method)来定义。

属性和服务是构成对象的两个主要因素,即对象=属性+服务。属性是用于描述对象的静态特征的数据项,在C++语言中属性称为数据成员,一般通过封装在对象内部的数据存储来定义。如果对象的数据存储都赋了值,那么这个对象的状态就确定了。服务描述了对象执行的功能,用于描述对象的动态行为,在C++语言中服务称为成员函数。若通过消息传递,还可以为其他对象使用。对象属性的值只能通过执行对象的服务来改变。

2.对象的特点

(1)对象以数据为中心。所有操作都与对象的属性相关,而且操作的结果往往与当时所处的状态(数据的值)有关。

(2)对象是消息处理的主体。它与传统的数据有本质区别,对象不是被动地等待对它进行处理,而是进行处理的主体。为了完成某个操作,必须通过对象的公共接口向对象发送消息,请求公共接口执行对象的某个操作,以处理对象的私有数据,而不能从外部直接加工对象的私有数据。

(3)对象具有数据封装性。对象是一个黑盒,它的私有数据完全被封装在盒子中,对外隐蔽,对私有数据的访问只能通过公有操作进行。为了使用对象内部的私有数据,只需知道数据的取值范围和可以访问该数据的操作,无须知道数据的具体数据结构和操作的实现算法。

(4)模块独立性好。对象是由数据及可以对这些数据施加的操作所组成的统一体,故对象内部的各种成分彼此相关,联系紧密,内聚性强。又由于完成对象功能所需的数据和操作基本上都被封装在对象内部,它与外界的联系较小,因此,对象之间的耦合通常比较松散。

(5)对象具有并行性。不同的对象各自独立地处理自身的数据,彼此通过发送消息、传递消息来完成通信。