阅读下列说明和图,回答以下问题,将解答填入答题纸的对应栏内。 【说明】 某航空公司会员积分系统(CFrequent Flyer)的主要功能描述如下:乘客只要办理该航空公司的会员卡,即可成为普卡会员(CBasic)。随着飞行里程数的积累,可以从普卡会员升级到

admin2014-05-07  14

问题 阅读下列说明和图,回答以下问题,将解答填入答题纸的对应栏内。
【说明】
某航空公司会员积分系统(CFrequent Flyer)的主要功能描述如下:乘客只要办理该航空公司的会员卡,即可成为普卡会员(CBasic)。随着飞行里程数的积累,可以从普卡会员升级到银卡会员(CSilver)或金卡会员(CGold)。非会员(CNon Member)不能累积里程数。
    每年年末,系统根据会员在本年度累积的里程数对下一年会员等级进行调整。
    普卡会员在一年内累积的里程数若满25,000英里但不足50,000英里,则自动升级为银卡会员;若累积的里程数在50,000英里以上,则自动升级为金卡会员。银卡会员在一年内累积的里程数若在50,000英里以上,则自动升级为金卡会员。
    若一年内没有达到对应级别要求的里程数,则自动降低会员等级。金卡会员一年内累积的里程数若不足25,000英里,则自动降级为普卡会员;若累积的里程数达到25,000英里,但是不足50,000英里,则自动降级为银卡会员。银卡会员一年内累积的里程数若不足25,000英里,则自动降级为普卡会员。
    采用面向对象方法对会员积分系统进行分析与设计,得到如图3-1所示的状态图和图3-2所示的类图。


图3-2所示的类图中使用了哪种设计模式?在这种设计模式下,类CFrequentFlyer必须具有的属性是什么?C1~C4中的travel方法应具有什么功能?

选项

答案使用了State模式(状态模式)。 类CFrequentFlyer必须具有的属性:CLevel的对象。 travel方法的功能:计算飞行里程数,根据里程数判断是否需要调整会员级别(跳转到不同的状态)。

解析 本题在设计类时使用到了状态模式。状态模式允许对象在内部状态变化时,变更其行为,并且修改其类。状态模式的类图如下所示。

其中:
环境类(Context):定义客户感兴趣的接口。维护一个ConcreteState子类的实例,这个实例定义当前状态。
抽象状态类(State):定义一个接口以封装与Come的一个特定状态相关的行为。
具体状态类(ConcreteState):每一子类实现一个与Context的一个状态相关的行为。
图3-2中的类CFrequentFlyer对应上图中的环境类,因此类CFrequentFlyer应该有一个CIrevel类的对象。
travel方法的功能:计算飞行里程数,根据里程数判断是否需要调整会员级别(跳转到不同的状态)。
转载请注明原文地址:https://kaotiyun.com/show/ciDZ777K
0

最新回复(0)