首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表16-1所示。 现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图16-4所示的类图。
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表16-1所示。 现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图16-4所示的类图。
admin
2015-06-03
32
问题
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表16-1所示。
现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图16-4所示的类图。
【C++代码】
#include
#include
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*beuerage) {this->beverage=beverage; }
string getDescription( ) {return beverage->getDescription( )+“,Whip”;}
int cost( ) { return WHIP PRICE+beverage->cost( );}
};
int meln() {
Beverage*beverage=new DarkRoast( );
beverage=new Mocha((5));
beverage=new Whip((6));
cout<
getDescription ( )<<“¥”<
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)空处也很明显,是要给出一个函数的定义,并且该函数的函数体是“retumdescription;”,从子类奶泡和摩卡中不难发现这个函数应该是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://kaotiyun.com/show/2dDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
假定提供Web服务的两台Linux服务器IP地址分别为192.168.1.10和192.168.1.20。为了使用DNS循环机制,由主机名www.test.com对外提供一致的服务,需要在DNS服务器的test.com区域文件中增加下列内容:www
IPSec工作在TCP/IP协议栈的(1),为TCP/IP通信提供访问控制、(2)、数据源验证、抗重放、(3)等多种安全服务。IPSec的两种工作模式分别是(4)和(5)。(1)~(5)备选答案:A.应用层B.网络层C.数据链
为了使DNS_Server1能正确解析本地Web站点的域名,需对DNS_Server1中的DNS服务进行配置。在图1所示的对话框中,新建的区域名称是(1);在图2所示的对话框中,添加的新建主机名称为(2),IP地址栏应填入(3)。如下图所示,配置允许
阅读以下说明,将(n)的含义填入对应栏内。[说明]电子邮件是Internet中应用最广泛的服务,因此安装和配置一个高效与满足实际需求的电子邮件系统是每一个系统管理员的奋斗的目标之一,Linux的出现为构建低成本的、高效的电子邮件服务器提供了
阅读以下说明,回答【问题1】~【问题4】,将解答填入答题纸的对应栏内。【说明】设有A、B、C、D四台主机都处在同一个物理网络中,A主机的IP地址是192.155.12.112,B主机的IP地址是192.155.12.120,C主机的IP地址是19
请指出图1-12中(1)空缺处传输的是模拟信号,还是数字信号?在图1-12所示的网络拓扑图中,欲使内部网具有构造虚拟网的功能,图中(5)空缺处的交换机应具有哪些功能?
请指出图1-12中(1)空缺处传输的是模拟信号,还是数字信号?图1-12中(2)空缺处是什么设备?该设备在本宽带网络中完成哪些功能?
简述网络规划阶段需求分析的方法和解决的问题。(控制在100个字以内)在需求分析过程中应对已有网络的现状及运行情况作调研,如果要在已有的网络上作新的网络建设规划,如何保护用户已有投资?(控制在100个字以内)
L2TP协议是一种基于(1)协议的二层隧道协议,它结合了Cisco的L2F和MicrosoftPPTP的优点。该协议报文在传输层封装(2)协议之上,为了保证传输的可靠性,L2TP协议对控制报文采取了(3)机制,并要求tunne1对端设备在隧道(tunne
阅读以下关于交换机VTP协议配置的技术说明,根据要求回答问题1至问题4。【说明】利用VLAN技术可以把物理上连接的网络从逻辑上划分为多个不同的虚拟子网,可以对各个子网实施不同的管理策略。利用showvtpstatus命令在某台交换机的特权模式
随机试题
施工升降机的每个吊笼都应设置防坠安全器,在吊笼超速或悬挂装置断裂时,能将吊笼制停,防止发生坠落事故。下列对防坠安全器的要求中,正确的有()。
下列哪一项能反映大叶性肺炎的性质()
高血压引起心脏肥大应为()。
临床最常见的头痛伴剧烈呕吐多提示为
患者,女,35岁。月经周期正常,唯月经量少、色红、质稠,经期鼻衄,量不多,色暗红,伴手足心热,潮热颧红,舌红少苔,脉细数。其证候是
下列各项中,关于所有者权益和负债的联系与区别说法正确的是()。
公务员录用的前提是()。
对作者说明“红宝石”的特征的作用,分析准确的一项是______。对“所有的天才都具有双重性”中的“双重性”表述正确的一项是______。
下面代码的执行结果是a=’’Python等级考试’’b=’’=’’c=’’>’’print(’’{0:{1}{3}{2}}’’.format(a.b.25.c))
Doyoufinditverydifficultandpainfultogetupinthemorning?Thismightbecalledlaziness,butDr.Kleitmanhasanewex
最新回复
(
0
)