一. 单选题(共16题,32分)
1. (单选题, 2分)下列关于接口的说法不正确的是( ) 。
- A. 接口是一种特殊的类
- B. 所有接口都是有构造型《interface》的类
- C. 在程序运行的时候,其他对象不仅需要依赖于此接口,还需要知道该类对接口实现的其它信息
- D. 一个类可以通过实现接口从而支持接口所指定的行为
正确答案: C:在程序运行的时候,其他对象不仅需要依赖于此接口,还需要知道该类对接口实现的其它信息;
2. (单选题, 2分)下列关于内部转换和自转换的描述中,错误的是()
- A.
内部转换和自转换不同,虽然两者都不改变状态本身,但是自转换会激发入口动作和出口动作的执行,而内部转换却不会。
- B.
内部转换对事件做出响应,并执行一个特定的活动,但并不引起状态变化。
- C.
自转换是一个状态自身到自身的转换,没有引起状态的变化,所以不需要执行状态的入口动作和出口动作。
- D.
内部转换可以用关键字event表示
正确答案: C:自转换是一个状态自身到自身的转换,没有引起状态的变化,所以不需要执行状态的入口动作和出口动作。;
3. (单选题, 2分)已知类Student和类ClassRoom之间存在关联关系,类Student的多重性被设置为1..*,这表示
- A. ClassRoom对象有0到1个Student对象
- B. ClassRoom对象有且仅有一个Student对象
- C. ClassRoom对象至少有一个Student对象
- D. ClassRoom对象有多于1个的Student对象
正确答案: C:ClassRoom对象至少有一个Student对象;
4. (单选题, 2分)Uml的类元素中,可视化符号" # "表示
- A. package
- B. private
- C. public
- D. protected
正确答案: D:protected;
5. (单选题, 2分)
下图中,xyz分别表示关系
- A. Associations, Dependencies,Generalizations
- B. Associations,Generalizations, Dependencies
- C. Dependencies, Generalizations, Associations
- D. Dependencies, Associations, Generalizations
正确答案: C:Dependencies, Generalizations, Associations;
2分
6. (单选题, 2分)采用UML进行软件建模过程中,类图是系统的一种静态视图,用( )可明确表示两类事物之间存在的整体/部分形式的关联关系。
- A. 实现关系
- B. 依赖关系
- C. 泛化关系
- D. 聚合关系
正确答案: D:聚合关系;
7. (单选题, 2分)下列关于监护条件的描述中错误的是()
- A.
从一个状态引出的多个转换可以有同样的触发器事件,但是每个转换必须具有不同的监护条件。
- B.
在转换上必须标明监护条件。
- C.
监护条件是触发转换必须满足的条件,它是一个布尔表达式。
- D.
当触发事件发生后,求监护条件的值,如果值为真,转换可以触发;如果值为假,转换就不能被触发,如果也没有其他的转换被这个触发事件触发,则事件被忽略。
正确答案: B
8. (单选题, 2分)下列对状态图描述不正确的是( )
- A. 状态图通过建立类的对象的生命周期模型来描述对象随时间变化的动态行为
- B. 状态图描述了一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处状态对不同的事件作出反应
- C. 状态图适用于描述状态和动作的顺序,不仅可以展现一个对象拥有的状态,还可与说明事件如何随着时间的推移来影响这些状态
- D. 状态图的主要目的是描述对象创建和撤销的过程中资源的不同状态,有利于开发人员提高开发效率
正确答案: D
9. (单选题, 2分)UML中关联的多重性是指( )。
- A. 一个类的实例能够与另一个类的多个实例相关联
- B. 一个类的某个方法被另一个类调用的次数
- C. 两个类所具有的相同的方法和属性
- D. 一个类有多个方法被另一个类调用
正确答案: A:一个类的实例能够与另一个类的多个实例相关联;
10. (单选题, 2分)
状态图描述一个对象在不同( )的驱动下发生的状态转移。
- A. 事件
- B. 对象
- C. 数据
- D. 执行者
正确答案: A:事件;
2分
11. (单选题, 2分)状态图可以表现( )在生存期的行为,所经历的状态序列,引起状态转移的时间以及因状态转移而引起的动作。
- A. 一组对象
- B. 多个执行者
- C. 一个对象
- D. 几个子系统
正确答案: C: 一个对象;
2分
12. (单选题, 2分)UML类图中,若类A仅在其方法Method1中定义并使用了类B的一个对象,类A其他部分的代码都不涉及类B,那么类A和类B的关系应为()关系。
- A. 组合
- B. 聚合
- C. 关联
- D. 依赖
正确答案: D:依赖;
13. (单选题, 2分)在类A的定义中出现形如:void setColor(Color temp){...}的操作定义。易见Color是一个类,那么它与类A一定存在( )关系。
- A. 泛化关系
- B. 没关系
- C. 关联关系
- D. 依赖关系
正确答案: D:依赖关系;
14. (单选题, 2分)UML类图中,若类A中包含了其他类的实例,且当类A的实例消失时,其包含的其它类的实例也消失,则类A和它所包含的类之间存在()关系。
- A. 依赖
- B. 组合
- C. 关联
- D. 聚合
正确答案: B:组合;
15. (单选题, 2分)UML类图中, 类A作为整体包含了其他类的实例, 若类A的实例消失时,其它类的实例仍然存在并继续工作,那么类A和它所包含的类之间存在( )关系。
- A. 依赖
- B. 聚合
- C. 关联
- D. 组合
正确答案: B:聚合;
2分
答案解析:
16. (单选题, 2分)下列对于转换(Transition)的描述中错误的是()
- A.
在转换上可以标明引起转换发生的触发事件(event trigger)、控制触发事件发生时转换是否能进行的监护条件(guard condition)和在转换激活时可以进行的动作(action)。
- B.
转换进入的状态为活动状态,转换离开的状态变为非活动状态。
- C.
转换必须有一个触发事件,否则转换不能发生
- D.
转换表示当一个特定事件发生或者某些条件得到满足时,一个源状态下的对象在完成一定的动作后将发生状态转变,转向另一个称之为目标状态的状态。
正确答案: C
二. 多选题(共1题,5分)
17. (多选题, 5分)下列关于历史状态(history state)的描述中,正确的是()
- A.
每当转换到组合状态的历史状态时,对象便恢复到上次离开该组合状态时的最后一个活动子状态,并执行入口动作(如果有的话)。
- B.
历史状态代表上次离开组合状态时的最后一个活动子状态,它用一个包含字母“H”的小圆圈表示。
- C.
历史状态的作用是记忆上次离开组合状态时的最后一个活动子状态,简化了组合状态图的画法。
- D.
当转换到组合状态的历史状态时,如果这是该组合状态的首次进入,则从该组合状态的起始状态开始执行。
正确答案: ABCD
5分
三. 判断题(共5题,10分)
18. (判断题, 2分)状态图必须有且只能有一个初始状态,可以没有也可以有多个终止状态。
- A. 对
- B. 错
正确答案: 对
2分
19. (判断题, 2分)An interface is a class that has no implementation; that is, all its features are abstract.
- A. 对
- B. 错
正确答案: 对
2分
20. (判断题, 2分)已知类A和类B之间存在关联关系,类A可见类B,且多重性定义为1。则表示在编写代码时,类A存在一个属性,该属性的类型是类B。
- A. 对
- B. 错
正确答案: 对
2分
21. (判断题, 2分)The multiplicity of an association's role is the number of instances a class relates to an instance of another class.
- A. 对
- B. 错
正确答案: 对
22. (判断题, 2分)在状态图中,内部转换可导致进入转换和离开转换的执行。
- A. 对
- B. 错
我的答案: 错正确答案: 错
四. 简答题(共5题,53分)
23. (简答题, 10分)
简述类图中Aggregation 和Composition的区别。
我的答案:
10分
1.聚合关系是“has-a”关系,组合关系是“contains-a”关系;
2.聚合关系表示整体与部分的关系比较弱,而组合比较强;
3.聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
正确答案:
24. (简答题, 8分)
某汽车停车场欲建立一个信息系统,已经调查到的需求如下:
(1)在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机/一台读卡器以及一个车辆通过传感器,示意图如图1所示。
图1 自动停车场示意图
(2)当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。
(3)在停车场内分布着若干个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。
(4)当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口处的传感器通知系统发出命令,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。
(5)系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示“车位已满”信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。
根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表1所示的用例/类/状态列表、如图2所示的初始类图,以及如图3所示的描述入口自动栏杆行为的UML状态图。
图2 初始类图
图3 入口自动栏杆行为的状态图
表1 用例/类/状态列表
用例名 | 说明 | 类名 | 说明 | 状态名 | 说明 |
Car entry | 汽车进入停车场 | CentralComputer | 停车场信息系统 | Idle | 空闲状态,汽车可以进入 |
Car exit | 汽车离开停车场 | PaymentMachine | 付款机器 | Disable | 没有车位 |
Report Statistics | 记录停车场的相关信息 | CarPark | 停车场,保存车位信息 | Await Entry | 等待汽车进入 |
Barrier | 自动护栏 | Await Ticket Take | 等待打印停车卡 | ||
Car entry when full | 没有车位时,汽车请求进入停车场 | EntryBarrier | 入口的护栏 | Await Enable | 等待停车场内有空闲车位 |
ExitBarrier | 出口的护栏 |
【问题1】根据【说明】中的描述,使用表4-1给出的类的名称,给出图2中A~D所对应的类。
【问题2】根据【说明】中的描述,使用表4-1给出的状态名称,给出图4-3中S1~S4所对应的状态。
正确答案:
C、D答案可以互换!!
A | CarPark |
B | Barrier |
C | EntryBarrier |
D | ExitBarrier |
S1 | Idle |
S2 | Await Ticket Take |
S3 | Await Enable |
S4 | Await Entry |
25. (简答题, 15分)
【说明】
已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上(同步歌曲)。连接电脑的过程中还可自动完成充电。
关于唱片,还有以下描述信息:
1.每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。只有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队。一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。
2.每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。
3. 每条音轨都有一个开始位置和持续时间。一张唱片上音轨的次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上一条音轨是什么(如果存在的话)。
根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表1所示的类列表、如图1所示的初始类图以及如图2所示的描述播放器行为的UML状态图。
表1 类列表
类 名 | 说 明 |
Artist | 艺术家 |
Song | 歌曲 |
Band | 乐队 |
Musician | 歌手 |
Track | 音轨 |
Album | 唱片 |
图1初始类图
图2 播放器行为UML状态图
【问题1】
根据说明中的描述,使用表1给出的类的名称,给出图1中的A~F所对应的类。
【问题2】
根据说明中的描述,给出图1中(1)~(6)处的多重度。
【问题3】
图1中缺少了一条关联,请指出这条关联两端所对应的类以及每一端的多重度。
类 | 多重度 |
【问题4】
根据图2所示的播放器行为UML状态图,给出从“关闭”状态到“播放”状态所经过的最短事件序列(假设电池一开始就是有电的)。
我的答案:
15分
一、A:艺术家
B:歌曲
C:乐队
D:歌手
E:音轨
F:唱片
二、(1)1
(2)1...*
(3)0...1
(4)1
(5)1...*
(6)1
三、b到f,b端1...*,f端 1
正确答案:
【问题1】A: Artist B: Song C: Band D: Musician E: Track F: Album
【问题2】(1) 0..* (2) 2..* (3) 0..1 (4) 1..* (5) 1..* (6) 1
【问题3】Track(0..1)————>Track(0..1)
【问题4】按任意键,选择歌曲
26. (简答题, 10分)
巡航器主要用于轿车速度的控制,尤其适合在高速公路上驾驶时设置自动速度控制使用。通常,在高速公路上,如果将速度设置为110km/h的时候,巡航器将以110km/h的速度自动行驶。巡航器的硬件部分包括的表盘如下图所示
①系统开启的默认状态为S0:Disabled。
②当想要使用巡航器进行自动控制速度的时候,先按动Cruise按钮,这时巡航器控制系统被激活,处于S1:(Enabled, Inactive, [No Speed Set])状态。
③如果想保持汽车现有的速度,可以按动Set按钮,并且同时将踩油门的脚抬起,也不要踩刹车,此时汽车将保持以现有的速度匀速行驶,系统处于S2:(Enabled, Active, [Speed Set])状态。
④如果此时踩下加速器(油门)或者刹车,汽车将不会按照既定的控制速度行驶,速度将会改变。如果踩的是刹车,速度将会变慢;如果踩的是加速器,速度会变快,此时状态处于S3:(Enable, Inactive, [Speed Set])状态。虽然此时巡航器暂时不对汽车加以速度控制,但是巡航器没有忘记先前设定的控制速度。
⑤此时如果按动Resume按钮,汽车将会恢复到原有的设置控制速度,回到S2:(Enabled, Active, [Speed Set])状态。但是,如果按动的是Set按钮,而不是Resume按钮,汽车也会回到S2:(Enabled, Active, [Speed Set])。不同的是,速度将设定为当前的速度。
⑥在巡航器控制系统处于S1, S2, S3状态之一的时候,如果按动Cruise按钮,系统将会回到S0:Disabled状态。
请根据上述描述设计出完整的状态图。要求:
①使用复合状态(composite state);
②标明所有上述的引起状态转换的事件;
③除了以上的基本的状态转换意外,可以根据自己的理解,增加新的合理的状态转换,如自转换(self transition)等。
我的答案:
10分
正确答案:
27. (简答题, 10分)
简述类之间存在几种关系?给出uml符号表示,并简要解释它们的含义。
我的答案:
10分
继承(或叫泛化):指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系; 类图如下
实现(realization):指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识; 类图如下
依赖(dependency):依赖关系作为类与类之间关系的一种,代表的是一个类依赖于另一个类的实现,这种关系的方向是单向的,即类B的变化会影响到类A,反过来则不成立,这种依赖关系具有偶然性,临时性,是比较弱的关系,在代码中,表现为类B作为参数被类A的方法调用。在Java中,表现为,类B是类A的局部变量,方法中的参数和对静态方法的调用。 类图如下
关联(association):
关系表示类与类之间的连接,它使得一个类知道另外一个类的属性和方法。
关联可以使用单箭头表示单向关联,使用双箭头或者不适用箭头表示双向关联,不建议使用双向关联,关联有两个端点,每个端点可以有一个基数,表示这个关联的类可以有几个实例。
0..1 表示可以有0个或者1个实例
0..* 表示对实例的数目没有限制
1 表示只能有一个实例
1..* 表示至少有一个实例
关联关系体现的是两个类,或者类与接口之间的强依赖关系,这种关系很强烈,比依赖更强,表现在代码层面,为被关联的类B以类属性的形式出现在类A中,也可能是关联类A引用了被关联类B的全局变量。
在Java中,关联关系是使用实例变量来实现的
聚合(aggregation)是关联关系的特例,是强的关联关系,聚合是整个与个体的关系,即has-a关系,此时整体和部分是可以分离的,他们具有各自的生命周期,部分可以属于多个对象,也可以被多个对象共享;比如计算机和CPU,公司与员工的关系;在代码层面聚合与关联是一致的,只能从语义上来区分。
聚合关系也是使用实例变量来实现的,在java语法上区分不出关联和聚合,关联关系中类出于一个层次,而聚合则明显的在两个不同的层次。
组合(compostion)也是关联关系的一种特例,体现的是一种contain-a关系,比聚合更强,是一种强聚合关系。它同样体现整体与部分的关系,但此时整体与部分是不可分的,整体生命周期的结束也意味着部分生命周期的结束,反之亦然。如大脑和人类。
体现在代码层面与关联时一致的,只能从语义来区分。
组合与聚合几乎完全相同,唯一区别就是对于组合,“部分”不同脱离“整体”单独存在,其生命周期应该是一致的。
依赖 < 关联 < 聚合 < 组合
正确答案:
关联关系,泛化关系,依赖关系。其他答案略