From a27ec0af9797e97070ee35c5210aba384321684d Mon Sep 17 00:00:00 2001 From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de> Date: Sat, 10 Oct 2020 18:33:04 +0200 Subject: [PATCH] Add hierarchical state --- src/soon/PlayZustand.java | 2 +- src/soon/PowerOff.java | 13 +++++++++++++ src/soon/PowerOn.java | 13 +++++++++++++ src/soon/Soon.java | 36 +++++++++++++++++++++++------------- src/soon/SoonTestDrive.java | 4 +++- src/soon/StopZustand.java | 2 +- src/soon/Zustand.java | 6 ++++-- 7 files changed, 58 insertions(+), 18 deletions(-) create mode 100644 src/soon/PowerOff.java create mode 100644 src/soon/PowerOn.java diff --git a/src/soon/PlayZustand.java b/src/soon/PlayZustand.java index 2a74fd6..fc8bf73 100644 --- a/src/soon/PlayZustand.java +++ b/src/soon/PlayZustand.java @@ -1,6 +1,6 @@ package soon; -public class PlayZustand extends Zustand { +public class PlayZustand extends PowerOn { public PlayZustand(Soon s) { super(s); diff --git a/src/soon/PowerOff.java b/src/soon/PowerOff.java new file mode 100644 index 0000000..0bca943 --- /dev/null +++ b/src/soon/PowerOff.java @@ -0,0 +1,13 @@ +package soon; + +public class PowerOff extends Zustand { + + public PowerOff(Soon s) { + super(s); + } + + public void powerButton() { + s.setZustand(s.getStopZustand()); + System.out.println("Anschalten"); + } +} diff --git a/src/soon/PowerOn.java b/src/soon/PowerOn.java new file mode 100644 index 0000000..545bd85 --- /dev/null +++ b/src/soon/PowerOn.java @@ -0,0 +1,13 @@ +package soon; + +public abstract class PowerOn extends Zustand { + + public PowerOn(Soon s) { + super(s); + } + + public void powerButton() { + s.setZustand(s.getPowerOffZustand()); + System.out.println("Ausschalten"); + } +} diff --git a/src/soon/Soon.java b/src/soon/Soon.java index 5e1a693..201c7b6 100644 --- a/src/soon/Soon.java +++ b/src/soon/Soon.java @@ -3,13 +3,23 @@ package soon; public class Soon { Zustand stopZustand; Zustand playZustand; + Zustand powerOffZustand; Zustand zustand; public Soon () { stopZustand = new StopZustand(this); playZustand = new PlayZustand(this); - zustand = stopZustand; + powerOffZustand = new PowerOff(this); + zustand = powerOffZustand; + } + + public Zustand getPowerOffZustand() { + return powerOffZustand; + } + + public void powerButton() { + zustand.powerButton(); } public Zustand getStopZustand() { @@ -20,6 +30,10 @@ public class Soon { return playZustand; } + public Zustand getZustand() { + return zustand; + } + public void setZustand(Zustand zustand) { this.zustand = zustand; } @@ -32,18 +46,6 @@ public class Soon { zustand.stopButton(); } - public void startPlay() { - System.out.println("Musik an"); - } - - public void stopPlay() { - System.out.println("Musik aus"); - } - - public Zustand getZustand() { - return zustand; - } - public void volumeUpButton() { zustand.volumeUpButton(); } @@ -51,7 +53,15 @@ public class Soon { public void volumeDownButton() { zustand.volumeDownButton(); } + + public void startPlay() { + System.out.println("Musik an"); + } + public void stopPlay() { + System.out.println("Musik aus"); + } + public void volumeUp() { System.out.println("Lauter"); } diff --git a/src/soon/SoonTestDrive.java b/src/soon/SoonTestDrive.java index 23c3050..7e3fc47 100644 --- a/src/soon/SoonTestDrive.java +++ b/src/soon/SoonTestDrive.java @@ -7,10 +7,12 @@ public class SoonTestDrive { Soon player = new Soon(); System.out.println(player); + player.powerButton(); player.playButton(); player.volumeUpButton(); - player.stopButton(); player.volumeDownButton(); + player.stopButton(); + player.powerButton(); } } diff --git a/src/soon/StopZustand.java b/src/soon/StopZustand.java index 9a9bc12..354c263 100644 --- a/src/soon/StopZustand.java +++ b/src/soon/StopZustand.java @@ -1,6 +1,6 @@ package soon; -public class StopZustand extends Zustand { +public class StopZustand extends PowerOn { public StopZustand(Soon s) { super(s); diff --git a/src/soon/Zustand.java b/src/soon/Zustand.java index 43a6b19..f1ab591 100644 --- a/src/soon/Zustand.java +++ b/src/soon/Zustand.java @@ -3,13 +3,15 @@ package soon; public abstract class Zustand { protected Soon s; - public Zustand(Soon s) { - this.s = s; + public Zustand(Soon k) { + this.s = k; } + public void playButton() {}; public void stopButton() {}; public void volumeUpButton() {}; public void volumeDownButton() {}; public void entry() {}; public void exit() {}; + public void powerButton() {}; } -- GitLab