From b8b121c1c396a9e80643b592df2eb96f83d71a9b Mon Sep 17 00:00:00 2001 From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de> Date: Sat, 10 Oct 2020 18:36:48 +0200 Subject: [PATCH] Add entry and exit for hierarchical state --- src/soon/PlayZustand.java | 10 +++---- src/soon/PowerOff.java | 7 +++-- src/soon/PowerOn.java | 53 ++++++++++++++++++++++++++++++++++-- src/soon/PowerOnZustand.java | 18 ++++++++++++ src/soon/Soon.java | 34 +++++++++-------------- src/soon/SoonTestDrive.java | 2 -- src/soon/StopZustand.java | 10 +++---- src/soon/Zustand.java | 4 +-- 8 files changed, 98 insertions(+), 40 deletions(-) create mode 100644 src/soon/PowerOnZustand.java diff --git a/src/soon/PlayZustand.java b/src/soon/PlayZustand.java index fc8bf73..beddd6c 100644 --- a/src/soon/PlayZustand.java +++ b/src/soon/PlayZustand.java @@ -1,15 +1,15 @@ package soon; -public class PlayZustand extends PowerOn { +public class PlayZustand extends PowerOnZustand { - public PlayZustand(Soon s) { - super(s); + public PlayZustand(Soon s, PowerOn p) { + super(s, p); } public void stopButton() { exit(); - s.setZustand(s.getStopZustand()); - s.getZustand().entry(); + p.setZustand(p.getStopZustand()); + p.getZustand().entry(); } public void volumeUpButton() { diff --git a/src/soon/PowerOff.java b/src/soon/PowerOff.java index 2643e77..d4e26c4 100644 --- a/src/soon/PowerOff.java +++ b/src/soon/PowerOff.java @@ -1,14 +1,15 @@ package soon; public class PowerOff extends Zustand { - + public PowerOff(Soon s) { super(s); } public void powerButton() { exit(); - s.setZustand(s.getPowerOnHistory()); + s.setZustand(s.getPowerOnZustand()); System.out.println("Anschalten"); - s.getZustand().entry(); } + s.getZustand().entry(); + } } diff --git a/src/soon/PowerOn.java b/src/soon/PowerOn.java index de675f1..fc3ab60 100644 --- a/src/soon/PowerOn.java +++ b/src/soon/PowerOn.java @@ -1,15 +1,64 @@ package soon; -public abstract class PowerOn extends Zustand { +public class PowerOn extends Zustand { + PowerOnZustand playZustand; + PowerOnZustand stopZustand; + PowerOnZustand zustand; + public PowerOn(Soon 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() { exit(); - s.setPowerOnHistory(s.getZustand()); s.setZustand(s.getPowerOffZustand()); System.out.println("Ausschalten"); + s.getZustand().entry(); + } + + public void entry() { + s.powerLED_On(); + zustand.entry(); + } + + public void exit() { + s.powerLED_Off(); + zustand.exit(); } } diff --git a/src/soon/PowerOnZustand.java b/src/soon/PowerOnZustand.java new file mode 100644 index 0000000..36589af --- /dev/null +++ b/src/soon/PowerOnZustand.java @@ -0,0 +1,18 @@ +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() {}; +} diff --git a/src/soon/Soon.java b/src/soon/Soon.java index bbfaada..d03e0df 100644 --- a/src/soon/Soon.java +++ b/src/soon/Soon.java @@ -1,35 +1,23 @@ package soon; public class Soon { - Zustand stopZustand; - Zustand playZustand; + Zustand powerOnZustand; Zustand powerOffZustand; - Zustand powerOnHistory; Zustand zustand; public Soon () { - stopZustand = new StopZustand(this); - playZustand = new PlayZustand(this); + powerOnZustand = new PowerOn(this); powerOffZustand = new PowerOff(this); zustand = powerOffZustand; - powerOnHistory = stopZustand; } public Zustand getPowerOffZustand() { return powerOffZustand; } - public void powerButton() { - zustand.powerButton(); - } - - public Zustand getStopZustand() { - return stopZustand; - } - - public Zustand getPlayZustand() { - return playZustand; + public Zustand getPowerOnZustand() { + return powerOnZustand; } public Zustand getZustand() { @@ -56,6 +44,10 @@ public class Soon { zustand.volumeDownButton(); } + public void powerButton() { + zustand.powerButton(); + } + public void startPlay() { System.out.println("Musik an"); } @@ -71,13 +63,13 @@ public class Soon { public void volumeDown() { System.out.println("Leiser"); } - - public Zustand getPowerOnHistory() { - return powerOnHistory; + + public void powerLED_On() { + System.out.println("LED on"); } - public void setPowerOnHistory(Zustand z) { - powerOnHistory = z; + public void powerLED_Off() { + System.out.println("LED off"); } public String toString() { diff --git a/src/soon/SoonTestDrive.java b/src/soon/SoonTestDrive.java index 991af0b..7e3fc47 100644 --- a/src/soon/SoonTestDrive.java +++ b/src/soon/SoonTestDrive.java @@ -10,8 +10,6 @@ public class SoonTestDrive { player.powerButton(); player.playButton(); player.volumeUpButton(); - player.powerButton(); - player.powerButton(); player.volumeDownButton(); player.stopButton(); player.powerButton(); diff --git a/src/soon/StopZustand.java b/src/soon/StopZustand.java index 354c263..67cf428 100644 --- a/src/soon/StopZustand.java +++ b/src/soon/StopZustand.java @@ -1,14 +1,14 @@ package soon; -public class StopZustand extends PowerOn { +public class StopZustand extends PowerOnZustand { - public StopZustand(Soon s) { - super(s); + public StopZustand(Soon s, PowerOn p) { + super(s, p); } public void playButton() { exit(); - s.setZustand(s.getPlayZustand()); - s.getZustand().entry(); + p.setZustand(p.getPlayZustand()); + p.getZustand().entry(); } } diff --git a/src/soon/Zustand.java b/src/soon/Zustand.java index f1ab591..8a7d896 100644 --- a/src/soon/Zustand.java +++ b/src/soon/Zustand.java @@ -3,8 +3,8 @@ package soon; public abstract class Zustand { protected Soon s; - public Zustand(Soon k) { - this.s = k; + public Zustand(Soon s) { + this.s = s; } public void playButton() {}; -- GitLab