问答题 阅读以下技术说明,根据要求回答下列问题。
[说明]
某汽车停车场欲建立一个信息系统,已经调查到的需求如下。
1.在停车场的入口和出口分别安装一个自动栏杆、一台停车卡打印机、一台读卡器和一个车辆通过传感器等,其示意图见图8-18。

2.当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。
3.在停车场内分布着若干个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。
4.当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令,栏杆自动放下。若这张卡是无效的,系统不发出栏杆抬起命令而发出告警信号。
5.系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示“车位已满”信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。
根据上述描述,采用面向对象方法对其进行分析与设计,得到如表8-8所示的类/用例/状态列表,如图8-19所示的用例图,如图8-20所示的初始类图以及如图8-21所示的描述入口自动栏杆行为的UML状态图。
表8-8 类/用例/状态列表
用户名 说明 类名 说明 状态名 说明
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]
根据说明中的描述,使用表8-8给出的用例名称,给出图8-19中U1、U2和U3所对应的用例。
【正确答案】U1:Car entry U2:Car exit
U3:Car entry when full
【答案解析】表8-8中给出了Car entry、Car exit、Report Statistics、Car entry when full 4个用例。在这4个用例中,两个用例表示汽车进入停车场,一个用例表示汽车退出停车场,另一个用例表示记录停车场相关信息。经分析得出,前3个用例的参与者都是驾驶员,因此U1、U2和U3对应进入和退出停车场。U1和U3之间存在扩展关系,而用例之间的延伸关系用于对被用户看作是可选系统行为的用例的一部分建模。通过这种方式,可以把可选行为从必需的行为中分离出来。Car entrv when full和car entry之间就可以使用extend关系进行建模。
问答题 [问题2]
根据说明中的描述,使用表8-8给出的类的名称,给出图8-20中的A~D所对应的类。
【正确答案】A:CarPark B:Barrier
C:EntryBarrier D:ExitBarrier
【答案解析】在UML类图中,类与类之间的5种关系从弱到强依次为:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition)和继承(Inheritance)。因此依赖关系最弱,继承表示类与类之间关系最强。依赖(Dependency)关系是类与类之间的连接,并且依赖总是单向的,其标准UML图形表示为“”。“”表示其相联的两个类之间存在关联关系,用于描述两个概念上位于相同级别的类的实例之间存在的某种语义上的联系。聚合关系是关联关系的一种特例,代表两个类之间的整体/局部关系,其标准UML图形表示为“”。“”表示其相联的两个类之间存在继承关系。子类继承父类的行为与含义,子类还可以增加或者覆盖父类的行为。子类可以出现在父类出现的任何位置。
依题意可以判断Barlrier、EntryBarrier和ExitBarrer之间存在继承关系,而在图8-20类图中“
问答题 [问题3]
根据说明中的描述,使用表8-8给出的状态名称,给出图8-21中S1~S4所对应的状态。
【正确答案】S1:Idle S2:Await Ticket Take
S3:Await Enable S4:Await Entry
【答案解析】在图8-21中,Idle表示有空闲车位,Disable表示没有空闲车位,因此在其之间存在双向的状态迁移,即状态图上的状态S1为Idle状态。当停车场存在空闲车位时,汽车请求进入停车场,根据说明描述“当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡”,可知该动作正对应于状态图上的S1和状态S2之间的迁移,因此,状态S2表示的含义应该是按下按钮后的状态,此时,驾驶员等待打印停车卡,所以状态S2为Await Ticket Take。同理可分析出状态S3和状态S4。
问答题 [问题4]
简要解释图8-19中用例U1和U3之间的extend关系的内涵。
【正确答案】用例之间的延伸关系用于对被用户看作是可选系统行为的用例的一部分建模。通过这种方式,可以把可选行为从必需的行为中分离出来
【答案解析】在用例的执行过程中,可能会在不同的流程分支中选择执行,也可能会出现异常行为。此时,可以将异常行为或可选分支抽象成一个单独的扩展用例,它与主用例之间形成“扩展(extend)”关系。