首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现
admin
2016-05-10
31
问题
阅读下列说明和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
软件设计师下午应用技术考试
软考中级
相关试题推荐
IPSec工作在TCP/IP协议栈的(1),为TCP/IP通信提供访问控制、(2)、数据源验证、抗重放、(3)等多种安全服务。IPSec的两种工作模式分别是(4)和(5)。(1)~(5)备选答案:A.应用层B.网络层C.数据链
根据你的网络工程经验,请用250字以内的文字简要描述该21层教学综合大楼网络层次结构设计的要点。(不要求画图)该21层教学综合大楼的部分网络拓扑结构如图1-22所示,其中L3_switch1、L3_switch2为该教学综合大楼的两台核心交换机;Swi
阅读以下说明、Java源程序和运行测试部分1.HTTP协议。●HTTP请求消息示例:GET/index,htmlHTTP/1.1Accept:image/gif,image/jpeg,*/Acc
在RAS上存在着两个RJ45的端口,分别为“Console”与“AUX”,请问这两个端口的用途是什么?(控制在100个字以内)在第四步中,进入虚拟操作台后,在IOS环境下输入了如下的配置,请解释(1)~(4)处的标有下划线部分配置命令的含义(“◇”后为
简述本题中POP3服务的实现过程。要求:(1)仅屏蔽来自200.117.112.0网络的FTP数据信息;(2)仅屏蔽来自192.168.11.12主机对Internet的FTP数据信息请求。请填写完整相关信息,将(1)~(4)处
请指出图1-12中(1)空缺处传输的是模拟信号,还是数字信号?图1-12中(2)空缺处是什么设备?该设备在本宽带网络中完成哪些功能?
在RAS上存在着两个RJ45的端口,分别为Console与AUX,请问这两个端口的用途是什么?(控制在100个字以内)在调用超级终端程序进行设备连接时,应该对设备的连接参数进行正确设置,参数主要包括串口数据传输率、数据位数。停止位数以及是否有奇偶校验。
阅读以下有关网络设备安装与调试的叙述,分析设备配置文件,回答问题1、问题2和问题3。现以一台远程访问服务器(RemoteAccessServer,RAS)Cisco2509、RJ45为例来说明。第1步,准备安装与调试所需的设备,主要包
阅读以下应用L2TPv2协议实现VPN安全接入的技术说明,根据要求回答问题1至问题5。【说明】某企业应用L2TPv2协议部署企业的虚拟专用网(VPN),以方便企业的VIP用户及出差员工通过公共Internet安全地访问企业内部LAN资源,其网络拓
随机试题
下列农村企业利润分配政策中,能够使股利与公司的盈利紧密地配合,以体现多盈多分、少盈少分、无盈不分的原则,真正公平地对待每一位股东的利润分配政策是()。
下列对韩愈《张中丞传后叙》一文分析不准确的是()
将农业废弃物秸秆通过糖化过程变为饲料,然后用牲畜排泄物及秸秆残渣培养食用菌,生产食用菌的残余废料可以用来养蚯蚓,而后把最终残余物返回农田,这是生态农业中物质、能量______利用系统类型。
汇票背书人在票据上记载了“不得转让”字样,但其后手仍进行了背书转让。下列关于票据责任承担的表述中,错误的是()。
一般资料:求助者,女性,38岁,律师。案例介绍:求助者因为婚姻问题而内心痛苦近半年时间,经朋友介绍前来咨询。下面是心理咨询师与求助者之间的一段咨询对话:求助者:张老师您好!心理咨询师:您好!请坐。天气挺热,我给您倒杯
有关环境容纳量的叙述,正确的是()。
地球表面的绿色植物通过光合作用.将太阳的辐射能量转化成能被其他生物利用的有机化合能。下面说法错误的是()。
2019年11月,《国家积极应对人口老龄化中长期规划》印发。关于该规划,下列说法错误的是()。
已知A是3阶矩阵,r(A)=1,则λ=0().
Becauseofnoiseoutside,Nancyhadgreatdifficulty____________(集中注意力在实验上).
最新回复
(
0
)