diff --git a/src/aliensimulator/AlienSimulator.java b/src/aliensimulator/AlienSimulator.java index b3551771bbc96780626a88f5a707e646d979047f..5a69d632147c0890812db54ff01583ae1e0e667f 100644 --- a/src/aliensimulator/AlienSimulator.java +++ b/src/aliensimulator/AlienSimulator.java @@ -6,6 +6,10 @@ 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.verhalten.ErdeFreundlichBesuchen; import aliensimulator.verhalten.ErdeNeutralAdapter; @@ -51,5 +55,16 @@ public class AlienSimulator { yautja.fliegen(); yautja.erdeBesuchen(); + UfoFactory alienUfoFactory = new AlienUfoFactory(); + Ufo alienSternenkreuzer = alienUfoFactory.createUfo("sternenkreuzer"); + System.out.println(alienSternenkreuzer); + Ufo alienTransportschiff = alienUfoFactory.createUfo("transportschiff"); + System.out.println(alienTransportschiff); + + UfoFactory predatorUfoFactory = new PredatorUfoFactory(); + Ufo predatorSternenkreuzer = predatorUfoFactory.createUfo("sternenkreuzer"); + System.out.println(predatorSternenkreuzer); + Ufo predatorTransportschiff = predatorUfoFactory.createUfo("transportschiff"); + System.out.println(predatorTransportschiff); } } diff --git a/src/aliensimulator/ufos/PredatorUfoFactory.java b/src/aliensimulator/ufos/PredatorUfoFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..ef8c1257aab925af153f226627e9a531b61224f9 --- /dev/null +++ b/src/aliensimulator/ufos/PredatorUfoFactory.java @@ -0,0 +1,26 @@ +package aliensimulator.ufos; + +import aliensimulator.ufos.komponenten.KomponentenFabrik; +import aliensimulator.ufos.komponenten.PredatorKomponentenFabrik; + +public class PredatorUfoFactory implements UfoFactory { + @Override + public Ufo createUfo(String type) { + Ufo ufo = null; + KomponentenFabrik komponentenFabrik = new PredatorKomponentenFabrik(); + + 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/Sternenkreuzer.java b/src/aliensimulator/ufos/Sternenkreuzer.java new file mode 100644 index 0000000000000000000000000000000000000000..21c6877af0794c6e6158d70f753f1b6bb389f802 --- /dev/null +++ b/src/aliensimulator/ufos/Sternenkreuzer.java @@ -0,0 +1,21 @@ +package aliensimulator.ufos; + +import aliensimulator.ufos.komponenten.KomponentenFabrik; + +public class Sternenkreuzer extends Ufo { + + public Sternenkreuzer(KomponentenFabrik komponentenFabrik) { + super(); + setKomponentenFabrik(komponentenFabrik); + } + + public void herstellen() { + setAntrieb(komponentenFabrik.createAntrieb()); + setSchild(komponentenFabrik.createSchild()); + setWaffe(komponentenFabrik.createWaffe()); + } + + public String toString() { + return "Sternenkreuzer\n" + super.toString(); + } +} diff --git a/src/aliensimulator/ufos/Transportschiff.java b/src/aliensimulator/ufos/Transportschiff.java new file mode 100644 index 0000000000000000000000000000000000000000..6d23b536f9eebc3e05a58111f4cdbdc12af4f5f2 --- /dev/null +++ b/src/aliensimulator/ufos/Transportschiff.java @@ -0,0 +1,20 @@ +package aliensimulator.ufos; + +import aliensimulator.ufos.komponenten.KomponentenFabrik; + +public class Transportschiff extends Ufo { + + public Transportschiff(KomponentenFabrik komponentenFabrik) { + super(); + setKomponentenFabrik(komponentenFabrik); + } + + public void herstellen() { + setAntrieb(komponentenFabrik.createAntrieb()); + setSchild(komponentenFabrik.createSchild()); + } + + public String toString() { + return "Transportschiff\n" + super.toString(); + } +} diff --git a/src/aliensimulator/ufos/Ufo.java b/src/aliensimulator/ufos/Ufo.java new file mode 100644 index 0000000000000000000000000000000000000000..6d2ef9d800482470839093b22e4f2990516ed42e --- /dev/null +++ b/src/aliensimulator/ufos/Ufo.java @@ -0,0 +1,76 @@ +package aliensimulator.ufos; + +import aliensimulator.ufos.komponenten.Antrieb; +import aliensimulator.ufos.komponenten.KomponentenFabrik; +import aliensimulator.ufos.komponenten.Schild; +import aliensimulator.ufos.komponenten.Waffe; + +public abstract class Ufo { + KomponentenFabrik komponentenFabrik; + String name; + Antrieb antrieb; + Schild schild; + Waffe waffe; + + public abstract void herstellen(); + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Antrieb getAntrieb() { + return antrieb; + } + + public void setAntrieb(Antrieb antrieb) { + this.antrieb = antrieb; + } + + public Schild getSchild() { + return schild; + } + + public void setSchild(Schild schild) { + this.schild = schild; + } + + public Waffe getWaffe() { + return waffe; + } + + public void setWaffe(Waffe waffe) { + this.waffe = waffe; + } + + public KomponentenFabrik getKomponentenFabrik() { + return komponentenFabrik; + } + + public void setKomponentenFabrik(KomponentenFabrik komponentenFabrik) { + this.komponentenFabrik = komponentenFabrik; + } + + @Override + public String toString() { + StringBuffer result = new StringBuffer(); + result.append("Name: " + name + "\n"); + + if (antrieb != null) { + result.append(antrieb + "\n"); + } + + if (schild != null) { + result.append(schild + "\n"); + } + + if (waffe != null) { + result.append(waffe + "\n"); + } + + return result.toString(); + } +}