diff --git a/src/aliensimulator/AlienSimulator.java b/src/aliensimulator/AlienSimulator.java index 8814e44924d1ae71f4f6339b32046747e29b6ef8..b6d60725fd5572a79b01c5d0d2b8ea548a249d12 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 ef8c1257aab925af153f226627e9a531b61224f9..fa8e0e1cbcf4cc246a1693e183af876a4e8cf217 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 0000000000000000000000000000000000000000..9bf492b586b775a140d0b014653a91267318fb1a --- /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 0000000000000000000000000000000000000000..c17af0bd15de28d85460e0516b9f20564096facf --- /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 0000000000000000000000000000000000000000..b958278e50e684c9777e45ea37c885e3751b31ad --- /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 0000000000000000000000000000000000000000..d7f7fdc8c0f38fa0eb0841546886254569003954 --- /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 0000000000000000000000000000000000000000..a2e8d0ad1d07cfc229d3a89c86da9dbdcd32bfdb --- /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 0000000000000000000000000000000000000000..2bbdb415ac5a7d241dc6574ad974a76869b11adf --- /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 0000000000000000000000000000000000000000..04def289cf1a52ebfb164bef4568fe883ceb4057 --- /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 0000000000000000000000000000000000000000..7139e8864c324f5cd06e33cb79141b444574ba2e --- /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 0000000000000000000000000000000000000000..ff2b82c3cb9ca8d973a175bafd86a0b2ae0c112f --- /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 0000000000000000000000000000000000000000..f09d47cf34cb62df71ea125a3b49891cadec3b25 --- /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 0000000000000000000000000000000000000000..e006f183385c1922b1a2ae027d50c70534b6c9ad --- /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 0000000000000000000000000000000000000000..ccb0c1c155184d3a222546178aa911341850618d --- /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 0000000000000000000000000000000000000000..8b29b17c44cfb379b906eae178025a8ebc2ac0b2 --- /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 0000000000000000000000000000000000000000..02cb6a7f56d442cd73aaebddab22531bc44c77cc --- /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 0000000000000000000000000000000000000000..c2faa88ebca1bad16e495889a4f266940f4fe848 --- /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"; + } +}