第八章 面向对象技术与UML 课后习题参考答案
一、单项选择题
- D (2)C (3)B (4)D (5)C (6)B (7)A (8)C(9)A
(10)D (11)A (12)C (13)C (14)D (15)D (16)C(17)C
二、问答题
(1)答:封装性、继承性、多态性。
在由封装,继承,多态所组成的环境中,程序员可以编写出比面向过程模型更健壮,更具扩展性的程序.经过仔细设计的类层次结构是重用代码的基础.封装能让程序员不必修改公有接口的代码即可实现程序的移植.多态能使程序员开发出简洁,易懂,易修改的代码。
(2)类是抽象的,不具体的。就像有些东西可以归为一类,比如说狗,猫,猪。它们都是动物,我们就可以归为一类。而猫,狗就是动物类中的一个对象。
(3)答:① 封装性。所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。
② 继承性。如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。前一个类称为父类,新产生的类叫做子类。通过继承关系可形成一种类层次结构,叫做继承结构。
③ 多态性。在类层次结构的不同类中,可用相同的函数名实现功能不同的函数。
(4)答:统一建模语言(UML)是一种绘制软件蓝图的标准语言。可以用UML对软件密集型系统的制品进行可视化详述和文档化。UML是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。UML的作用就是用很多图从静态和动态方面来全面描述我们将要开发的系统。
(5)答:定义:由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的图成为用例图。
作用:用例图是从软件需求分析到最终实现的第一步,它显示了系统的用户和用户希望提供的功能,有利于用户和软件开发人员之间的沟通。用例图可视化的表达了系统的需求,具有直观、规范等优点,克服了纯文字性说明的不足。用例方法是完全从外部来定义系统的,它把需求和设计完全分离开来,使用户不用关心系统内部是如何完成各种功能的。
(6)答:顺序图:强调的是消息的时间顺序。
协作图:强调的是参与交互的对象的组织。
顺序图:建模元素有生命线和控制焦点。
协作图:建模元素有路径,消息必须有消息顺序号。
顺序图:在表示算法、对象的生命期、具有多线程特征的对象等方面,相对来说更容易一些。
协作图:如果按组织对控制流建模,应该选择使用协作图
顺序图:不能表示对象与对象之间的链。对于多对象和主动对象,也不能直接显示出来。
协作图:不能表示生命线的分叉。
但是,两者之间可以相互转换,但不能完全相互代替。
三、分析题
(1)不正确,飞机和构成部件之间不是泛化关系,应该是组合关系。
(2)类图如下所示:
(3)答:① 聚合和组合都是一种包含关系,组合是一种更强的聚合关系。
② 组合关系中,容器和包含的对象具有相同的生命周期,聚合是一种相对松散的关系,容器和包含的对象可相对独立。
③ 雁阵由大雁构成,属于一种聚合关系;1只大雁拥有2只翅膀,属于组合关系。
(4)类图如下: