From b1191072fb76fde3d23622b34a450dd7625b02ed Mon Sep 17 00:00:00 2001 From: Adilet Date: Sat, 25 Aug 2018 00:29:48 +0600 Subject: [PATCH 1/2] Hello there --- .../java/kz/edu/nu/cs/exercise/State1.java | 22 ++++++++++++++++++ .../java/kz/edu/nu/cs/exercise/State2.java | 23 +++++++++++++++++++ .../java/kz/edu/nu/cs/exercise/State3.java | 21 +++++++++++++++++ .../kz/edu/nu/cs/exercise/StateContext.java | 12 ++++++++++ 4 files changed, 78 insertions(+) create mode 100644 src/main/java/kz/edu/nu/cs/exercise/State1.java create mode 100644 src/main/java/kz/edu/nu/cs/exercise/State2.java create mode 100644 src/main/java/kz/edu/nu/cs/exercise/State3.java 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..bd159a1 --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State1.java @@ -0,0 +1,22 @@ +package kz.edu.nu.cs.exercise; + +public class State1 extends State{ + protected StateContext sc; + protected boolean accept = false; + + public State1(StateContext stateContext) { + this.sc = stateContext; + } + public void actionA() { + this.sc.setCurrentState(this.sc.getState2()); + } + + public void actionB() { +// no change of the state + } + + public boolean isAccept() { + return this.accept; + } +} + 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..7a00fbf --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State2.java @@ -0,0 +1,23 @@ +package kz.edu.nu.cs.exercise; + +public class State2 extends State{ + protected StateContext sc; + protected boolean accept = false; + + public State2(StateContext stateContext) { + this.sc = stateContext; + } + public void actionA() { + this.sc.setCurrentState(this.sc.getState3()); + } + + public void actionB() { + this.sc.setCurrentState(this.sc.getState1()); + } + + public boolean isAccept() { + return this.accept; + } +} + + 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..f30df46 --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State3.java @@ -0,0 +1,21 @@ +package kz.edu.nu.cs.exercise; + +public class State3 extends State{ + protected StateContext sc; + protected boolean accept = true; + + public State3(StateContext stateContext) { + this.sc = stateContext; + } + public void actionA() { +// no change of the state + } + + public void actionB() { + this.sc.setCurrentState(this.sc.getState2()); + } + + public boolean isAccept() { + return this.accept; + } +} 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..8400164 100644 --- a/src/main/java/kz/edu/nu/cs/exercise/StateContext.java +++ b/src/main/java/kz/edu/nu/cs/exercise/StateContext.java @@ -14,11 +14,13 @@ public StateContext() { 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() { @@ -35,4 +37,14 @@ public void setCurrentState(State currentState) { this.currentState = currentState; } + public State getState1() { + return state1; + } + public State getState2() { + return state2; + } + public State getState3() { + return state3; + } + } From ca94daea9f77d3fba6b68078f49bd7944acef863 Mon Sep 17 00:00:00 2001 From: Adilet Date: Sat, 25 Aug 2018 01:15:58 +0600 Subject: [PATCH 2/2] final --- src/main/java/kz/edu/nu/cs/exercise/State3.java | 1 + .../java/kz/edu/nu/cs/exercise/StateContext.java | 2 +- src/main/java/kz/edu/nu/cs/exercise/Test.java | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/main/java/kz/edu/nu/cs/exercise/Test.java diff --git a/src/main/java/kz/edu/nu/cs/exercise/State3.java b/src/main/java/kz/edu/nu/cs/exercise/State3.java index f30df46..c6fda21 100644 --- a/src/main/java/kz/edu/nu/cs/exercise/State3.java +++ b/src/main/java/kz/edu/nu/cs/exercise/State3.java @@ -18,4 +18,5 @@ public void actionB() { public boolean isAccept() { return this.accept; } + } 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 8400164..767bc3d 100644 --- a/src/main/java/kz/edu/nu/cs/exercise/StateContext.java +++ b/src/main/java/kz/edu/nu/cs/exercise/StateContext.java @@ -26,7 +26,7 @@ public void actionB() { public boolean inAcceptState() { // complete this method and return correct value // delegate to the current state - return false; + return currentState.isAccept(); } public State getCurrentState() { diff --git a/src/main/java/kz/edu/nu/cs/exercise/Test.java b/src/main/java/kz/edu/nu/cs/exercise/Test.java new file mode 100644 index 0000000..efb266f --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/Test.java @@ -0,0 +1,16 @@ +package kz.edu.nu.cs.exercise; + +public class Test { + + public static void main ( String [] args ) { + StateContext sc = new StateContext (); + sc . actionA (); + sc . actionA (); +// sc . actionB (); + // Is machine in an accept state + // after receiving AAB + System.out.println(sc.inAcceptState()); +// sc . inAcceptState (); + } + +}