试题三(15分)阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。[说明]某城市的各国家公园周边建造了许多供游客租用的小木屋和营地,为此,该城市设置了一个中心售票处和若干个区域售票处。游客若想租用小木屋或营地,必须前往中心售票处进行预定并用现金支付全额费用。所有的预定操作全部由售票处的工作人员手工完成。现欲开发一信息系统,实现小木屋和营地的预定及管理功能,以取代手工操作。该系统的主要功能描述如下:1.管理预定申请。游客可以前往任何一个售票处提出预定申请。系统对来自各个售票处的预定申请进行统一管理。2.预定。预定操作包含登记游客预定信息、计算租赁费用、付费等步骤。3.支付管理。游客付费时可以选择现金和信用卡付款两种方式。使用信用卡支付可以享受3%的折扣,现金支付没有折扣。4.游客取消预定。预定成功之后,游客可以在任何时问取消预定,但需支付赔偿金,剩余部分则退还给游客。赔偿金的计算规则是,在预定入住时间之前的48小时内取消,支付租赁费用10%的赔偿金;在预定入住时间之后取消,则支付租赁费用50%的赔偿金。5.自动取消预定。如果遇到恶劣天气(如暴雨、山洪等),系统会自动取消所有的预定,发布取消预定消息,全额迟款。6.信息查询。售票处工作人员查询小木屋和营地的预定情况和使用情况,以判断是否能够批准游客的预定申请。现采用面向对象方法开发上述系统,得到如表3-1所示的用例列表和表3-2所示的类列表。对应的用例图和类图分别如图3-1和3-2所示。
[问题3](2分)对于某些需求量非常大的小木屋或营地,说明中功能4的赔偿金计算规则,不足以弥补取消预定所带来的损失。如果要根据预定的时段以及所预定场地的需求量,设计不同层次的赔偿金计算规则,需要对图3-2进行怎样的修改 (请用文字说明)
参考答案:解答1:增加一个新的类,该类与类ReservationItem之间有关联关系。 或 解答2:修改Rate类,使其具有计算赔偿金的功能。
解析:在面向对象方法中,好的类模型对需求的变化应该具有一定的适应性。本题考察的就是这一点。根据题目,现在对原有的赔偿金计算规则要进行修正。除了考虑取消预定的时间之外,同时要考虑所预定的小木屋或营地的地段以及需求量。修正类模型时通常两种基本方式,一种是修改已有的类,使其适应新的需求;第二种是增加一个新的类来完成新的需求,但是需要同时考虑新增加的类与已有类之间的关系。这道题目两种修改方法都可以采用。 若要修改已有的类,需要首先了解哪个类与现在的新需求是有相关性的。新需求针对的是赔偿金,赔偿金又与租赁费用相关,所以要找原先与租赁费用相关的那个类,即Rate。解决方案之一就是修改Rate,使其能够按照新的规则计算赔偿金。 第二种修改方式,增加一个专门计算赔偿金的类。按照新的计算规则,这个类就与游客的每次预定内容相关,因此这个新增加的类应该与类ReservationItem之间有关联关系。