From 2e862592013b23bc5f89f608cdc5f32543c306e3 Mon Sep 17 00:00:00 2001 From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de> Date: Fri, 9 Oct 2020 22:01:05 +0200 Subject: [PATCH] Add predator and factories --- src/aliensimulator/AlienSimulator.java | 21 ++++++++++++--- src/aliensimulator/aliens/AlienFactory.java | 18 +++++++++++++ src/aliensimulator/predators/HishQuTen.java | 17 ++++++++++++ src/aliensimulator/predators/Predator.java | 26 +++++++++++++++++++ .../predators/PredatorFactory.java | 13 ++++++++++ src/aliensimulator/predators/Yautja.java | 17 ++++++++++++ 6 files changed, 108 insertions(+), 4 deletions(-) create mode 100644 src/aliensimulator/aliens/AlienFactory.java create mode 100644 src/aliensimulator/predators/HishQuTen.java create mode 100644 src/aliensimulator/predators/Predator.java create mode 100644 src/aliensimulator/predators/PredatorFactory.java create mode 100644 src/aliensimulator/predators/Yautja.java diff --git a/src/aliensimulator/AlienSimulator.java b/src/aliensimulator/AlienSimulator.java index 49b5518..b355177 100644 --- a/src/aliensimulator/AlienSimulator.java +++ b/src/aliensimulator/AlienSimulator.java @@ -3,13 +3,18 @@ package aliensimulator; import aliens_3rdparty.AlienFromNY; import aliens_3rdparty.NeutralBesuchen; import aliensimulator.aliens.*; +import aliensimulator.predators.Predator; +import aliensimulator.predators.PredatorFactory; +import aliensimulator.predators.Yautja; import aliensimulator.verhalten.ErdeFreundlichBesuchen; import aliensimulator.verhalten.ErdeNeutralAdapter; public class AlienSimulator { public static void main(String[] args) { - Alien alienMars = new AlienMars(); + AlienFactory alienFactory = new AlienFactory(); + + Alien alienMars = alienFactory.createAlien("mars"); alienMars.darstellen(); alienMars.fliegen(); @@ -20,17 +25,17 @@ public class AlienSimulator { alienMars.setErdeBesuchverhalten(new ErdeFreundlichBesuchen()); alienMars.erdeBesuchen(); - Alien alienMond = new AlienMond(); + Alien alienMond = alienFactory.createAlien("mond"); alienMond.darstellen(); alienMond.fliegen(); alienMond.erdeBesuchen(); - Alien alienVenus = new AlienVenus(); + Alien alienVenus = alienFactory.createAlien("venus"); alienVenus.darstellen(); alienVenus.fliegen(); alienVenus.erdeBesuchen(); - Alien alienFromNY = new AlienAdapter(new AlienFromNY()); + Alien alienFromNY = alienFactory.createAlien("ny"); alienFromNY.darstellen(); alienFromNY.fliegen(); System.out.println("Verhalten vom Alien von NY VOR der Änderung seines Verhaltens:"); @@ -38,5 +43,13 @@ public class AlienSimulator { alienFromNY.setErdeBesuchverhalten(new ErdeNeutralAdapter(new NeutralBesuchen())); System.out.println("Verhalten vom Alien von NY NACH der Änderung seines Verhaltens:"); alienFromNY.erdeBesuchen(); + + PredatorFactory predatorFactory = new PredatorFactory(); + + Predator yautja = predatorFactory.createPredator("yautja"); + yautja.darstellen(); + yautja.fliegen(); + yautja.erdeBesuchen(); + } } diff --git a/src/aliensimulator/aliens/AlienFactory.java b/src/aliensimulator/aliens/AlienFactory.java new file mode 100644 index 0000000..3dac451 --- /dev/null +++ b/src/aliensimulator/aliens/AlienFactory.java @@ -0,0 +1,18 @@ +package aliensimulator.aliens; + +import aliens_3rdparty.AlienFromNY; + +public class AlienFactory { + + public Alien createAlien(String type) { + if (type.equals("mars")) { + return new AlienMars(); + } else if (type.equals("mond")) { + return new AlienMond(); + } else if (type.equals("venus")) { + return new AlienVenus(); + } else if (type.equals("ny")) { + return new AlienAdapter(new AlienFromNY()); + } else return null; +} +} diff --git a/src/aliensimulator/predators/HishQuTen.java b/src/aliensimulator/predators/HishQuTen.java new file mode 100644 index 0000000..c65210b --- /dev/null +++ b/src/aliensimulator/predators/HishQuTen.java @@ -0,0 +1,17 @@ +package aliensimulator.predators; + +import aliens_3rdparty.NeutralBesuchen; +import aliensimulator.verhalten.ErdeNeutralAdapter; + +public class HishQuTen extends Predator { + + public HishQuTen() { + this.setErdeBesuchverhalten(new ErdeNeutralAdapter(new NeutralBesuchen())); + } + + @Override + public void darstellen() { + System.out.println("Ich bin ein Hish-Qu-Ten."); + } + +} diff --git a/src/aliensimulator/predators/Predator.java b/src/aliensimulator/predators/Predator.java new file mode 100644 index 0000000..56bc7ed --- /dev/null +++ b/src/aliensimulator/predators/Predator.java @@ -0,0 +1,26 @@ +package aliensimulator.predators; + +import aliensimulator.verhalten.ErdeBesuchverhalten; + +public abstract class Predator { + private ErdeBesuchverhalten erdeBesuchverhalten; + + public abstract void darstellen(); + + public void fliegen() { + System.out.println("Ich fliege durch den Weltraum."); + } + + public void erdeBesuchen(){ + erdeBesuchverhalten.erdeBesuchen(); + } + + public ErdeBesuchverhalten getErdeBesuchverhalten() { + return erdeBesuchverhalten; + } + + public void setErdeBesuchverhalten(ErdeBesuchverhalten erdeBesuchverhalten) { + this.erdeBesuchverhalten = erdeBesuchverhalten; + } + +} diff --git a/src/aliensimulator/predators/PredatorFactory.java b/src/aliensimulator/predators/PredatorFactory.java new file mode 100644 index 0000000..14ad9e3 --- /dev/null +++ b/src/aliensimulator/predators/PredatorFactory.java @@ -0,0 +1,13 @@ +package aliensimulator.predators; + + +public class PredatorFactory { + + public Predator createPredator(String type) { + if (type.equals("yautja")) { + return new Yautja(); + } else if (type.equals("hishquten")) { + return new HishQuTen(); + } else return null; + } +} diff --git a/src/aliensimulator/predators/Yautja.java b/src/aliensimulator/predators/Yautja.java new file mode 100644 index 0000000..b7aee75 --- /dev/null +++ b/src/aliensimulator/predators/Yautja.java @@ -0,0 +1,17 @@ +package aliensimulator.predators; + +import aliens_3rdparty.ZerstoererischBesuchen; +import aliensimulator.verhalten.ErdeZerstoererischAdapter; + +public class Yautja extends Predator { + + public Yautja() { + this.setErdeBesuchverhalten(new ErdeZerstoererischAdapter()); + } + + @Override + public void darstellen() { + System.out.println("Ich bin ein Yautja."); + } + +} -- GitLab