1、;class CeilingFan static const int HIGH = 3; static const int MEDIUM = 2; static const int LOW = 1; static const int OFF = 0; string location; int speed; CeilingFan(string s) location = s; speed =OFF;CeilingFan On location CeilingFan()CeilingFan On speed = OFF;CeilingFan Off void high() speed = HIGH
2、; void medium() speed = MEDIUM; void low() speed = LOW; int getSpeed() return speed;class GarageDoor GarageDoor(string s)GarageDoor On GarageDoor() void up()GarageDoor Up void down()GarageDoor downclass Stereo Stereo(string s)Stereo On Stereo()Stereo OnStereo Off void setCD()Stereo CD void setVolume
3、(int n)Stereo Volume non();off(); return LightOnCommand; LightOnCommand()class LightOffCommand: LightOffCommand(Light* l)LightOffCommand LightOffCommand()class CeilingFanOnCommand: CeilingFan* fan; CeilingFanOnCommand(CeilingFan* f) fan = f; fan-CeilingFanOnCommand CeilingFanOnCommand()class Ceiling
4、FanOffCommand: CeilingFanOffCommand(CeilingFan* f)CeilingFanOffCommand CeilingFanOffCommand()class CeilingFanHighCommand: int prevSpeed; CeilingFanHighCommand(CeilingFan* f) prevSpeed = fan-getSpeed();high(); if(prevSpeed = fan-HIGH) else if(prevSpeed = fan-MEDIUM)medium();LOW)low();CeilingFanHighCo
5、mmand CeilingFanHighCommand()class GarageDoorUpCommand: GarageDoor* door; GarageDoorUpCommand(GarageDoor* d) door = d; door-up();down();GarageDoorUpCommand GarageDoorUpCommand()class GarageDoorDownCommand: GarageDoorDownCommand(GarageDoor* d)GarageDoorDownCommand GarageDoorDownCommand()class StereoO
6、nWithCDCommand: Stereo* stereo; StereoOnWithCDCommand(Stereo* s) stereo = s; stereo-setCD();setVolume(11);StereoOnWithCDCommand StereoOnWithCDCommand()class StereoOffCommand: StereoOffCommand(Stereo* s)StereoOffCommand StereoOffCommand()class RemoteControl Command* onCommands7; Command* offCommands7
7、; Command* undoCommand; Command* noCommand; RemoteControl() noCommand = new NoCommand(); for(int i=0;iexecute(); undoCommand = onCommandsslot; void offButtonWasPushed(int slot) if(offCommandsslot! offCommandsslot- undoCommand = offCommandsslot; void undoButtonWasPushed() undoCommand-undo(); void toS
8、tring()n-Remote Control-nthis-length();slot onCommandsi-getClass()nint main() RemoteControl* remoteControl = new RemoteControl(); / 所有装置创建在合适的位置 Light* livingRoomLight = new Light(Living Room); Light* kitchenLight = new Light(Kitchen CeilingFan* ceilingFan= new CeilingFan( GarageDoor* garageDoor = n
9、ew GarageDoor( Stereo* stereo = new Stereo( / 创建所有电灯命令对象 LightOnCommand* livingRoomLightOn = new LightOnCommand(livingRoomLight); LightOffCommand* livingRoomLightOff = new LightOffCommand(livingRoomLight); LightOnCommand* kitchenLightOn = new LightOnCommand(kitchenLight); LightOffCommand* kitchenLig
10、htOff = new LightOffCommand(kitchenLight); / 创建掉扇开与关命令 CeilingFanOnCommand* ceilingFanOn = new CeilingFanOnCommand(ceilingFan); CeilingFanOffCommand* ceilingFanOff = new CeilingFanOffCommand(ceilingFan); / 创建车库门上与下的命令 GarageDoorUpCommand* garageDoorUp = new GarageDoorUpCommand(garageDoor); GarageDoo
11、rDownCommand* garageDoorDown = new GarageDoorDownCommand(garageDoor); / 创建音响开与关命令 StereoOnWithCDCommand* stereoOnWithCD = new StereoOnWithCDCommand(stereo); StereoOffCommand* stereoOff = new StereoOffCommand(stereo); / 所有命令加载到遥控器插槽中 remoteControl-setCommand(0, livingRoomLightOn,livingRoomLightOff);s
12、etCommand(1, kitchenLightOn,kitchenLightOff);setCommand(2, ceilingFanOn,ceilingFanOff);setCommand(3, stereoOnWithCD,stereoOff); / 用toString()方法打印遥控器每个插槽指定的命令toString(); / 按下每个插槽开与关命令onButtonWasPushed(0);offButtonWasPushed(0);onButtonWasPushed(1);offButtonWasPushed(1);onButtonWasPushed(2);offButtonWasPushed(2);onButtonWasPushed(3);offButtonWasPushed(3);undoButtonWasPushed(); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1