diff --git a/src/main/java/kz/edu/nu/cs/exercise/State.java b/src/main/java/kz/edu/nu/cs/exercise/State.java index aa425f1..47e884c 100644 --- a/src/main/java/kz/edu/nu/cs/exercise/State.java +++ b/src/main/java/kz/edu/nu/cs/exercise/State.java @@ -4,6 +4,10 @@ public abstract class State { protected StateContext sc; protected boolean accept = false; + public State(StateContext StateContext) { + this.sc = StateContext; + } + public void actionA() { } diff --git a/src/main/java/kz/edu/nu/cs/exercise/State1.java b/src/main/java/kz/edu/nu/cs/exercise/State1.java new file mode 100644 index 0000000..281fb0d --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State1.java @@ -0,0 +1,17 @@ +package kz.edu.nu.cs.exercise; + +public class State1 extends State { + public State1(StateContext StateContext) { + super(StateContext); + this.accept = false; + } + @Override + public void actionA() { + this.sc.setCurrentState(this.sc.state2); + + } + @Override + public void actionB() { + this.sc.setCurrentState(this.sc.state2); + } +} diff --git a/src/main/java/kz/edu/nu/cs/exercise/State2.java b/src/main/java/kz/edu/nu/cs/exercise/State2.java new file mode 100644 index 0000000..7ec3fe6 --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State2.java @@ -0,0 +1,17 @@ +package kz.edu.nu.cs.exercise; + +public class State2 extends State { + public State2(StateContext StateContext) { + super(StateContext); + this.accept = false; + } + @Override + public void actionA() { + this.sc.setCurrentState(this.sc.state3); + } + @Override + public void actionB() { + this.sc.setCurrentState(sc.state1); + } +} + diff --git a/src/main/java/kz/edu/nu/cs/exercise/State3.java b/src/main/java/kz/edu/nu/cs/exercise/State3.java new file mode 100644 index 0000000..18a4f4a --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State3.java @@ -0,0 +1,16 @@ +package kz.edu.nu.cs.exercise; + +public class State3 extends State { + public State3(StateContext StateContext) { + super(StateContext); + this.accept = true; + } + @Override + public void actionA() { + this.sc.setCurrentState(this.sc.state3); + } + @Override + public void actionB() { + this.sc.setCurrentState(this.sc.state2); + } +} diff --git a/src/main/java/kz/edu/nu/cs/exercise/StateContext.java b/src/main/java/kz/edu/nu/cs/exercise/StateContext.java index 3b154c4..bc42cef 100644 --- a/src/main/java/kz/edu/nu/cs/exercise/StateContext.java +++ b/src/main/java/kz/edu/nu/cs/exercise/StateContext.java @@ -14,17 +14,20 @@ public StateContext() { public void actionA() { // complete this method by // delegation to the current state + this.getCurrentState().actionA(); } public void actionB() { // complete this method // delegate to the current state + this.getCurrentState().actionB(); } public boolean inAcceptState() { // complete this method and return correct value // delegate to the current state - return false; + return this.getCurrentState().isAccept(); + } public State getCurrentState() {