Skip to content
Snippets Groups Projects
Commit b8b121c1 authored by Peter Hertkorn's avatar Peter Hertkorn
Browse files

Add entry and exit for hierarchical state

parent 17cc2783
No related merge requests found
package soon; package soon;
public class PlayZustand extends PowerOn { public class PlayZustand extends PowerOnZustand {
public PlayZustand(Soon s) { public PlayZustand(Soon s, PowerOn p) {
super(s); super(s, p);
} }
public void stopButton() { public void stopButton() {
exit(); exit();
s.setZustand(s.getStopZustand()); p.setZustand(p.getStopZustand());
s.getZustand().entry(); p.getZustand().entry();
} }
public void volumeUpButton() { public void volumeUpButton() {
......
package soon; package soon;
public class PowerOff extends Zustand { public class PowerOff extends Zustand {
public PowerOff(Soon s) { public PowerOff(Soon s) {
super(s); super(s);
} }
public void powerButton() { public void powerButton() {
exit(); exit();
s.setZustand(s.getPowerOnHistory()); s.setZustand(s.getPowerOnZustand());
System.out.println("Anschalten"); System.out.println("Anschalten");
s.getZustand().entry(); } s.getZustand().entry();
}
} }
package soon; package soon;
public abstract class PowerOn extends Zustand { public class PowerOn extends Zustand {
PowerOnZustand playZustand;
PowerOnZustand stopZustand;
PowerOnZustand zustand;
public PowerOn(Soon s) { public PowerOn(Soon s) {
super(s); super(s);
stopZustand = new StopZustand(s, this);
playZustand = new PlayZustand(s, this);
zustand = stopZustand;
}
public PowerOnZustand getStopZustand() {
return stopZustand;
}
public PowerOnZustand getPlayZustand() {
return playZustand;
}
public PowerOnZustand getZustand() {
return zustand;
}
public void setZustand(PowerOnZustand zustand) {
this.zustand = zustand;
}
public void playButton() {
zustand.playButton();
} }
public void stopButton() {
zustand.stopButton();
}
public void volumeUpButton() {
zustand.volumeUpButton();
}
public void volumeDownButton() {
zustand.volumeDownButton();
}
public void powerButton() { public void powerButton() {
exit(); exit();
s.setPowerOnHistory(s.getZustand());
s.setZustand(s.getPowerOffZustand()); s.setZustand(s.getPowerOffZustand());
System.out.println("Ausschalten"); System.out.println("Ausschalten");
s.getZustand().entry();
}
public void entry() {
s.powerLED_On();
zustand.entry();
}
public void exit() {
s.powerLED_Off();
zustand.exit();
} }
} }
package soon;
public abstract class PowerOnZustand {
Soon s;
PowerOn p;
public PowerOnZustand(Soon s, PowerOn p) {
this.s = s;
this.p = p;
}
public void playButton() {};
public void stopButton() {};
public void volumeUpButton() {};
public void volumeDownButton() {};
public void entry() {};
public void exit() {};
}
package soon; package soon;
public class Soon { public class Soon {
Zustand stopZustand; Zustand powerOnZustand;
Zustand playZustand;
Zustand powerOffZustand; Zustand powerOffZustand;
Zustand powerOnHistory;
Zustand zustand; Zustand zustand;
public Soon () { public Soon () {
stopZustand = new StopZustand(this); powerOnZustand = new PowerOn(this);
playZustand = new PlayZustand(this);
powerOffZustand = new PowerOff(this); powerOffZustand = new PowerOff(this);
zustand = powerOffZustand; zustand = powerOffZustand;
powerOnHistory = stopZustand;
} }
public Zustand getPowerOffZustand() { public Zustand getPowerOffZustand() {
return powerOffZustand; return powerOffZustand;
} }
public void powerButton() { public Zustand getPowerOnZustand() {
zustand.powerButton(); return powerOnZustand;
}
public Zustand getStopZustand() {
return stopZustand;
}
public Zustand getPlayZustand() {
return playZustand;
} }
public Zustand getZustand() { public Zustand getZustand() {
...@@ -56,6 +44,10 @@ public class Soon { ...@@ -56,6 +44,10 @@ public class Soon {
zustand.volumeDownButton(); zustand.volumeDownButton();
} }
public void powerButton() {
zustand.powerButton();
}
public void startPlay() { public void startPlay() {
System.out.println("Musik an"); System.out.println("Musik an");
} }
...@@ -71,13 +63,13 @@ public class Soon { ...@@ -71,13 +63,13 @@ public class Soon {
public void volumeDown() { public void volumeDown() {
System.out.println("Leiser"); System.out.println("Leiser");
} }
public Zustand getPowerOnHistory() { public void powerLED_On() {
return powerOnHistory; System.out.println("LED on");
} }
public void setPowerOnHistory(Zustand z) { public void powerLED_Off() {
powerOnHistory = z; System.out.println("LED off");
} }
public String toString() { public String toString() {
......
...@@ -10,8 +10,6 @@ public class SoonTestDrive { ...@@ -10,8 +10,6 @@ public class SoonTestDrive {
player.powerButton(); player.powerButton();
player.playButton(); player.playButton();
player.volumeUpButton(); player.volumeUpButton();
player.powerButton();
player.powerButton();
player.volumeDownButton(); player.volumeDownButton();
player.stopButton(); player.stopButton();
player.powerButton(); player.powerButton();
......
package soon; package soon;
public class StopZustand extends PowerOn { public class StopZustand extends PowerOnZustand {
public StopZustand(Soon s) { public StopZustand(Soon s, PowerOn p) {
super(s); super(s, p);
} }
public void playButton() { public void playButton() {
exit(); exit();
s.setZustand(s.getPlayZustand()); p.setZustand(p.getPlayZustand());
s.getZustand().entry(); p.getZustand().entry();
} }
} }
...@@ -3,8 +3,8 @@ package soon; ...@@ -3,8 +3,8 @@ package soon;
public abstract class Zustand { public abstract class Zustand {
protected Soon s; protected Soon s;
public Zustand(Soon k) { public Zustand(Soon s) {
this.s = k; this.s = s;
} }
public void playButton() {}; public void playButton() {};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment