阅读以下说明和图,根据要求回答问题1~问题3。【说明】某航空公司会员积分系统(CFrequentFlyer)的主要功能描述如下:乘客只要办理该航空公司的会员卡,即可成为普卡会员(CBasic)。随着飞行里程数的积累,可以从普卡会员升级到银卡会员(CSilver)或金卡会员(CGold)。非会员(CNonMember)不能累积里程数。每年年末,系统根据会员在本年度累积的里程数对下一年会员等级进行调整。普卡会员在一年内累积的里程数若满25,000英里但不足50,000英里,则自动升级为银卡会员;若累积的里程数在50,000英里以上,则自动升级为金卡会员。银卡会员在一年内累积的里程数若在50,000英里以上,则自动升级为金卡会员。若一年内没有达到对应级别要求的里程数,则自动降低会员等级。金卡会员一年内累积的里程数若不足25,000英里,则自动降级为普卡会员;若累积的里程数达到25,000英里,但是不足50,000英里,则自动降级为银卡会员。银卡会员一年内累积的里程数若不足25,000英里,则自动降级为普卡会员。采用面向对象方法对会员积分系统进行分析与设计,得到如图13—3所示的状态图和图13—4所示的类图。
问答题
根据说明中的描述,给出图13—3中S1~S3处所对应的状态以及T1~T3处所对应的迁移的名称。
【正确答案】正确答案::S1普卡会员S2银卡会员S3金卡会员 T0里程数<50000 T2里程数>=50000 T3里程数>=50000
【答案解析】
问答题
根据说明中的描述,给出图13—4中C1~C4所对应的类名(类名使用说明中给出的英文词汇)。
【正确答案】正确答案::C1:CNonMember,C2:CBasic,C3;CSilver,C41:CGold
【答案解析】
问答题
图13—4所示的类图中使用了哪种设计模式?在这种设计模式下,类CFrequemFlver必须具有的属性是什么?C1一C4中的travel方法应具有什么功能?本题考查面向对象分析中的类图、用例图。用例图描述了一组用例、参与者及他们之间的关系。包括以下几个部分:用例(Case)、参与者(Actor)。会员积分系统状态图就是一种用例图。用例视图中的参与者与系统外部的一个实体以某种方式参与了用例的执行过程;用例是一个叙述型文档,用来描述参与使用系统、完成某个事情时发生的顺序。
【正确答案】正确答案::策略模式策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。类CFrequemFlver必须具有的属性是封装,C1—C4中的travel方法应该具有根据不同飞行里程相互转换的功能。
【答案解析】解析:问题1:普卡会员在一年内累积的里程数若满25,000英里但不足50,000英里,则自动升级为银卡会员;若累积的里程数在50,000英里以上,则自动升级为金卡会员。银卡会员在一年内累积的里程数若在50,000英里以上,则自动升级为金卡会员;所以,S1普卡会员S2银卡会员S3金卡会员。同样根据上述分析可知:T1里程数<50000T2里程数>=50000T3里程数>=50000。问题2: 问题2:本问题考察类图。考察类图的层次结构和多重度。图中更有4个非常明显的继承结构,即C1~C4继承CLrevel,根据说明可知代表了四类不同的会员模式。问题3:策略模式策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。类CFrequemFlver必须具有的属性是封装,C1—C4中的travel方法应该具有根据不同飞行里程相互转换的功能。