【正确答案】(1) commands[button] (2) turnLight(0) (3) setChannel(1)
(4) &lightCommand (5) RemoteController (6) Light (7) TV
【答案解析】[分析] 本题是使用C++开发的家用电器遥控系统为背景,考查考生对面向对象程序设计类的用例和继承,要注意题目中给出的要求:按钮0和2能够遥控打开电器1和电器2,按钮l和3则能遥控关闭电器1和电器2。
(1)commands[button]= command;/*设置每个按钮对应的命令对象,在RemoteController类中定义的Command *commands[4l;即用来存储对应四个按钮的Command对象。再由此行注释可知应将命令即command存入数组commands[button]当中。*/
void off(){light->(2)turnLight(0);}/*重载了父类Command类中的虚函数。Light类中turnLight(int degree)方法用于调整电灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;由此题中所给信息可知实现关灯的函数应填turnLight(0)。*/
void on(){tv->(3)setChannel(1);}/*TV类中setChannel(int channel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。由此题中信息可知实现开电视机的函数应填setChannel(1)。*/
remoteController.setCommand(0,(4)&lightCommand);/*设置按钮0的命令对象。在RemoteController类中定义的具有公有属性的成员函数void setCommand(int button,Command*command),由于该函数的第二个参数是个Command类型的指针,而Command类的子类为LightCommand和TVCommand,相应的对象分别为lightCommand和tvCommand。 */
耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。本题中问的是应用命令模式使某三个类之间的耦合性降至最小,因此只需将定义的所有类中去除命令类及其子类(Command LightCommand TVCommand),剩下的类即为答案。再由图10.31设计类图可知是Command类将RemoteController、Light、TV这三个类关联起来,故没有Command类,此三类的关联程度是很小的,即耦合性小。