阅读下列说明和Java代码,将应填入(1)~(5)处的字句写在答题纸的对应栏内。 【说明】 某航空公司的会员积分系统将其会员划分为普卡(Basic)、银卡(Silver)和金卡(Gold)三个等级。非会员(Non Member)可以申请成为

admin2019-10-08  7

问题 阅读下列说明和Java代码,将应填入(1)~(5)处的字句写在答题纸的对应栏内。
    【说明】
    某航空公司的会员积分系统将其会员划分为普卡(Basic)、银卡(Silver)和金卡(Gold)三个等级。非会员(Non Member)可以申请成为普卡会员。会员的等级根据其一年内累积的里程数进行调整。描述会员等级调整的状态图如图7所示。现采用状态(State)模式实现上述场景,得到如图8所示的类图。

【Java代码】
    import java.util.*;
    abstract class CState
    {
    public int flyMiles;  //里程数
    public______(1);    //根据累积里程数调整会员等级
    }
    class CNoCustomer extends CState    //非会员
    {
    public double travel(int miles,FrequentFlyer context)
    {
    System.out.println(’’Your travel will not account for points’’);
    return miles;    //不累积里程数
    }
    }
    class CBasic extends CState    //普卡会员
    {
    public double travel(int miles,FrequentFlyer context)
    {
    if(context.flyMiles>=25000 && context.flyMiles<50000)
    ______(2);
    if(context.flyMiles>=50000)
    ______(3);
    return miles;
    }
    }
    class CGold extends CState    //金卡会员
    {
    public double travel(int miles,FrequentFlyer context)
    {
    if(context.flyMiles>=25000&&context.flyMiles<50000)
    ______(4);
    if(context.flyMiles<=250001
    ______(5);
    return miles+0.5*miles;  //累积里程数
    }
  }
  class CSilver extends CState    //银卡会员
  {
  public double travel(int miles,FrequemtFlyer context)
  {
    if(context.flyMiles<=25000)
    context.setState(new CBasic());
    if(context.flyMiles>50000)
    context.setState(new CGold());
    return(miles+0.25*miles);  //累积里程数
    }
  }
  class FrequentFlyer
  {
    CState state;
    double flyMiles;
    public FrequentFlyer()
    {
    state=new CNoCustomer();
    flyMiles=0:
    setState(state);
    }
    public void setState(CState state){this.state=state;}
    public void travel(int miles)
    {
    double bonus Miles=state.travel(miles,this);
    fly Miles=fly Miles+bonusMiles;
    }
}

选项

答案(1)abstract double travel(int miles,FrequentFlyer context) (2)context.setState(new CSilver ()) (3)context.setState(new CGold ()) (4)context.setState(new CSilver ()) (5)context.setState(new CBasic ())

解析
转载请注明原文地址:https://kaotiyun.com/show/CsxZ777K
0

相关试题推荐
最新回复(0)