软件设计师案例分析当天每日一练试题地址:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4
往期软件设计师每日一练试题汇总:www.cnitpm.com/class/27/e4_1.html
软件设计师案例分析每日一练试题(2025/2/15)在线测试:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4&day=2025/2/15
点击查看:更多软件设计师习题与指导
软件设计师案例分析每日一练试题内容(2025/2/15)
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式的类图如图1-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 slot, 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=newLightOffCommand(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;
}
信管网试题答案与解析:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4&day=2025/2/15
信管网考友试题答案分享:
信管网试题答案与解析:
www.cnitpm.com/exam/ExamDayAL.aspx?t1=4&day=2025/2/15