首页
登录
从业资格
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配
考试题库
2022-08-02
79
问题
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。
现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图5-1所示的类图
【C++代码】#include<iostream>#include<string>using namespace std;const int ESPRESSO_PRICE=25;const int DRAKROAST_PRICE=20;const int MOCHA_PRICE=10;const int WHIP_PRICE=8;class Beverage{//饮料(1):string description;public:(2)( ){return description;}(3);};class CondimentDecorator:public Beverage{//配料protected:(4);};class Espresso:public Beverage{//蒸馏咖啡public:Espresso( ){description="Espresso";}int cost( ){return ESPRESSO_PRICE;}};class DarkRoast:public Beverage{//深度烘焙咖啡public:DarkRoast( ){description="DardRoast";}int cost( ){return DRAKROAST_PRICE;}};class Mocha:public CondimentDecorator{//摩卡public:Mocha(Beverage*beverage){this->beverage=beverage;}string getDescription( ){return beverage->getDescription( )+",Mocha";}int cost( ){return MOCHA_PRICE+beverage->cost( );}};class Whip:public CondimentDecorator{//奶泡public:Whip(Beverage*beverage){this->beverage=beverage;}string getDescription( ){return beverage->getDescription( )+",Whip";}int cost( ){return WHIP_PRICE+beverage->cost( );}};int main( ){Beverage*beverage=new DarkRoast( );beverage=new Mocha((5));beverage=new Whip((6));cout<<beverage->getDescription( )<<"¥"<<beverage->cost( )endl;return 0;}编译运行上述程序,其输出结果为:DarkRoast,Mocha,Whip¥38
选项
答案
解析
(1)protected
(2)virtual string getDescription
(3)virtual int cost()=0
(4)Beverage*beverage
(5)beverage
(6)beverage
本题考查了C++语言的应用能力和装饰设计模式的应用。
第(1)空很明显,是要说明属性description在类Beverage中的类型,应该是私有的、受保护的或公有的,从后面的程序我们可以看出,子类中继承使用了该属性,因此这里只能定义为受保护的,因此第(1)空的答案为protected。
第(2)空处也很明显,是要给出一个函数的定义,并且该函数的函数体是“return description;”,从子类奶泡和摩卡中我们不难发现这个函数应该是getDescription,因此本空的答案为virtual string getDescription。
第(3)空需要结合后面各子类才能发现,在Beverage中还应该定义一个函数cost(),而这个函数在Beverage中并没有实现,因此要定义为纯虚函数,所以第(3)空的答案为virtual int cost()=0。
第(4)空在类CondimentDecorator中,且是该类唯一的一条语句,而他的子类分别是奶泡和摩卡,在奶泡和摩卡这两个类中,都用到了Beverage*beverage,而在使用之前并没有说明,因此这就可以说明,Beverage*beverage是在父类CondimentDecorator中定义的,子类直接继承使用,因此第(4)空的答案为Beverage*beverage。
第(5)和第(6)空在主函数当中,其中第(5)空是要创建一个Mocha对象,应该调用的是类Mocha的构造函数,从类Mocha中,我们可以看出,其构造函数Mocha的参数是一个Beverage类型的对象指针,而在主函数中,开始就定义了一个Beverage类型的对象指针beverage,因此这里只需填写beverage即可。同理第(6)空的答案也是beverage。
转载请注明原文地址:https://tihaiku.com/congyezige/2410679.html
本试题收录于:
中级 软件设计师题库软件水平考试初中高级分类
中级 软件设计师
软件水平考试初中高级
相关试题推荐
系统说明书应达到的要求包括?()。①全面②系统③准确④详实⑤清晰⑥重复A.①②
系统开发的特点中,“质量要求高”的含义是()。A.系统开发的结果不容许有任何错
采用白盒测试方法时,应根据()和指定的覆盖标准确定测试数据。A.程序的内部逻辑
为验证程序模块A是否实现了系统设计说明书的要求,需要进行():该模块能否与其它
为验证程序模块A是否实现了系统设计说明书的要求,需要进行__()__:该模块能
信息系统建成后,根据信息系统的特点、系统评价的要求与具体评价指标体系的构成原则,
根据系统运行的不同阶段可以实施4种不同级别的维护。当提供最完美的支持,配备足够数
IT资源管理能否满足要求主要取决于IT基础架构的配置及运行情况的信息,配置管理就
IT资源管理能否满足要求主要取决于IT基础架构的配置及运行情况的信息,配置管理就
根据客户与外包商建立的外包关系,可以将信息技术外包划分为:市场关系型外包、中间关
随机试题
经国务院药品监督管理部门指定药品检验机构检验合格方能进口的是A.国内供应不足的药
坚决反对以教师为中心和儿童中心主义的倾向,提出“活教育”理论的是( )。
下列各项中,属于注册会计师在了解被审计单位财务业绩衡量和评价情况时应当关注的信息
购房人发现商品房质量有问题,不能选择退房的情形有( )。A:使用1年后发现屋面
女孩9个月,母乳喂养,刚开始添加辅食,食欲较差,偏食。体检发现其皮肤弹性尚可,腹
在2008年至2009年间,下列统计指标增速最快的是()地价。 A.综合
我国《婚姻法》中“凡直系血亲关系或三代以内旁系血亲关系者禁止结婚”的规定的出发点
调查时由于调查对象的代表性很差,使结果出现误差的偏倚是A.选择性偏倚B.无应答偏
商业银行借款的种类有( )。A.同业借款 B.储蓄存款 C.回购协议 D
为了确保工程质量事故的处理效果,凡涉及结构承载力等使用安全和其他重要性能的处理工
最新回复
(
0
)