问答题 阅读下列说明和图,回答问题。
[说明]
某运输公司决定为新的售票机开发车票销售的控制软件。图10.8给出了售票机的面板示意图以及相关的控制部件。
售票机相关部件的作用如下所述。
(1)目的地键盘用来输入行程目的地的代码(例如,200表示总站)。
(2)乘客可以通过车票键盘选择车票种类(单程票、多次往返票和坐席种类)。
(3)继续/取消键盘上的取消按钮用于取消购票过程,继续按钮允许乘客连续购买多张票。
(4)显示屏显示所有的系统输出和用户提示信息。
(5)插卡口接受MCard(现金卡),硬币口和纸币槽接受现金。
(6)打印机用于输出车票。
假设乘客总是支付恰好需要的金额而无需找零,售票机的维护工作(取回现金、放入空白车票等)由服务技术人员完成。
系统采用面向对象方法开发,使用UML进行建模。系统的顶层用例图和类图分别如图10.9和图10.10所示。
[问题1]
根据说明中的描述,给出图10.9中A1和A2所对应的参与者,U1所对应的用例,以及(1)、(2)处所对应的关系。
[问题2]
根据说明中的描述,给出图10.10中缺少的C1~C4所对应的类名以及(3)~(6)处所对应的多重度。
[问题3]
图10.10中的类图设计采用了中介者(Mediator)设计模式,请说明该模式的内涵。
【正确答案】[问题1]
A1:乘客 A2:服务技术人员
U1:支付 (1)<<include>> (2)<<include>>
[问题2]
C1:键盘 C2:目的地键盘 C3:车票键盘 C4:继续/取消键盘
(3)~(6):1
[问题3]
使用Mediator模式,可以使各个对象间的耦合松散,只需关心和Mediator的关系,使多对多的关系变成了一对多的关系,可以降低系统的复杂性,提高可修改扩展性。
【答案解析】[解析] 本题考查面向对象开发相关知识,设计UML用例图、类图以及类图设计时的设计模式。
[问题1]
本题考查用例图。本题中对售票机的描述为“乘客可以通过车票键盘选择车票种类(单程票、多次往返票和坐席种类);售票机的维护工作(取回现金、放入空白车票等)由服务技术人员完成”。由此可知,图10.8中A1为乘客,A2为服务技术人员。
对购票用例,要选择目的地和车票类型、通过插卡口进行支付才可完成购票。因此U2为支付。
在考查用例之间的关系时,购票过程可以取消,也允许乘客连续购买多张票,因此,购票时可以包含多次选择目的地和车票类型、支付,即购票用例包含(关系<<include>>)选择目的地和车票类型以及支付。
[问题2]
本问题考查类图。售票机的面板由多个控制部件组成。根据说明这些控制部件有目的地键盘、车票键盘和继续/取消键盘、显示屏、卡驱动器、硬币/纸币槽、打印机。图10.10中只有前3个部件在图中没有给出,而要填入4个类。从图中已经抽象出的硬件组件,给出了抽象的思路,从而可以把键盘抽象出来。由C1与C2、C3、C4的继承关系中C1为基类,可知C1为键盘。由C2、C3和C4给出的方法名称可知,C2为目的地键盘获取目的地代码,C3为车票键盘选择产品类型,C4为继续/取消键盘。
本题中的重复度比较简单。从图10.8售票机的图示中可以看出,一个售票机只包含一个目的地键盘、一个车票键盘和一个继续/取消键盘,因此(3)~(6)均为1。
[问题3]
本题考查设计模式。本题题目中给出所采用的设计模式为Mediator模式,只需说明设计模式的内涵即可。使用Mediator模式,可以使各个对象间的耦合松散,只需关心和Mediator的关系,使多对多的关系变成了一对多的关系,可以降低系统的复杂性,提高可修改扩展性。