首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】某发票(Invoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。 【C+
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】某发票(Invoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。 【C+
admin
2017-11-28
27
问题
阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】某发票(Invoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。
【C++代码】
#include
using namespace std;
class Invoice{
public:
(1) {
cout<<“This is the content of the invoice!”<
}
};
class Decorator:public Invoice{
Invoice*ticket;
public:
Decorator(Invoice*t) {ticket=t;}
void printInVoice(){
if(ticket!=NULL)
(2);
}
};
class HeadDecorator:public Decorator{
public:
HeadDecorator(Invoice*t):Decorator(t){ }
void printInvoice(){
cout<<“This iS the header of the invoice!”<
(3) ;
}
};
class FootDecorator:public Decorator{
public:
FootDecorator(Invoice*t):Decorator(t){)
void printInvoice(){
(4) ;
cout<<“This is the footnote of the invoice!”<
}
};
int main(void) {
Invoice t;
FootDecorator f(&t);
HeadDecorator h(&f);
h.print工nVoice();
cout<<“一一一一一一一一一一一一一一一一一一一”<
FootDecorator a(NULL);
HeadDecorator b((5));
b.printInVoice();
return 0;
}
程序的输出结果为:
This is the header of the invoice!
This is the content of the invoice!
This is the footnote of the invoice!
……………………
This is the header of the invoice!
This is the footnote of the invoice!
选项
答案
(1)virtual void printlnvoice() (2)ticket一>printlnvoice0 (3)Decorator::printlnvoice() (4)Decorator::printlnvoice() (5)&a
解析
本题考查装饰(Decorator)模式的基本概念和应用。
装饰模式属于结构型设计模式,其设计意图是动态地给一个对象添加一些额外的职责。就增加功能而言,装饰模式比生成子类更加灵活。装饰模式的结构如图5-2所示。
其中:
Component定义一个对象接口,可以给这些对象动态地添加职责。
ConcreteComponent定义一个对象,可以给这个对象添加一些职责。
Decorator维持一个指向Component对象的指针,并定义一个与Component接口一致的接口。
ConcreteDecorator向组件添加职责。
装饰模式适用于:
在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
处理那些可以撤销的职责。
当不能采用生成子类的方式进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是,由于类定义被隐藏,或类定义不能用于生成子类。
本题将装饰模式用于实现打印发票问题。图5.1的类图中,类Invoice对应图5-2中的Component,其功能是打印发票的内容;HeadDecorator和FootDecorator是两个ConcreteDecorator,向组件中添加打印发票抬头和发票脚注的功能。
方法printlnvoice是Invoice中定义的接口,Component类中应定义一个与之一致的接口。在C++中,父类和子类之间共享接口,通常采用虚拟函数。由此可知,空(1)处应填写“virtual void printlnvoice()”。这个接口在类Decorator、HeadDecorator和FootDecorator中分别进行了重置,分别对应代码中的空(2)~(4)。
类Decorator中保持了一个指向Component对象的指针——ticket,用来接收所要装饰的组件Invoice。因此空(2)处应填写“ticket.>printlnvoice0”。类HeadDecorator和FootDecorator是在打印发票内容的基础上,打印发票的抬头和脚注,所以空(3)、(4)处都应填写“Decorator::printlnvoice0”。
最后一空考查的是装饰模式的调用,由main()函数中给出的第一次调用可以获得一些提示,推断出空(5)出应填写“&a”。
转载请注明原文地址:https://www.kaotiyun.com/show/CKDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
阅读以下有关网络规划的叙述,回答问题1、问题2和问题3。网络工程是一项复杂的系统工程,一般可分为网络规划、网络设计、工程实施、系统测试验收和运行维护等几个阶段。网络规划是在需求分析的基础上,进行系统可行性分析和论证,以确定网络总体方案。网络规划阶段
在Internet上捕获并分析图8-16所示的网络中两个内部网络经由Internet通信的L2TPv2数据帧,请从以下4个选项中选择正确的答案填写到图8-17的(1)~(4)空缺处的相应位置。【供选择的答案】A.L2TPv2头
如果在网络设计过程中划分了很多VLAN,则可采用VTP来简化其管理。交换机管理IP地址只能创建在(1)中,而VTP信息只能在(2)端口上传播。共享相同VLAN数据库的交换机构成一个(3)。不同交换机平台、不同的IOS版本支持的VLAN数量不同,从图6-18
阅读以下关于某硬件防火墙相关配置的技术说明,根据要求回答问题1至问题4。【说明】某单位在部署内部局域网时选用了一款硬件防火墙,该防火墙分别带有“WAN”、“LAN”“DMZ”、“FUN”等4个网络接口,支持Web界面、命令行等多种管理模式。该单位
非对称数字用户线(AsymmetricDigitalSubscriberLine,ADSL)是一种利用现有的传统电话线路高速传输数字信息的技术。ADSL技术可以充分利用现有铜线网路,只要在用户线路两端加装ADSL设备即可为用户提供服务。ADSL系统构
对一个大型校园网工程进行网络备份系统设计时,应考虑解决哪些主要的问题?请用150字以内的文字简要说明。某商务公司在全国各城市共有15个分支机构,这些机构已经建设了基于大型关系数据库的信息管理系统,每天负责独立地处理本区域内的业务并实时存储业务数据。每个
请用100字以内的文字说明该网管软件项目采用快速原型开发方法的优缺点。项目管理就是以项目为对象的系统管理方法,通过一个临时性的专门的柔性组织,对项目进行高效率的计划、组织、指导和控制,以实现项目全过程的动态管理和项目目标的综合协调与优化。除了本题涉及到
阅读以下交换机Switch01的部分配置信息,结合图2-8所示的网络拓扑图将(1)~(8)空缺处的内容(命令或解释)填写完整。Switch>enable(进入特权模式)S
请说出图9-1的拓扑结构名称与特点。PC2、PC4与PCI、PC3、PC5要连网且能相互访问,需要增添什么设备?
将图2-2中(1)和(2)空缺名称填写在对应的解答栏内。按照G.lite的最高速率标准,上传24MB的文件需要多少秒时间?
随机试题
计算机系统的硬件包括
下列选项中,属于法的规范作用的有
泰罗的例外原理对于“矩阵”组织形式的出现影响很大。()
心肌抑制因子(MDF):
半卧位的目的不包括
某水电站工程项目,根据《水利工程建设项目管理规定》和有关规定,项目业主严格按照水利工程建设程序进行。在项目建议书编制时委托了一家具有承担该工程项目相应资格的设计单位承担。在可行性研究报告批准后,由于编写过程存在疏忽,部分主要内容需作很大变动,经原编制单位重
选择和制定教学方法的指导思想是提倡——,反对注入式。
(2013年上半年)根据《计算机信息系统集成资质等级评定条件(2012年修订版)》规定,为体现企业的技术能力,系统集成一、二、三级企业应(3)。
在VisualFoxPro中,如果希望跳出SCAN…ENDSCAN循环体外执行ENDSCAN后面的语句,应使用
Revengeisoneofthosethingsthateveryoneenjoys.Peopledon’tliketotalkaboutit,though.Justthesame,thereisnothing
最新回复
(
0
)