首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】 某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现
admin
2016-05-10
75
问题
阅读下列说明和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
软件设计师下午应用技术考试
软考中级
相关试题推荐
该网络采用R1~R7共7台路由器,采用动态路由协议OSPF。由图1-1可见,该网络共划分了3个OSPF区域,其主干区域为(1),主干区域中,(2)为区域边界路由器,(3)为区域内路由器。下表是该系统中路由器的IP地址分配表。请根据上
阅读以下说明,回答问题1至问题3,将解答填入解答栏内。【说明】某单位有1个总部和6个分部,各个部门都有自己的局域网。该单位申请了6个C类IP地址202.115.10.0/24~202.115.15.0/24,其中总部与分部4共用一个C类地址。现计
与ISDN相关的网络设备主要有TA、NT1、NT2、TE1、TE2等。在图2-9所示的网络拓扑结构中,路由器Router1和ISDN之间是否需要加入终端适配器(TA)?请用150字以内的文字简要说明理由。在以上路由器Router2的配置命令列表中,di
与ISDN相关的网络设备主要有TA、NT1、NT2、TE1、TE2等。在图2-9所示的网络拓扑结构中,路由器Router1和ISDN之间是否需要加入终端适配器(TA)?请用150字以内的文字简要说明理由。以下是在路由器Router1上的部分配置信息,结
根据你的网络工程经验,请用250字以内的文字简要描述该21层教学综合大楼网络层次结构设计的要点。(不要求画图)请用300字以内的文字,以提纲形式描述该21层教学综合大楼综合布线设计的方案要点。
阅读以下说明,回答问题。【说明】网络地址转换(NAT)的主要目的是解决IP地址短缺问题以及实现TCP负载均衡等。在如图5-5所示的设计方案中,与Internet连接的路由器采用网络地址转换。【问题】请根据路由器的NAT表和
若采用电话线方式上网,并按要求在计算机连入网络的同时能通电话,连网速率高于500Kbps,可以选用哪种技术方案?其最高通信速率为多少?依据ISO/OSI参考模型对无线扩频网络设备进行分类,可以分为哪几种类型?用无线扩频设备实现网络互连需要何种配套设备
在RAS上存在着两个RJ45的端口,分别为“Console”与“AUX”,请问这两个端口的用途是什么?(控制在100个字以内)在调用超级终端程序进行设备连接时,应该对设备的连接参数进行正确设置,参数主要包括串口数据传输率、数据位数、停止位数以及是否有奇
阅读以下有关网络设备安装与调试的叙述,分析设备配置文件,回答问题1至问题3。现以一台远程访问服务器(RemoteAccessServer,RAS)Cisco2509、RJ45为例来说明。第一步,准备安装与调试所需的设备,主要包括RAS
随机试题
肌组织的特点是()
毛囊角化是何种维生素缺乏的表现
下列关于违约金的说法,错误的是()。
对基金销售行为的规范包括对()等方面内容的规范。
简述宋代商业繁荣的表现。
随着孩子自我意识的逐渐增强,不少孩子对父母的教诲听不进去或当作“耳旁风”,使得家长感到力不从心。那么教师应该()
有人认为“巨额的国家预算赤字必然会导致巨额的国家贸易逆差”,如果这样的话,那么世界上预算赤字最大的国家必然会有相应的最大的贸易逆差;但我们知道,世界上预算赤字最大的国家是美国,而美国的贸易总的来说是顺差而不是逆差(因为尽管其货物贸易亏本,但其技术和服务贸易
某网站针对年底上映的两部贺岁电影进行调查,在接受调查的160人中,看过《花木兰》的有91人,看过《刺陵》的有59人,22人两部电影都看过,那么,两部电影都没看过的有多少人?()
有关零息债券的麦考利久期,以下哪种说法正确?()
若A是n阶正定矩阵,证明A-1,A*也是正定矩阵.
最新回复
(
0
)