From ff7d6842a7831303d61e4f4fb3985c3d5b27baae Mon Sep 17 00:00:00 2001
From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de>
Date: Thu, 22 Oct 2020 14:15:15 +0200
Subject: [PATCH] Fix

---
 src/aliensimulator/AlienSimulator.java        |  8 +++--
 .../ufos/PredatorUfoFactory.java              |  7 +++-
 src/aliensimulator/ufos/UfoFactory.java       |  7 ++++
 .../komponenten/AlienKomponentenFabrik.java   | 19 ++++++++++
 .../ufos/komponenten/AlienUfoFactory.java     | 35 +++++++++++++++++++
 .../ufos/komponenten/Antrieb.java             |  5 +++
 .../ufos/komponenten/Hyperantrieb.java        |  8 +++++
 .../ufos/komponenten/KomponentenFabrik.java   |  9 +++++
 .../ufos/komponenten/Laserkanone.java         |  8 +++++
 .../ufos/komponenten/Metaphasenschild.java    |  8 +++++
 .../ufos/komponenten/Phaserkanone.java        |  8 +++++
 .../PredatorKomponentenFabrik.java            | 18 ++++++++++
 .../ufos/komponenten/PredatorUfoFactory.java  | 35 +++++++++++++++++++
 .../ufos/komponenten/Schild.java              |  5 +++
 .../ufos/komponenten/Verteidigungsschild.java |  8 +++++
 .../ufos/komponenten/Waffe.java               |  5 +++
 .../ufos/komponenten/Warpantrieb.java         |  8 +++++
 17 files changed, 197 insertions(+), 4 deletions(-)
 create mode 100644 src/aliensimulator/ufos/UfoFactory.java
 create mode 100644 src/aliensimulator/ufos/komponenten/AlienKomponentenFabrik.java
 create mode 100644 src/aliensimulator/ufos/komponenten/AlienUfoFactory.java
 create mode 100644 src/aliensimulator/ufos/komponenten/Antrieb.java
 create mode 100644 src/aliensimulator/ufos/komponenten/Hyperantrieb.java
 create mode 100644 src/aliensimulator/ufos/komponenten/KomponentenFabrik.java
 create mode 100644 src/aliensimulator/ufos/komponenten/Laserkanone.java
 create mode 100644 src/aliensimulator/ufos/komponenten/Metaphasenschild.java
 create mode 100644 src/aliensimulator/ufos/komponenten/Phaserkanone.java
 create mode 100644 src/aliensimulator/ufos/komponenten/PredatorKomponentenFabrik.java
 create mode 100644 src/aliensimulator/ufos/komponenten/PredatorUfoFactory.java
 create mode 100644 src/aliensimulator/ufos/komponenten/Schild.java
 create mode 100644 src/aliensimulator/ufos/komponenten/Verteidigungsschild.java
 create mode 100644 src/aliensimulator/ufos/komponenten/Waffe.java
 create mode 100644 src/aliensimulator/ufos/komponenten/Warpantrieb.java

diff --git a/src/aliensimulator/AlienSimulator.java b/src/aliensimulator/AlienSimulator.java
index 8814e44..b6d6072 100644
--- a/src/aliensimulator/AlienSimulator.java
+++ b/src/aliensimulator/AlienSimulator.java
@@ -6,10 +6,12 @@ import aliensimulator.aliens.*;
 import aliensimulator.predators.Predator;
 import aliensimulator.predators.PredatorFactory;
 import aliensimulator.predators.Yautja;
-import aliensimulator.ufos.AlienUfoFactory;
 import aliensimulator.ufos.PredatorUfoFactory;
 import aliensimulator.ufos.Ufo;
 import aliensimulator.ufos.UfoFactory;
+import aliensimulator.ufos.komponenten.AlienKomponentenFabrik;
+import aliensimulator.ufos.komponenten.AlienUfoFactory;
+import aliensimulator.ufos.komponenten.PredatorKomponentenFabrik;
 import aliensimulator.verhalten.ErdeFreundlichBesuchen;
 import aliensimulator.verhalten.ErdeNeutralAdapter;
 
