题目详情

某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式的类图如图5-1所示。

中级软件设计师,历年真题,2014年下半年(下午)《软件设计师》真题

【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;

}

正确答案及解析

正确答案
解析

(1)virtual void execute()=0

(2)light->on()

(3)light->off()

(4)onCommands[slot]

(5)offCommands[slot]

(6)onCommands[slot]->execute()

(7)offCommands[slot]->execute()

本题考查设计模式的实现,难度较小。根据类图和已有代码可写出空缺的代码,书写方式注意java和C++的区别即可。

Command类为所有的命令声明了一个接口,因此需要一个纯虚函数,这个函数根据下面的子类可以看到,应该为execute(),因此第一空填写virtual void execute()=0;

(2)和(3)定义了开灯、关灯action,因此,分别填写(2)light->on()(3)light->off();

(4)(5)分别设置“开灯”命令对象、“关灯”命令对象,因此分别填写(4)onCommands[slot](5)offCommands[slot];

(6)(7)分别完成对开灯、关灯命令对象的execute方法的调用,因此分别填写(6)onCommands[slot]->execute()

(7)offCommands[slot]->execute()。

包含此试题的试卷

你可能感兴趣的试题

单选题

Advancements in ( )have contributed to the growth of the automotive industry through the creation and evolution of self-driving vehicles.

  • A.Artificial Intelligence
  • B.Cloud Computing
  • C.Internet of Things
  • D.Big Data
查看答案
单选题

In project human resource management , ( )is not a source of power for the project manager.

  • A.referent power
  • B.expert power
  • C.reward power
  • D.audit power
查看答案
单选题

At the project establishment stage , the feasibility study mainly includes techinical feasibility analysis , ( ), operation environment feasibility analysis and other aspects of feasibility analysis.

  • A.detail feasibility analysis
  • B.opportunity analysis
  • C.economic feasibility analysis
  • D.risk analysis
查看答案
单选题

( )is a grid that shows the project resources assigned to each work package.

  • A.Stakeholder engagement assessment matrix
  • B.Requirements traceability matrix
  • C.Probability and impact matrix
  • D.Responsibility assignment matrix
查看答案
单选题

Xinhua News Agency reported in January 2022,Chian will further promote the developmet of a digital economy during the 14th Five-Year Plan eriod(2021-2025). The plan also emphasized industrial ( )transformation.

  • A.digital
  • B.networking
  • C.intelligentize
  • D.informatization
查看答案

相关题库更多 +