diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3b66410 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "git.ignoreLimitWarning": true +} \ No newline at end of file diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..520e0b1 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1,4 @@ +target/ +.settings/ +.classpath +.project diff --git a/bin/.travis.yml b/bin/.travis.yml new file mode 100644 index 0000000..dff5f3a --- /dev/null +++ b/bin/.travis.yml @@ -0,0 +1 @@ +language: java diff --git a/bin/pom.xml b/bin/pom.xml new file mode 100644 index 0000000..cf30781 --- /dev/null +++ b/bin/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + kz.edu.nu.cs + stateexercise-361 + 0.0.1-SNAPSHOT + jar + + stateexercise-361 + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 4.12 + test + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + diff --git a/bin/src/main/java/kz/edu/nu/cs/exercise/State.class b/bin/src/main/java/kz/edu/nu/cs/exercise/State.class new file mode 100644 index 0000000..329ea65 Binary files /dev/null and b/bin/src/main/java/kz/edu/nu/cs/exercise/State.class differ diff --git a/bin/src/main/java/kz/edu/nu/cs/exercise/StateContext.class b/bin/src/main/java/kz/edu/nu/cs/exercise/StateContext.class new file mode 100644 index 0000000..38dfc19 Binary files /dev/null and b/bin/src/main/java/kz/edu/nu/cs/exercise/StateContext.class differ diff --git a/bin/src/test/java/kz/edu/nu/cs/exercise/TestStatePattern.class b/bin/src/test/java/kz/edu/nu/cs/exercise/TestStatePattern.class new file mode 100644 index 0000000..3ec242b Binary files /dev/null and b/bin/src/test/java/kz/edu/nu/cs/exercise/TestStatePattern.class differ 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..a7bcdd1 --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State1.java @@ -0,0 +1,26 @@ +package kz.edu.nu.cs.exercise; + +public class State1 extends State { + + public State1(StateContext stateContext) { + // TODO Auto-generated constructor stub + this.sc = stateContext; + } + + public void actionA() { + + this.sc.setCurrentState(sc.state2); + } + + public void actionB() { + + this.sc.setCurrentState(sc.state1); + + } + + public boolean inAcceptState() { + + return false; + } + +} 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..0770854 --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State2.java @@ -0,0 +1,26 @@ +package kz.edu.nu.cs.exercise; + +public class State2 extends State { + + public State2(StateContext stateContext) { + // TODO Auto-generated constructor stub + this.sc = stateContext; + } + + public void actionA() { + + this.sc.setCurrentState(sc.state3); + } + + public void actionB() { + + this.sc.setCurrentState(sc.state1); + + } + + public boolean inAcceptState() { + + return false; + } + +} 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..b0c9e2d --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State3.java @@ -0,0 +1,26 @@ +package kz.edu.nu.cs.exercise; + +public class State3 extends State { + + public State3(StateContext stateContext) { + // TODO Auto-generated constructor stub + this.sc = stateContext; + } + + public void actionA() { + + this.sc.setCurrentState(sc.state3); + } + + public void actionB() { + + this.sc.setCurrentState(sc.state2); + + } + + public boolean inAcceptState() { + + return true; + } + +} 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..c673745 100644 --- a/src/main/java/kz/edu/nu/cs/exercise/StateContext.java +++ b/src/main/java/kz/edu/nu/cs/exercise/StateContext.java @@ -1,38 +1,43 @@ package kz.edu.nu.cs.exercise; public class StateContext { - final State state1 = new State1(this); - final State state2 = new State2(this); - final State state3 = new State3(this); - - private State currentState; - - public StateContext() { - this.currentState = state1; - } - - public void actionA() { - // complete this method by - // delegation to the current state - } - - public void actionB() { - // complete this method - // delegate to the current state - } - - public boolean inAcceptState() { - // complete this method and return correct value - // delegate to the current state - return false; - } - - public State getCurrentState() { - return currentState; - } - - public void setCurrentState(State currentState) { - this.currentState = currentState; - } + final State state1 = new State1(this); + final State state2 = new State2(this); + final State state3 = new State3(this); + + private State currentState; + + public StateContext() { + this.currentState = state1; + } + + public void actionA() { + // complete this method by + // delegation to the current state + this.currentState.actionA(); + + } + + public void actionB() { + // complete this method + // delegate to the current state + this.currentState.actionB(); + + } + + public boolean inAcceptState() { + if(this.currentState == state3) {return true;} + // complete this method and return correct value + // delegate to the current state + return false; + } + + public State getCurrentState() { + return currentState; + } + + public void setCurrentState(State currentState) { + this.currentState = currentState; + } }