diff --git a/lib/aliens_3rdparty.jar b/lib/aliens_3rdparty.jar new file mode 100644 index 0000000000000000000000000000000000000000..6952e0b840cab170face2cb2e218047c4fa676f0 Binary files /dev/null and b/lib/aliens_3rdparty.jar differ diff --git a/src/aliensimulator/AlienSimulator.java b/src/aliensimulator/AlienSimulator.java new file mode 100644 index 0000000000000000000000000000000000000000..b3551771bbc96780626a88f5a707e646d979047f --- /dev/null +++ b/src/aliensimulator/AlienSimulator.java @@ -0,0 +1,55 @@ +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) { + AlienFactory alienFactory = new AlienFactory(); + + Alien alienMars = alienFactory.createAlien("mars"); + alienMars.darstellen(); + alienMars.fliegen(); + + // Änderung zur Laufzeit des Verhaltens des Aliens vom Mars + System.out.println("Verhalten vom Alien vom Mars VOR der Änderung seines Verhaltens:"); + alienMars.erdeBesuchen(); + System.out.println("Verhalten vom Alien vom Mars NACH der Änderung seines Verhaltens:"); + alienMars.setErdeBesuchverhalten(new ErdeFreundlichBesuchen()); + alienMars.erdeBesuchen(); + + Alien alienMond = alienFactory.createAlien("mond"); + alienMond.darstellen(); + alienMond.fliegen(); + alienMond.erdeBesuchen(); + + Alien alienVenus = alienFactory.createAlien("venus"); + alienVenus.darstellen(); + alienVenus.fliegen(); + alienVenus.erdeBesuchen(); + + Alien alienFromNY = alienFactory.createAlien("ny"); + alienFromNY.darstellen(); + alienFromNY.fliegen(); + System.out.println("Verhalten vom Alien von NY VOR der Änderung seines Verhaltens:"); + alienFromNY.erdeBesuchen(); + 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/Alien.java b/src/aliensimulator/aliens/Alien.java new file mode 100644 index 0000000000000000000000000000000000000000..8f3385ad3f8c81ff3fb8c43eb8ccd7777aff6094 --- /dev/null +++ b/src/aliensimulator/aliens/Alien.java @@ -0,0 +1,26 @@ +package aliensimulator.aliens; + +import aliensimulator.verhalten.ErdeBesuchverhalten; + +public abstract class Alien { + + 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/aliens/AlienAdapter.java b/src/aliensimulator/aliens/AlienAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..a3c429f9b71125c5f02ce04445b8f5b785e99e28 --- /dev/null +++ b/src/aliensimulator/aliens/AlienAdapter.java @@ -0,0 +1,24 @@ +package aliensimulator.aliens; + +import aliens_3rdparty.AlienFromNY; +import aliensimulator.verhalten.ErdeZerstoererischAdapter; + +public class AlienAdapter extends Alien { + + private AlienFromNY alienFromNY; + + public AlienAdapter(AlienFromNY alienNY) { + this.alienFromNY = alienNY; + this.setErdeBesuchverhalten(new ErdeZerstoererischAdapter()); + } + + @Override + public void darstellen() { + alienFromNY.show(); + } + + @Override + public void fliegen() { + alienFromNY.fly(); + } +} diff --git a/src/aliensimulator/aliens/AlienFactory.java b/src/aliensimulator/aliens/AlienFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..3dac451a8e3a52eeaf3d0c9fbe6bc0e9140f20f8 --- /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/aliens/AlienMars.java b/src/aliensimulator/aliens/AlienMars.java new file mode 100644 index 0000000000000000000000000000000000000000..73c3090c698346732dc2e25918a4bec4e9ba11ba --- /dev/null +++ b/src/aliensimulator/aliens/AlienMars.java @@ -0,0 +1,14 @@ +package aliensimulator.aliens; + +import aliensimulator.verhalten.ErdeFeindlichBesuchen; + +public class AlienMars extends Alien { + + public AlienMars(){ + this.setErdeBesuchverhalten(new ErdeFeindlichBesuchen()); + } + + public void darstellen() { + System.out.println("Ich bin das Alien vom Mars."); + } +} diff --git a/src/aliensimulator/aliens/AlienMond.java b/src/aliensimulator/aliens/AlienMond.java new file mode 100644 index 0000000000000000000000000000000000000000..60a5c816debf2a9f366102cdd506c547d2c04d98 --- /dev/null +++ b/src/aliensimulator/aliens/AlienMond.java @@ -0,0 +1,14 @@ +package aliensimulator.aliens; + +import aliensimulator.verhalten.ErdeFreundlichBesuchen; + +public class AlienMond extends Alien { + + public AlienMond(){ + this.setErdeBesuchverhalten(new ErdeFreundlichBesuchen()); + } + + public void darstellen() { + System.out.println("Ich bin das Alien vom Mond."); + } +} diff --git a/src/aliensimulator/aliens/AlienVenus.java b/src/aliensimulator/aliens/AlienVenus.java new file mode 100644 index 0000000000000000000000000000000000000000..176890729901b41f3ff935f8f42ab994a0b02359 --- /dev/null +++ b/src/aliensimulator/aliens/AlienVenus.java @@ -0,0 +1,14 @@ +package aliensimulator.aliens; + +import aliensimulator.verhalten.ErdeFreundlichBesuchen; + +public class AlienVenus extends Alien { + + public AlienVenus(){ + this.setErdeBesuchverhalten(new ErdeFreundlichBesuchen()); + } + + public void darstellen() { + System.out.println("Ich bin das Alien von der Venus."); + } +} diff --git a/src/aliensimulator/predators/HishQuTen.java b/src/aliensimulator/predators/HishQuTen.java new file mode 100644 index 0000000000000000000000000000000000000000..c65210b4965d8d2091327b5e72c929a3738c364e --- /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 0000000000000000000000000000000000000000..56bc7ed62aa9b06cf6acf75832f8514643781c7f --- /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 0000000000000000000000000000000000000000..14ad9e3fe5367105689b17c33998c9d984611dd0 --- /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 0000000000000000000000000000000000000000..b7aee7571ffa2fde5d25a05cf5b8303ec0788283 --- /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."); + } + +} diff --git a/src/aliensimulator/verhalten/ErdeBesuchverhalten.java b/src/aliensimulator/verhalten/ErdeBesuchverhalten.java new file mode 100644 index 0000000000000000000000000000000000000000..8228a5babc5cdcd32858a4341521423989e2fcde --- /dev/null +++ b/src/aliensimulator/verhalten/ErdeBesuchverhalten.java @@ -0,0 +1,6 @@ +package aliensimulator.verhalten; + +public interface ErdeBesuchverhalten { + + public void erdeBesuchen(); +} diff --git a/src/aliensimulator/verhalten/ErdeFeindlichBesuchen.java b/src/aliensimulator/verhalten/ErdeFeindlichBesuchen.java new file mode 100644 index 0000000000000000000000000000000000000000..4458d615556151bd426ce9206af100976d6fc87b --- /dev/null +++ b/src/aliensimulator/verhalten/ErdeFeindlichBesuchen.java @@ -0,0 +1,6 @@ +package aliensimulator.verhalten; + +public class ErdeFeindlichBesuchen implements ErdeBesuchverhalten{ + + public void erdeBesuchen() { System.out.println("Ich besuche die Erde. Die Menschen schmecken gut."); } +} diff --git a/src/aliensimulator/verhalten/ErdeFreundlichBesuchen.java b/src/aliensimulator/verhalten/ErdeFreundlichBesuchen.java new file mode 100644 index 0000000000000000000000000000000000000000..a3f1ea436cfd0e049a2d2bfdb5c87626a0730f71 --- /dev/null +++ b/src/aliensimulator/verhalten/ErdeFreundlichBesuchen.java @@ -0,0 +1,8 @@ +package aliensimulator.verhalten; + +public class ErdeFreundlichBesuchen implements ErdeBesuchverhalten { + + public void erdeBesuchen (){ + System.out.println("Ich besuche die Erde. Die Menschen sind wundervoll."); + }; +} diff --git a/src/aliensimulator/verhalten/ErdeNeutralAdapter.java b/src/aliensimulator/verhalten/ErdeNeutralAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..12922cb15097122a00e434d241ef921b10fe6ba6 --- /dev/null +++ b/src/aliensimulator/verhalten/ErdeNeutralAdapter.java @@ -0,0 +1,17 @@ +package aliensimulator.verhalten; + +import aliens_3rdparty.NeutralBesuchen; + +public class ErdeNeutralAdapter implements ErdeBesuchverhalten { + + private NeutralBesuchen neutralBesuchen; + + public ErdeNeutralAdapter(NeutralBesuchen neutralBesuchen) { + this.neutralBesuchen = neutralBesuchen; + } + + @Override + public void erdeBesuchen() { + neutralBesuchen.abwarten(); + } +} diff --git a/src/aliensimulator/verhalten/ErdeZerstoererischAdapter.java b/src/aliensimulator/verhalten/ErdeZerstoererischAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..1c4d9a2aaa8a9a2f9da83a54be8f52df1d1e6fbe --- /dev/null +++ b/src/aliensimulator/verhalten/ErdeZerstoererischAdapter.java @@ -0,0 +1,11 @@ +package aliensimulator.verhalten; + +import aliens_3rdparty.ZerstoererischBesuchen; + +public class ErdeZerstoererischAdapter extends ZerstoererischBesuchen implements ErdeBesuchverhalten { + + @Override + public void erdeBesuchen() { + zerstoere(); + } +} diff --git a/src/readme.txt b/src/readme.txt deleted file mode 100644 index 1724e3d8249ad1c619d34f6e4c264d642a4e47d6..0000000000000000000000000000000000000000 --- a/src/readme.txt +++ /dev/null @@ -1 +0,0 @@ -Source Code für die Beispiele und Übungsaufgaben \ No newline at end of file