CS 350 Software Design Command Object - PowerPoint PPT Presentation

1 / 22
About This Presentation
Title:

CS 350 Software Design Command Object

Description:

CeilingFan ceilingFan = new CeilingFan('Living Room'); GarageDoor garageDoor = new GarageDoor(''); Stereo stereo = new Stereo ('Living Room' ... – PowerPoint PPT presentation

Number of Views:35
Avg rating:3.0/5.0
Slides: 23
Provided by: jsal9
Category:

less

Transcript and Presenter's Notes

Title: CS 350 Software Design Command Object


1
CS 350 Software DesignCommand Object
  • Remote Control Object

2
CS 350 Software DesignCommand Object
  • Simple Command Object Implementation
  • public interface Command
  • public void execute()
  • public class LightOnCommand implements Command
  • Light light
  • public LightOnCommand(Light light)
  • this.light light
  • public void execute ()
  • light.on()

3
CS 350 Software DesignCommand Object
  • public class SimpleRemoteControl
  • Command slot
  • public SimpleRemoteControl
  • public void setCommand(Command command)
  • slot command
  • public void buttonWasPressed()
  • slot.execute()

4
CS 350 Software DesignCommand Object
  • public class RemoteControlTest
  • public static void main(String args)
  • SimpleRemoteControl remote new
    SimpleRemoteControl()
  • Light light new Light()
  • LightOnCommand lightOn new
    LightOnCommand(light)
  • remote.setCommand(lightOn)
  • remote.buttonWasPressed()

5
CS 350 Software DesignCommand Object
  • SHOW COMMAND PATTERN

6
CS 350 Software DesignCommand Object
  • IMPLEMENTING THE REMOTE CONTROL
  • public class RemoteControl
  • Command on Commands
  • Command offCommands
  • public RemoteControl()
  • onCommands new Command7
  • offCommands new Command7
  • Command noCommand new NoCommand()
  • for (int i 0 i lt 7 i)
  • onCommandsi noCommand
  • offCommandsi noCommand
  • public void setCommand(int slot, Command
    onCommand, Command offCommand)
  • onCommandslot onCommand

7
CS 350 Software DesignCommand Object
  • IMPLEMENTING THE REMOTE CONTROL
  • public void onButtonWasPushed(int slot)
  • onCommands(slot.execute()
  • public void offButtonWasPushed(int slot)
  • offCommands(slot.execute()
  • public String toString()
  • StringBuffer stringBuff newStringBuffer()
  • strongBuff.append(\n------ Remote Control
    ------ \n)
  • for (int i 0 i lt onCommands.length i)
  • stringBuff.append(slot i
    onCommandsi.getClass().getName()
  • offcommandsi.getClass().getNam
    e() \n
  • return stringBuff.toString()

8
CS 350 Software DesignCommand Object
  • IMPLEMENTING THE COMMANDS
  • public class LightOffCommand implements Command
  • Light light
  • public LightOffCommand(Light light)
  • this.light light
  • public void execute()
  • light.off()

9
CS 350 Software DesignCommand Object
  • IMPLEMENTING THE COMMANDS
  • public class StereoOnWithCDCommand implements
    Command
  • Stereo stereo
  • public StereoOnWithCDCommand(Stereo stereo)
  • this.stereo stereo
  • public void execute()
  • stereo.on()
  • stereo.setCD()
  • stereo.setVolume(11)

10
CS 350 Software DesignCommand Object
  • REMOTE CONTROL
  • public class RemoteLoader
  • public static void main(String args)
  • RemoteControl remoteControl new
    RemoteControl()
  • Light livingRoom newLight(Living Room)
  • Light kitchenLight new Light(Kitchen)
  • CeilingFan ceilingFan new
    CeilingFan(Living Room)
  • GarageDoor garageDoor new GarageDoor()
  • Stereo stereo new Stereo (Living Room)
  • LightOnCommand livingRoomLightOn new
    LightOnCommand(livingRoomLight)
  • LightOffCoammd livingRoomLightOff new
    LightOffCommand(livingRoomLight)
  • LightOnCommand kitchenLightOn new
    LightOnCommand(kitchenRoomLight)
  • LightOffCommand kitchenLightOn new
    LightOffCommand(kitchenRoomLight)

11
CS 350 Software DesignCommand Object
  • REMOTE CONTROL
  • CeilingFanOnCommand ceilingFanOn new
    ceilingFanOnCommand(ceilingFan)
  • CeilingFanOffCommand ceilingFanOff new
    ceilingFanOffCommand(ceilingFan)
  • GarageDoorUpCommand garageDoorUp new
    garageDoorUpCommand(garageDoor)
  • GarageDoorDownCommand garageDoorDown new
    garageDoorDownCommand(garageDoor)
  • StereoOnWithCDCommand stereoOnWithCD new
    StereoOnWithCDCommand(stereo)
  • StereoOffCommand stereoOff new
    StereoOffCommand(stereo)
  • remoteControl.setCommand(0,
    livingRoomLightOn, livingRoomLightOff)
  • remoteControl.setCommand(1, kitchenLightOn,
    kitchenLightOff)
  • remoteControl.setCommand(2, ceilingFanOn,
    ceilingFanOff)
  • remoteControl.setCommand(3, stereoOnWithCD,
    stereoOff)
  • System.out.println(remoteControl)

12
CS 350 Software DesignCommand Object
  • REMOTE CONTROL
  • remoteControl.onButtonWasPushed(0)
  • remoteControl.offButtonWasPushed(0)
  • remoteControl.onButtonWasPushed(1)
  • remoteControl.offButtonWasPushed(1)
  • remoteControl.onButtonWasPushed(2)
  • remoteControl.offButtonWasPushed(2)
  • remoteControl.onButtonWasPushed(3)
  • remoteControl.offButtonWasPushed(3)

13
CS 350 Software DesignCommand Object
  • REMOTE CONTROL SHORT CUTS
  • We do not want to code as follows
  • public void onButtonWasPushed(int slot)
  • if (onCommandsslot ! null)
  • onCommandsslot.execute()
  • Instead we code
  • public class NoCommand implements Command (
  • public void execute()
  • In the remote control constructor we code
  • Command noCommand new NoCommand()

14
CS 350 Software DesignCommand Object
  • ADDING UNDO
  • public interface Command
  • public void execute()
  • public void undo()
  • Easy for some objects
  • public class LightOnCommand implements Command
  • Light light
  • public LightOnCOmmand(Light light)
  • this.light light
  • public void execute()
  • light.on()

15
CS 350 Software DesignCommand Object
  • ADDING UNDO
  • public class LightOffCommand implements Command
  • Light light
  • public LightOffCommand(Light light)
  • this.light light
  • public void execute()
  • light.off()
  • public void undo()
  • light.on()

16
CS 350 Software DesignCommand Object
  • IMPLEMENTING THE REMOTE CONTROL WITH UNDO
  • public class RemoteControl
  • Command on Commands
  • Command offCommands
  • Command undoCommands
  • public RemoteControl()
  • onCommands new Command7
  • offCommands new Command7
  • Command noCommand new NoCommand()
  • for (int i 0 i lt 7 i)
  • onCommandsi noCommand
  • offCommandsi noCommand
  • undoCommand noCommand

17
CS 350 Software DesignCommand Object
  • public void onButtonWasPushed(int slot)
  • onCommands(slot.execute()
  • undoCommand onCommandsslot
  • public void offButtonWasPushed(int slot)
  • offCommands(slot.execute()
  • undoCommand offCommandsslot
  • public void undoButtonwWasPushed()
  • undoCommand.undo()
  • public String toString()
  • //same

18
CS 350 Software DesignCommand Object
  • public class CeilingFan
  • public static final int HIGH 3
  • public static final int MEDIUM 2
  • public static final int LOW 1
  • public static final int OFF 0
  • public CeilingFan(String location)
  • this.location location
  • speed OFF
  • public void high()
  • speed HIGH
  • //code to set fan to high
  • public void medium()
  • speed MEDIUM
  • //code to set fan to medium

19
CS 350 Software DesignCommand Object
  • public void low()
  • speed LOW
  • //code to set fan to low
  • public void off()
  • speed OFF
  • //code to turn fan off
  • public int getSpeed()
  • return speed

20
CS 350 Software DesignCommand Object
  • Adding Undo to the ceiling fan commands
  • public class CeilingFanHighCommand implements
    Command
  • CeilingFan ceilingFan
  • int prevSpeed
  • public CeilingFanHighCommand(CeilingFan
    ceilingFan)
  • this.ceilingFan ceilingFan
  • public void execute()
  • prevSpeed ceilingFan.getSpeed()
  • ceilingFan.high()
  • public void undo()
  • if (prevSpeed CeilingFan.HIGH)
  • celingFan.high()
  • else if (prevSpeed CeilingFan.MEDIUM)

21
CS 350 Software DesignCommand Object
  • MACRO COMMAND
  • public class MacroCommand implements Command
  • Command commands
  • public MacroCommand(Command commands)
  • this.commands commands
  • public void execute()
  • for (int i 0 i lt commands.length i)
  • commandsi.execute()

22
CS 350 Software DesignCommand Object
  • USING A MACRO COMMAND
  • Light light new Light(Living Room)
  • TV tv new TV(Living Room)
  • Stereo stereo new Stereo(Living Room)
  • Hottub hottub new Hottub()
  • LightOnCommand lightOn new LightOnCommand(light)
  • StereoOnCommand stereoOn new StereoOnCommand(ste
    reo)
  • TVOnCommand tvOn newTVOnCommand(tv)
  • HotTubOnCommand hottubOn newHottubOnCommand(hott
    ub)
  • LightOffCommand lightOff new LightOffCommand(lig
    ht)
  • StereoOffCommand stereoOff new
    StereoOffCommand(stereo)
  • TVOffCommand tvOff newTVOffCommand(tv)
  • HotTubOffCommand hottubOff newHottubOffCommand(h
    ottub)
  • Command partyOn (lightOn, stereoOn, tvOn,
    hottubOn)
  • Command partyOff (lightOff, stereoOff, tvOff,
    hottubOff)
Write a Comment
User Comments (0)
About PowerShow.com