软件工程基础教程
·126·
·126·
9. 面向对象仅是解决方案的一部分
面向对象并不能包含一切事情。不仅要使用计算机辅助软件工程来帮助建模,还需要
质量保证活动来确保系统达到用户要求,并且还要制作出方便用户有效使用的系统界面。
面向对象不是包治百病的万灵药,它仅是解决方案的一部分。
6.2 面向对象的基本概念
在面向对象的设计方法中,对象和传递消息分别是表现事物及事物间相互联系的概念。
类和继承是适应人们一般思维方式的描述范式。方法是允许作用于该类对象上的各种操作。
6.2.1 对象
对象一词应用广泛,难以精确定义,场合不同,含义各异。一般说来,任何事物均看
成“对象”,但对于计算机软件来说,则失之过泛。
在这里,对象是一个实体,它能够保存一个状态(或称信息或数据),并且能提供一系
列操作(或称行为),这些操作或
能检查或能影响对象的状态。
对象能够表示现实或抽象的事物,具有良好定义的责任和良好定义的行为,以及良好
定义的接口。对象通常不是太复杂或太大。一个对象可以由多个对象组成,并且与其他对
象具有松散耦合。
对象具有封装性(encapsulation)。对象将数据及行为封装在一起,并且具有信息隐藏的
能力,也就是说将其内部结构隐藏起来。具体地说,外界不能直接修改对象的状态,只有
通过向该对象发送消息(message)来对它施加影响。对象隐藏了其中的数据及操作的实现方
法,对外可
见的只是该对象所提供的操作的接口,对象将接口从实现中分离。但在某些面
向对象程序设计语言中,信息隐藏是有权限的,如 C++。
通过封装,可以防止对封装数据未经授权的访问,有助于保证数据的完整性。隐藏起
来的执行细节,对其他对象是透明的,因此内部细节的改动不影响向其发送消息的对象。
对象具有自治性(autonomy)。对象具有独立的计算能力:给定一定的输入,经过状态
转换,对象能产生输出,说明它具有计算能力。对象自身的状态变化不是直接受外界干
预
的,外界只有通过发送消息对其产生影响,因此对象能够提供服务。
对象具有通信性。对象具有与其他对象通信的能力,具体地说就是对象能接收其他对
象发来的消息,同时也能向其他对象发送消息。通信性反映了不同对象间的联系,通过这
种联系,若干对象可以协同完成某项任务。
对象具有被动性。对象的存在和状态转换都是由来自外界的某种刺激(stimulus)引发的,
这种刺激就是消息。对象的存在是由外界决定的,而对象的状态转换则是在它接收到某种
消息后产生的。
对象具有暂存性。有两层含义:一是指对象的存在可以动态地引发,不是在系统运行
一开始就存在二是对象可随时消亡,不是必须存在到系统运行结束。虽然在系统运行过程
中自始至终保存某些对象,但从对象的本质或作用来说,它具有暂存性。
对象可具有持久性(persistence)。持久对象不随着创建它的进程结束而消亡,并且在外