题目详情

某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式的类图如图6-1所示。

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

【Java代码】

class Light{

public Light(  ){}

public Light(String name){/*代码省略*/}

public void on(  ){/*代码省略*/}//开灯

public void off(  ){/*代码省略*/}//关灯

//其余代码省略

}

(1){

public void execute(  );

}

class LightOnCommand implements Command{//开灯命令

Light light;

public LightOnCommand(Light light){this.light=light;}

public void execute(  ){(2);}

}

class LightOffCommand implements Command{//关灯命令

Light light;

public LightOffCommand(Light light){this.light=light;}

public void execute(  ){(3);}

}

class RemoteControl{//遥控器

Command[]onCommands=new Command[7];

Command[]offCommands=new Command[7];

public RemoteControl(  ){/*代码省略*/}

public void setCommand(int slot,Command onCommand,Command offCommand){

(4)=onCommand;

(5)=offCommand;

}

public void onButtonWasPushed(int slot){

(6);

}

public void offlButtonWasPushed(int slot){

(7);

}

}

class RemoteLoader{

public static void main(String[]args){

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

}

}

正确答案及解析

正确答案
解析

(1)interface Command

(2)light.on()

(3)light.off()

(4)onCommands[slot]

(5)offCommands[slot]

(6)onCommands[slot].execute()

(7)offCommands[slot].execute()

本题考察设计模式的实现,难度较小。根据类图和已有代码可写出空缺的代码.

(1)是Command接口的实现,应该填写interface Command;

(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()。

包含此试题的试卷

你可能感兴趣的试题

单选题

高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础

  • A.某非周期信号的幅值频谱
  • B.某周期信号的幅值频谱
  • C.某非周期信号的频谱
  • D.某周期信号的频谱
查看答案
单选题

高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础

  • A.010110和22
  • B.011010和26
  • C.11010和26
  • D.10110和22
查看答案
单选题

高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础

  • A.F=XY+y
  • B.F=y
  • C.F=XY+YZ+1,
  • D.<img src='http://tp.mxqe.com/data/746/13587812_0_1.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
查看答案
单选题

高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础

  • A.<img src='http://tp.mxqe.com/data/746/13587811_0_1.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
  • B.<img src='http://tp.mxqe.com/data/746/13587811_0_2.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
  • C.<img src='http://tp.mxqe.com/data/746/13587811_0_3.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
  • D.<img src='http://tp.mxqe.com/data/746/13587811_0_4.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
查看答案
单选题

高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础

  • A.<img src='http://tp.mxqe.com/data/746/13587810_0_1.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
  • B.<img src='http://tp.mxqe.com/data/746/13587810_0_2.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
  • C.<img src='http://tp.mxqe.com/data/746/13587810_0_3.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
  • D.<img src='http://tp.mxqe.com/data/746/13587810_0_4.jpg' alt='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础' title='高级信息系统项目管理师,章节练习,现代技术基础信号与信息基础'>
查看答案

相关题库更多 +