diff --git a/BarkBehavior.java b/BarkBehavior.java new file mode 100644 index 0000000..82f3fe3 --- /dev/null +++ b/BarkBehavior.java @@ -0,0 +1,8 @@ + +public class BarkBehavior implements TalkBehavior{ + public String talk() + { + return "Woof Woof Woof"; + } + +} diff --git a/CrawlBehavior.java b/CrawlBehavior.java new file mode 100644 index 0000000..78efd64 --- /dev/null +++ b/CrawlBehavior.java @@ -0,0 +1,8 @@ + +public class CrawlBehavior implements MoveBehavior{ + + public String move() + { + return "Crawling playfully"; + } +} diff --git a/DigitalWorldDriver.java b/DigitalWorldDriver.java new file mode 100644 index 0000000..7361eb6 --- /dev/null +++ b/DigitalWorldDriver.java @@ -0,0 +1,29 @@ + +public class DigitalWorldDriver { + public void runWorld() { + Robot[] robots = new Robot[4]; + robots[0] = new DogRobot("Tipsy"); + robots[1] = new HumanRobot("Sam"); + robots[2] = new iRobot("Will"); + robots[3] = new WallERobot("Wall-E"); + + for(Robot robot : robots) { + displayRobot(robot); + } + + } + + private void displayRobot(Robot robot) { + System.out.println("\n----------------"); + System.out.println(robot); + System.out.println(robot.move()); + System.out.println(robot.talk()); + System.out.println("----------------"); + } + + + public static void main(String[] args) { + DigitalWorldDriver world = new DigitalWorldDriver(); + world.runWorld(); + } +} diff --git a/DogRobot.java b/DogRobot.java new file mode 100644 index 0000000..6b2f489 --- /dev/null +++ b/DogRobot.java @@ -0,0 +1,13 @@ + +public class DogRobot extends Robot{ + public DogRobot(String name) + { + super(name); + moveBehavior = new CrawlBehavior(); + talkBehavior = new BarkBehavior(); + } + public String toString() + { + return name + " is a happy Dog Robot"; + } +} diff --git a/HumanRobot.java b/HumanRobot.java new file mode 100644 index 0000000..4ed2d70 --- /dev/null +++ b/HumanRobot.java @@ -0,0 +1,13 @@ + +public class HumanRobot extends Robot{ + public HumanRobot(String name) + { + super(name); + moveBehavior= new WalkBehavior(); + talkBehavior= new SpeakBehavior(); + } + public String toString() { + return name + " is a typical human robot"; + } + +} diff --git a/MoveBehavior.java b/MoveBehavior.java new file mode 100644 index 0000000..b395e55 --- /dev/null +++ b/MoveBehavior.java @@ -0,0 +1,4 @@ + +public interface MoveBehavior { + public String move(); +} diff --git a/Robot.java b/Robot.java new file mode 100644 index 0000000..3ea0f56 --- /dev/null +++ b/Robot.java @@ -0,0 +1,31 @@ + +public abstract class Robot { + protected String name; + MoveBehavior moveBehavior; + TalkBehavior talkBehavior; + + public Robot(String name) + { + this.name = name; + } + + public abstract String toString(); + + public String move() + { + return moveBehavior.move(); + } + public String talk() + { + return talkBehavior.talk(); + } + public void setMoveBehavior(MoveBehavior mb) + { + moveBehavior= mb; + } + public void setTalkBehavior(TalkBehavior tb) + { + talkBehavior = tb; + } + +} diff --git a/RunBehavior.java b/RunBehavior.java new file mode 100644 index 0000000..07ec0e1 --- /dev/null +++ b/RunBehavior.java @@ -0,0 +1,7 @@ + +public class RunBehavior implements MoveBehavior{ + public String move() + { + return "Running super agressivelly!!! AAAAHHHHH"; + } +} diff --git a/SimpleSpeakBehavior.java b/SimpleSpeakBehavior.java new file mode 100644 index 0000000..f8c8367 --- /dev/null +++ b/SimpleSpeakBehavior.java @@ -0,0 +1,12 @@ +import java.util.Random; + +public class SimpleSpeakBehavior implements TalkBehavior{ + String[] randSSB = {"Wall-E","EVA!","Pop","Eva?","Eee-va?"}; + + public String talk() + { + Random r = new Random(); + return randSSB[r.nextInt(randSSB.length)]; + } + +} diff --git a/SpeakBehavior.java b/SpeakBehavior.java new file mode 100644 index 0000000..52c0879 --- /dev/null +++ b/SpeakBehavior.java @@ -0,0 +1,12 @@ +import java.util.Random; + +public class SpeakBehavior implements TalkBehavior{ + + String[] randSB = {"Hello","How are you","Good Day"}; + + public String talk() + { + Random r = new Random(); + return randSB[r.nextInt(randSB.length)]; + } +} diff --git a/TalkBehavior.java b/TalkBehavior.java new file mode 100644 index 0000000..a4b85f9 --- /dev/null +++ b/TalkBehavior.java @@ -0,0 +1,4 @@ + +public interface TalkBehavior { + public String talk(); +} diff --git a/WalkBehavior.java b/WalkBehavior.java new file mode 100644 index 0000000..5d15199 --- /dev/null +++ b/WalkBehavior.java @@ -0,0 +1,8 @@ + +public class WalkBehavior implements MoveBehavior{ + public String move() + { + return "Walking Gleefully"; + } + +} diff --git a/WallERobot.java b/WallERobot.java new file mode 100644 index 0000000..70f2c80 --- /dev/null +++ b/WallERobot.java @@ -0,0 +1,13 @@ + +public class WallERobot extends Robot{ + public WallERobot(String name) + { + super(name); + moveBehavior = new WalkBehavior(); + talkBehavior = new SimpleSpeakBehavior(); + } + public String toString() + { + return name + " is an environmentally friendly Wall-E Robot"; + } +} diff --git a/iRobot.java b/iRobot.java new file mode 100644 index 0000000..9cf51f6 --- /dev/null +++ b/iRobot.java @@ -0,0 +1,14 @@ + +public class iRobot extends Robot{ + public iRobot(String name) + { + super(name); + moveBehavior = new RunBehavior(); + talkBehavior= new SpeakBehavior(); + } + public String toString() + { + return name + " is a scary iRobot!!!"; + } + +}