问答题
阅读下列说明和图,回答下面问题。
[说明]
某城市的各国家公园周边建造了许多供游客租用的小木屋和营地,为此,该城市设置了一个中心售票处和若干个区域售票处。游客若想租用小木屋或营地,必须前往中心售票处进行预定并用现金支付全额费用,所有的预定操作全部由售票处的工作人员手工完成。现欲开发一信息系统,实现小木屋和营地的预定、管理功能,以取代手工操作。该系统的主要功能描述如下:
(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类,使其具有计算不同层次赔偿金的功能。