首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现
admin
2016-05-10
52
问题
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式的类图如图5—1所示。
【C++代码】
class Light{
public:
Light(string name){/*代码省略*/)
void on() { /*代码省略*/ ) //开灯
void off() { /*代码省略*/ ) //关灯
};
class Command{
public:
(1);
};
class LightOnCommand:public Command { //开灯命令
private:
Light*light;
public:
LightOnCommand(Light*light){this一>light=light; }
void execute(){ (2) ; )
};
class LightOffCommand:public Command{ //关灯命令
private:
Light*light;
public:
LightOffCommand(Light*light){this->light=light; )
void execute(){ (3) ; }
};
class RemoteControl{ //遥控器
private:
Command*onCommands[7];
Command*OffCommands[7];
public:
RemoteControl() { /*代码省略*/ }
void setCommand(int S lot,Command*onCommand,Command*offCommand) {
(4) =onCommand;
(5) =offCommand;
}
void onButtonWasPushed(int slot){ (6) ; }
void offButtonWasPushed(int slot){ (7) ; }
};
int main(){
RemoteControl*remoteControl=new RemoteControl();
Light*liVingRoomLight=new Light(”Living Room”);
Light* kitchenLight=new Light(”kitchen”);
LightOnCommand*livingRoomLightOn=new LightOnCommand (liVingRoomLight);
LightOffCommand*livingRoomLightOff=new LightOffCommand(livingRoomLight);
LightOnCommand* kitchenLightOn=new LightOnCommand(kitchenLight);
LightOffCommand* kitchenLightOff=new LightOffCommand(kitchenLight);
remoteControl一>setCommand(0, liVingRoomLightOn, liVingRoomLightOff);
remoteControl一>setCommand(1, kitchenLightOn, kitchenLightOff);
remoteControl一>onButtonWasPushed(0);
remoteControl一>offButtonWasPushed(0);
remoteControl一>onButtonWasPushed(1);
remoteControl一>offButtonWaSPushed(1);
/*其余代码省略*/
return 0;
}
选项
答案
(1)virtual void execute()=0 (2)light一>on() (3)light一>oif() (4)onCommands[slot] (5)offCommands[slot] (6)onCommands[slot]->execute() (7)offCommands[slot]一>execute()
解析
本题考查命令(Command)模式的基本概念和应用。
命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
在软件系统中,行为请求者与行为实现者之间通常呈现一种紧耦合的关系。但在某些场合,比如要对行为进行记录撤销重做事务等处理,这种无法抵御变化的紧耦合是不合适的。这种情况下,使用Command模式将行为请求者与行为实现者进行解耦。
题目中给出了Command模式的类图,其中:
Command类为所有命令声明了一个接口。调用命令对象的execute()方法,就可以让接收者进行相关的动作。
ConcreteCommand类定义了动作和接收者之间的绑定关系。调用者只要调用execute()就可以发出请求,然后由ConcreteCommand调用接收者的一个或多个动作。
Invoker持有一个命令对象,并在某个时间点调用命令对象的execute()方法,将请求付诸实行。
Receiver知道如何进行必要的工作,实现这个请求。任何类都可以当接收者。
了解了Command模式的内涵之后,下面来看程序。
由于Command类的主要作用是为所有的ConcreteCommand定义统一的接口,在C++中通常采用抽象类来实现。C++的抽象类是至少具有一个纯虚拟函数的类。本题中的接口就是execute()方法,所以(1)处要求填写的是纯虚拟函数execute的定义方式,即virtualvoid execute()=0。
类LightOnCommand、LightOffCommand对应的就是模式中的ConcreteCommand。ConcreteCommand中execute()方法的代码在类图中已经给出,现在需要确定receiver是谁。类Light充当的是Receiver,其中定义了两种action:on和off。所以(2)、(3)对应代码分别为light一>on()、light->off()。
类RemoteControl对应的是模式中的Invoker,在该类中设置需要控制的命令对象。
(4)处对应的代码为onCommands[slot],设置“开灯”命令对象;(5)处对应的代码为offCommands[slot],设置“关灯”,命令对象。类RemoteControl中的方法onButtonWasPushed和offButtonWasPushed,分别完成对开灯、关灯命令对象的execute方法的调用,所以(6)、(7)处分别对应代码onCommands[slot]->execute()、offCommands[slot]一>execute()。
转载请注明原文地址:https://kaotiyun.com/show/ydDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
阅读以下关于校园网组建的技术说明,根据要求回答问题1至问题4。【说明】某学校新建一栋21层教学综合大楼,楼层两端相距100m,距一端50m处有一弱电竖井,弱电竖井贯穿每层的弱电室。每层楼均有100个信息点(所有信息点要求具有100Mb/s的数据传
如果ping127.0.0.1(本地循环地址),如果该地址无法Ping通,则说明了是什么原因?什么命令是一个监控TCP/IP网络的实用的工具,它可以显示实际的网络连接以及每一个网络接口设备的状态信息?什么命令是把网卡物理地址与IP静态地址捆绑在一起?
如果ping127.0.0.1(本地循环地址),如果该地址无法Ping通,则说明了是什么原因?在DOS状态下输入tracertwww.ciu.net.cn并执行后,经过一段时间等待,系统会反馈出很多IP地址。出现在最上方(第1条记录)的IP地址是什么
网络维护是网络管理中一项很重要的工作。由于网络协议和网络设备的复杂性,许多故障解决起来绝非像解决单机故障那么简单。网络故障的定位和排除,既需要长期的知识和经验积累,也需要一系列的软件和硬件工具,这样才能解决我们在学习或工作中遇到的网络故障。
以下是使用E1线路实现多个64Kbit/s专线连接。当链路为T1时,channel-group编号为0~23,Timeslot范围为1~24;当链路为E1时,channel-group编号为0~30,Timeslot范围为1~31.路由器
阅读以下说明,回答问题1至问题3。【说明】Plug-gw是Linux配置中常带的通用代理程序,可用来代理POP3、HTTP等应用层服务。附图3为某网络结构图,内部网段上有一台POP3服务器和一台FTP服务器。代理服务器中使用ipchains包过滤
阅读以下关于网络地址转换(NAT)的技术说明,结合网络拓扑图回答问题1至问题3。【说明】网络地址转换(NAT)技术可用来缓解IP地址短缺问题和实现TCP负载均衡功能。动态地址翻译技术在子网外部使用少量的全局地址,通过路由器进行内部和外部地址的转换
阅读以下有关网络设备安装与调试的叙述,分析设备配置文件,回答问题1、问题2和问题3。现以一台远程访问服务器(RemoteAccessServer,RAS)Cisco2509、RJ45为例来说明。第1步,准备安装与调试所需的设备,主要包
认真阅读以下关于架构Apache安全服务器的技术说明,根据要求回答问题1至问题5。【说明】某些商务公司要求其网站的部分信息资源只对经过身份认证后的用户开放。因此在Linux+Apache架构Web服务器方案中,需利用mod-ss1模块给Apach
随机试题
在PowerPoint2000幻灯片中,_______是行距的单位。
消化性溃疡出血时采用内镜止血,适用于有_______或_______的溃疡。
A.伴随卵巢周期性变化而出现的子宫内膜周期性脱落及出血B.月经第一次来潮称之月经初潮,月经的出现是性成熟的主要特征C.月经周期的计算是从月经来潮的第1天算起,直到下次月经前一天D.月经周期可分为3个阶段:卵泡期、排卵期及黄体期E.月经周期
休克阴血亏损导致阴厥型宜用何方治疗休克阳气衰微导致寒厥型宜用何方治疗
出纳填写票据的出票日期时,“9月12日”应填写成()。
为一个刚满18岁的子女筹资建立一个教育金账户,以下可以接受的策略是( )。Ⅰ.申请学生贷款Ⅱ.在大学期间,减少房屋贷款的还款额Ⅲ.在大学期间,减少养老金账户的供款Ⅳ.投资股票类基金Ⅴ.投资于教育基金计划
某企业2015年度利润总额为1800万元,其中本年度国债利息收入200万元,已计入营业外支出的税收滞纳金6万元;企业所得税税率为25%。假定不考虑其他因素,该企业2015年应交所得税为()万元。
排球发球赢得一分,继续发球,此时应由()位置的队员发球。
《布拉格和约》
AnotherearlyNativeAmericantribein(31)isnowthesouthwesternpartoftheUnitedStateswastheAnasazi.ByA.D.800theA
最新回复
(
0
)