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