@@ -62,13 +64,13 @@ public class AlienSimulator {
 		yautja.fliegen();
 		yautja.erdeBesuchen();
 
-		UfoFactory alienUfoFactory = new AlienUfoFactory();
+		UfoFactory alienUfoFactory = new AlienUfoFactory(new AlienKomponentenFabrik());
 		Ufo alienSternenkreuzer = alienUfoFactory.createUfo("sternenkreuzer");
 		System.out.println(alienSternenkreuzer);
 		Ufo alienTransportschiff = alienUfoFactory.createUfo("transportschiff");
 		System.out.println(alienTransportschiff);
 
-		UfoFactory predatorUfoFactory = new PredatorUfoFactory();
+		UfoFactory predatorUfoFactory = new PredatorUfoFactory(new PredatorKomponentenFabrik());
 		Ufo predatorSternenkreuzer = predatorUfoFactory.createUfo("sternenkreuzer");
 		System.out.println(predatorSternenkreuzer);
 		Ufo predatorTransportschiff = predatorUfoFactory.createUfo("transportschiff");
diff --git a/src/aliensimulator/ufos/PredatorUfoFactory.java b/src/aliensimulator/ufos/PredatorUfoFactory.java
index ef8c125..fa8e0e1 100644
--- a/src/aliensimulator/ufos/PredatorUfoFactory.java
+++ b/src/aliensimulator/ufos/PredatorUfoFactory.java
@@ -4,10 +4,15 @@ import aliensimulator.ufos.komponenten.KomponentenFabrik;
 import aliensimulator.ufos.komponenten.PredatorKomponentenFabrik;
 
 public class PredatorUfoFactory implements UfoFactory {
+    private KomponentenFabrik komponentenFabrik;
+
+    public PredatorUfoFactory(KomponentenFabrik komponentenFabrik) {
+        this.komponentenFabrik = komponentenFabrik;
+    }
+
     @Override
     public Ufo createUfo(String type) {
         Ufo ufo = null;
-        KomponentenFabrik komponentenFabrik = new PredatorKomponentenFabrik();
 
         switch (type) {
             case "sternenkreuzer" :
diff --git a/src/aliensimulator/ufos/UfoFactory.java b/src/aliensimulator/ufos/UfoFactory.java
new file mode 100644
index 0000000..9bf492b
--- /dev/null
+++ b/src/aliensimulator/ufos/UfoFactory.java
@@ -0,0 +1,7 @@
+package aliensimulator.ufos;
+
+public interface UfoFactory {
+
+    public Ufo createUfo(String type);
+
+}
diff --git a/src/aliensimulator/ufos/komponenten/AlienKomponentenFabrik.java b/src/aliensimulator/ufos/komponenten/AlienKomponentenFabrik.java
new file mode 100644
index 0000000..c17af0b
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/AlienKomponentenFabrik.java
@@ -0,0 +1,19 @@
+package aliensimulator.ufos.komponenten;
+
+public class AlienKomponentenFabrik implements KomponentenFabrik {
+    @Override
+    public Antrieb createAntrieb() {
+        return new Hyperantrieb();
+    }
+
+    @Override
+    public Schild createSchild() {
+        return new Verteidigungsschild();
+    }
+
+    @Override
+    public Waffe createWaffe() {
+        return new Phaserkanone();
+    }
+
+}
diff --git a/src/aliensimulator/ufos/komponenten/AlienUfoFactory.java b/src/aliensimulator/ufos/komponenten/AlienUfoFactory.java
new file mode 100644
index 0000000..b958278
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/AlienUfoFactory.java
@@ -0,0 +1,35 @@
+package aliensimulator.ufos.komponenten;
+
+import aliensimulator.ufos.Sternenkreuzer;
+import aliensimulator.ufos.Transportschiff;
+import aliensimulator.ufos.Ufo;
+import aliensimulator.ufos.UfoFactory;
+
+
+public class AlienUfoFactory implements UfoFactory {
+
+    private KomponentenFabrik komponentenFabrik;
+
+    public AlienUfoFactory(KomponentenFabrik komponentenFabrik) {
+        this.komponentenFabrik = komponentenFabrik;
+    }
+
+    @Override
+    public Ufo createUfo(String type) {
+        Ufo ufo = null;
+
+        switch (type) {
+            case "sternenkreuzer" :
+                ufo = new Sternenkreuzer(komponentenFabrik);
+                ufo.setName("Alien Sternenkreuzer");
+                ufo.herstellen();
+                break;
+            case "transportschiff" :
+                ufo = new Transportschiff(komponentenFabrik);
+                ufo.setName("Alien Transportschiff");
+                ufo.herstellen();
+                break;
+        }
+        return ufo;
+    }
+}
diff --git a/src/aliensimulator/ufos/komponenten/Antrieb.java b/src/aliensimulator/ufos/komponenten/Antrieb.java
new file mode 100644
index 0000000..d7f7fdc
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Antrieb.java
@@ -0,0 +1,5 @@
+package aliensimulator.ufos.komponenten;
+
+public interface Antrieb {
+    public String toString();
+}
diff --git a/src/aliensimulator/ufos/komponenten/Hyperantrieb.java b/src/aliensimulator/ufos/komponenten/Hyperantrieb.java
new file mode 100644
index 0000000..a2e8d0a
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Hyperantrieb.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Hyperantrieb implements Antrieb {
+    @Override
+    public String toString() {
+        return "Hyperantrieb";
+    }
+}
diff --git a/src/aliensimulator/ufos/komponenten/KomponentenFabrik.java b/src/aliensimulator/ufos/komponenten/KomponentenFabrik.java
new file mode 100644
index 0000000..2bbdb41
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/KomponentenFabrik.java
@@ -0,0 +1,9 @@
+package aliensimulator.ufos.komponenten;
+
+public interface KomponentenFabrik {
+
+    public Antrieb createAntrieb();
+    public Schild createSchild();
+    public Waffe createWaffe();
+}
+
diff --git a/src/aliensimulator/ufos/komponenten/Laserkanone.java b/src/aliensimulator/ufos/komponenten/Laserkanone.java
new file mode 100644
index 0000000..04def28
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Laserkanone.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Laserkanone implements Waffe {
+    @Override
+    public String toString() {
+        return "Laserkanone";
+    }
+}
\ No newline at end of file
diff --git a/src/aliensimulator/ufos/komponenten/Metaphasenschild.java b/src/aliensimulator/ufos/komponenten/Metaphasenschild.java
new file mode 100644
index 0000000..7139e88
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Metaphasenschild.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Metaphasenschild implements Schild {
+    @Override
+    public String toString() {
+        return "Metaphasenschild";
+    }
+}
\ No newline at end of file
diff --git a/src/aliensimulator/ufos/komponenten/Phaserkanone.java b/src/aliensimulator/ufos/komponenten/Phaserkanone.java
new file mode 100644
index 0000000..ff2b82c
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Phaserkanone.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Phaserkanone implements Waffe {
+    @Override
+    public String toString() {
+        return "Phaserkanone";
+    }
+}
\ No newline at end of file
diff --git a/src/aliensimulator/ufos/komponenten/PredatorKomponentenFabrik.java b/src/aliensimulator/ufos/komponenten/PredatorKomponentenFabrik.java
new file mode 100644
index 0000000..f09d47c
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/PredatorKomponentenFabrik.java
@@ -0,0 +1,18 @@
+package aliensimulator.ufos.komponenten;
+
+public class PredatorKomponentenFabrik implements KomponentenFabrik {
+    @Override
+    public Antrieb createAntrieb() {
+        return new Warpantrieb();
+    }
+
+    @Override
+    public Schild createSchild() {
+        return new Metaphasenschild();
+    }
+
+    @Override
+    public Waffe createWaffe() {
+        return new Laserkanone();
+    }
+}
diff --git a/src/aliensimulator/ufos/komponenten/PredatorUfoFactory.java b/src/aliensimulator/ufos/komponenten/PredatorUfoFactory.java
new file mode 100644
index 0000000..e006f18
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/PredatorUfoFactory.java
@@ -0,0 +1,35 @@
+package aliensimulator.ufos.komponenten;
+
+import aliensimulator.ufos.Sternenkreuzer;
+import aliensimulator.ufos.Transportschiff;
+import aliensimulator.ufos.Ufo;
+import aliensimulator.ufos.UfoFactory;
+
+
+public class PredatorUfoFactory implements UfoFactory {
+
+    private KomponentenFabrik komponentenFabrik;
+
+    public PredatorUfoFactory(KomponentenFabrik komponentenFabrik) {
+        this.komponentenFabrik = komponentenFabrik;
+    }
+
+    @Override
+    public Ufo createUfo(String type) {
+        Ufo ufo = null;
+
+        switch (type) {
+            case "sternenkreuzer" :
+                ufo = new Sternenkreuzer(komponentenFabrik);
+                ufo.setName("Predator Sternenkreuzer");
+                ufo.herstellen();
+                break;
+            case "transportschiff" :
+                ufo = new Transportschiff(komponentenFabrik);
+                ufo.setName("Predator Transportschiff");
+                ufo.herstellen();
+                break;
+        }
+        return ufo;
+    }
+}
diff --git a/src/aliensimulator/ufos/komponenten/Schild.java b/src/aliensimulator/ufos/komponenten/Schild.java
new file mode 100644
index 0000000..ccb0c1c
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Schild.java
@@ -0,0 +1,5 @@
+package aliensimulator.ufos.komponenten;
+
+public interface Schild {
+    public String toString();
+}
diff --git a/src/aliensimulator/ufos/komponenten/Verteidigungsschild.java b/src/aliensimulator/ufos/komponenten/Verteidigungsschild.java
new file mode 100644
index 0000000..8b29b17
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Verteidigungsschild.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Verteidigungsschild implements Schild {
+    @Override
+    public String toString() {
+        return "Verteidigungsschild";
+    }
+}
\ No newline at end of file
diff --git a/src/aliensimulator/ufos/komponenten/Waffe.java b/src/aliensimulator/ufos/komponenten/Waffe.java
new file mode 100644
index 0000000..02cb6a7
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Waffe.java
@@ -0,0 +1,5 @@
+package aliensimulator.ufos.komponenten;
+
+public interface Waffe {
+    public String toString();
+}
diff --git a/src/aliensimulator/ufos/komponenten/Warpantrieb.java b/src/aliensimulator/ufos/komponenten/Warpantrieb.java
new file mode 100644
index 0000000..c2faa88
--- /dev/null
+++ b/src/aliensimulator/ufos/komponenten/Warpantrieb.java
@@ -0,0 +1,8 @@
+package aliensimulator.ufos.komponenten;
+
+public class Warpantrieb implements Antrieb {
+    @Override
+    public String toString() {
+        return "Warpantrieb";
+    }
+}
-- 
GitLab