阅读下列说明C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表16.3所示。 现采用装饰器(Decor

admin2014-11-13  24

问题 阅读下列说明C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表16.3所示。

现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图16—5所示的类图。

【C++代码】
#include
{}include
USing namespace std;
const int ESPRESSO_PRICE=25;
const int DRAKROAST_PRICE=2 0;
const int MOCHA—PRICE=1 0;
const int WHIP_PRICE=8;
class Beverage(//饮料
(1):string description;
public:
(2)  ()(return description;)
(23)  ;
};
class CondimentDecorator:public Beverage(//配料
protected:
(4);
};
class Espresso:public Beverage(//蒸馏咖啡
publ ic:
  EspresSO(){description:”Espresso”;}
  int cost()(return ESPRESSO_PRICE;}
};
class DarkRoast:public Beverage(//深度烘焙咖啡
public:
  DarkRoast()(descript ion=”DardRoast”;)
  int cost()(return DRAKROAST_PRICE;)
);
class Mocha:publ ic CondimentDecorator {//摩卡
public:
  Mocha(Beverage‘beverage)(thi S一>beverage=beverage;  )
  string getDescription()(  return beverage一>getDescript ion()+”,Mocha”;  )
  int  cost()(  return MOCH@A@-pRICE+beverage一>cost(); )
);
class Whip:publ ic CondimentDecorator{//奶泡
public:
  Whip(Beverage‘beverage)  (thi S一>beverage=beverage;)
  string getDescription()  (return beverage一>getDescription()+”,Whip”;  )
  int cost()(return WHIP_PRICE+beverage一>cost();)
);
int main()  {
  Beverage*beverage=new DarkRoast();
    beVerage=new Mocha((15));
    beVerage=new Whip((6));
    cout<getDescription()<<”¥”<cost()<    return 0;
}
编译运行上述程序,其输出结果为:DarkRoast,Mocha,Whip¥38

选项

答案(1)abstract(2)StringgetDescription(3)abstractintcost() (4)Beveragebeverage(5)beverage(6)beverage

解析 由类图可知,Beverage是基类,Espresso、DarkRoast、CondimentDecorator是Beverage的派生类,Mocha、Whip又是CondimentDecorator的派生类。
    (1)处应填/kdescfiption[~访问控制类型,可能为private或protected。在Beverage~派生类Espressol~%)]-始化函数中直接使用]"description,由此可知,在基类中,description[~访问控制类型为protected。如果为priVate,则在派生中不能使用。
    在基类中先后动态建立了一个DarkRoast对象、Mocha对象和Whip对象,调用初始化函数,并输出。在Mocha类和Whip类中分别调用了基类的getDescription()cost()。
转载请注明原文地址:https://kaotiyun.com/show/j4DZ777K
0

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