问答题 阅读下列说明和图,回答下面问题。
[说明]
某城市的各国家公园周边建造了许多供游客租用的小木屋和营地,为此,该城市设置了一个中心售票处和若干个区域售票处。游客若想租用小木屋或营地,必须前往中心售票处进行预定并用现金支付全额费用,所有的预定操作全部由售票处的工作人员手工完成。现欲开发一信息系统,实现小木屋和营地的预定、管理功能,以取代手工操作。该系统的主要功能描述如下:
(1)管理预定申请。游客可以前往任何一个售票处提出预定申请,系统对来自各个售票处的预定申请进行统一管理。
(2)预定。预定操作包含登记游客预定信息、计算租赁费用、付费等步骤。
(3)支付管理。游客付费时可以选择现金和信用卡付款两种方式。使用信用卡支付可以享受3%的折扣,现金支付没有折扣。
(4)游客取消预定。预定成功之后,游客可以在任何时间取消预定,但需支付赔偿金,剩余部分则退还给游客,赔偿金的计算规则是,在预定入住时间之前的48小时内取消,支付租赁费用10%的赔偿金;在预定入住时间之后取消,则支付租赁费用500名的赔偿金。
(5)自动取消预定。如果遇到恶劣天气(如暴雨、山洪等),系统会自动取消所有的预定,发布取消预定消息,全额退款。
(6)信息查询。售票处工作人员查询小木屋和营地的预定情况和使用情况,以判断是否能够批准游客的预定申请。
现采用面向对象方法开发上述系统,得到如表1所示的用例列表和表2所示的类列表,对应的用例图和类图分别如图1和图2所示。
表1 用例列表
用例名 说明
ManageInquiries 管理预定申请
MakeReservation 预定
ManagePayment 支付管理
CancelReservation 游客取消预定
CheckAvailability 信息查询
PublishMessage 发布取消预定消息
ManageCashPayment 现金支付
ManageCrCardPayment 计算付款折扣
GetDiscount 系统自动取消预定
AutoCancelReservation 计算取消预定的赔偿金
CalculateRefund
表2 类列表
类名 说明
NationalPark 国家公园
Reservation 预定申请
TicketingOfficer 售票处
Bungalow 小木屋
Discount 付款折扣
CreditCardPayment 信用卡支付
Customer 游客
Reservationltem 预定申请内容
CampSite 营地
Payment 付款
CashPayment 现金支付
Rate 租赁费用

图1

问答题 根据说明中的描述与表1,给出图1中UC1~UC6处所对应的用例名称。
【正确答案】
【答案解析】UC1:CheckAvailablity UC2:MakeReservation UC3:GetDiscount
UC4:ManageCashPayment UC5:ManageCrCardPayment UC6:CalculateRefund [解析] 本题主要考查在面向对象分析与设计过程中,如何利用用例图和类图描述系统需求模型及设计模型。考生需要理解面向对象方法的相关概念和思想,并熟悉UML的语法及应用。用例图和类图是考题中出现次数最多的两种UML模型。
本问题要求将图1中的用例名称补充完整。用例图的构成要素有:参与者、用例以及用例之间的关系。首先找出本题的突破口,即图2中,ManagePayment与UC4、UC5间的泛化关系。由“游客付费时可以选择现金和信用卡付款两种方式”,可知UC4和UC5为ManageCashPayment及ManageCrCardPayment。ManagePayment与UC3之间为<<include>>关系,又由“信用卡支付可以享受折扣,现金支付没有折扣”,可知UC3为GetDiscount。由CancelReservation和AutoCancelReservation用例与UC6之间的关系,取消预定后需要支付赔偿金,因此UC6为CalculateRefund。此外,Managelnquiries是管理预定请求用例,在预定时包含登记游客信息、计算租赁费用等,因此UC1为CheckAvailablity,UC2为MakeReservation。
问答题 根据说明中的描述与表2,给出图2中C1~C7处所对应的类名。
【正确答案】
【答案解析】C1:NationPark C2:Rate C3:Ticketing officer
C4:Payment C5:Discount C6:CashPayment
C7:CreditCardPayment [解析] 本问题考查的是类图建模,解题的重点在于根据类图中提供的类及类之间的关联关系,推断出剩余的类。需要补充的类集中在三个结构:聚集结构(C1和C2)、泛化结构(C4、C6和C7)、关联结构(C3和C5)。泛化结构是比较容易辨识的类之间的关联关系,是一种特殊与一般关系。由说明中由“游客付费时可以选择现金和信用卡付款两种方式”及“信用卡支付可以享受折扣,现金支付没有折扣”的描述,可以确定C4为Payment,C5为Discount,C6为CashPayment,C7为CreditCardPayment,C6和C7可以互换。由于ReservationItem与C1、C2间是聚集结构,其之间存在“部分/整体”关系,并由其之间的多重度可知,C1为NationPark,C2为Rate。最后,结合表2以及Reservation与C3间的关系,可判断C3为Ticketing officer。
问答题 对于某些需求量非常大的小木屋或营地,说明中功能4的赔偿金计算规则,不足以弥补取消预定所带来的损失,如果要根据预定的时段以及所预定场地的需求量,设计不同层次的赔偿金计算规则,需要对图2进行怎样的修改(请用文字说明)?
【正确答案】
【答案解析】修改方案1:增加一个新类,该类与类ReservationItem之间有关联关系。
修改方案2:修改Rate类,使其具有计算赔偿金的功能。 [解析] 本问题较为新颖,在以往考试中出现较少。
题目要求根据预定的时段以及所预定场地的需求量,设计不同层次的赔偿金计算规则。在图2中,和赔偿金相关的类是Reservationltem和Rate,因此可以通过新增加一个类,使该类与类Reservationltem之间有关联关系,或直接修改Rate类,使其具有计算不同层次赔偿金的功能。