当前位置:文档之家› 张海藩《软件工程导论》(第6版)(章节题库 第11章 面向对象设计)【圣才出品】

张海藩《软件工程导论》(第6版)(章节题库 第11章 面向对象设计)【圣才出品】

第11章面向对象设计
一、选择题
1.()是不需要接收消息就能主动执行的服务。

A.内部服务
B.外部服务
C.内嵌服务
D.上层服务
【答案】B
【解析】主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分,而外部服务属于主动服务,所以答案选B项。

2.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是()关系。

A.组装
B.整体与部分
C.has a
D.一般与具体
【答案】D
【解析】火车是一种陆上交通工具,而陆上交通工具不一定是火车,还可以是汽车、自行车等,说明火车是陆上交通工具的具体化,而陆上交通工具是火车的一般化,所以它们之间的关系是一般与具体的关系。

3.()只供对象内部的其他服务使用,不对外提供。

A.外部服务
B.内部服务
C.内嵌服务
D.上层服务
【答案】B
【解析】对象的服务分为外部服务和内部服务两种,其中,内部服务只供内部的其它服务使用,不对外提供,外部服务只供对象外部的其它服务使用,不对内提供。

4.对象标识是分配给每个对象的永久性标识(又称作“柄”),它不符合下述条件()。

A.在一定的范围或领域(例如一个应用系统)中是唯一的
B.与对象实例的特征、状态及分类(可能是动态的)无关
C.在对象存在期间保持一致
D.在对象存在之后保持一致
【答案】D
【解析】对象标识符合如下几个条件:
①在一定的范围或领域中是唯一的;
②与对象实例的特征、状态及分类无关;
③在对象期间保持一致。

5.对象或者类的整体行为(例如响应消息)的某些规则所不能适应的(对象或类的)()。

A.状况
B.情态
C.条件
D.问题
【答案】D
【解析】对象或者类的整体行为(例如响应消息)的某些规则所能适应的(对象或类的)状况、情况、条件、形式或生存周期阶段。

二、填空题
1.对象的服务可分为_____、_____。

【答案】外部服务;内部服务
2._____不同取值所构成的组合都可看作对象的一种新的状态。

【答案】对象的每个属性
3.如果在一个服务中包括了多项可独立定义的功能,则它是_____,应尝试把它分解为多个服务。

【答案】低内聚的
4._____应尽可能准确地反映该服务的职能。

【答案】服务名
5.属性的定义是_____,服务的定义_____。

【答案】描述对象静态特征的一个数据项;服务是描述对象动态特征(行为)的一个操作序列
6.主动对象的类称作_____,它和主动对象的关系就像类和它们的对象一样。

【答案】主动类(Active Class)
7.类通常有两种主要的结构关系,即_____关系和_____关系。

【答案】一般-具体结构;整体-部分结构
8.问题域中事物的特征可分为_____、_____。

【答案】静态;动态
9._____最直接地体现系统责任并实现用户需求的成分。

【答案】对象的服务
10._____是对象现有属性的某些特殊值。

【答案】对象的状态
三、简答题
1.试说明主动服务与被动服务的区别。

答:(1)主动服务
主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分,例如用于定义进程或线程的程序单位。

(2)被动服务
被动服务是只有接收到消息才执行的服务,它在编程实现中是一个被动的程序成分,例如函数、过程、例程等。

(3)区别
被动对象的服务都是被动服务,主动对象应该有至少一个主动服务。

在定义服务的过程中,对于主动对象应指出它的主动服务。

2.列举出几种情况下运用整体-部分结构而实现或支持的复用。

答:(1)在两个或更多的对象类中都有一组属性和服务描述这些对象的一个相同的组成部分。

把它们分离出来作为部分对象,建立整体一部分结构,这些属性和服务就被多个类复用,从而简化了它们的描述。

(2)系统中已经定义了某类对象,在定义其他对象时,发现其中一组属性和服务与这个已定义的对象是相同的,那就不必再重复地定义这些属性与服务,只需建立它与前一类对象之间的整体-部分结构。

(3)通过整体-部分结构提取可复用构件,以支持领域范围的复用问题。

如果一个对象类中有一组属性和服务描述了该对象的一个独立部分,即使从本系统看并不需这样一个部分对象,只要它是一种在本领域经常使用的对象,就可把它从整体中分离出来作为部分对象,使它的类定义成为一个应用范围较广的可复用构件。

3.列举用主动对象表示控制流时应遵循的应用规划。

答:(1)在一个表示进程的主动对象中,有且仅有一个表示进程的主动服务。

(2)如果要把一个进程和隶属于它的线程分散到不同的对象中去表示,则尽可能使每个对象中只含有一个表示线程的服务。

(3)如果要把进程和隶属于它的线程放在一个对象中表示,就应该把这个进程的全部线程都放在同一个对象中,避免一部分集中,一部分分散。

相关主题