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..49b55183fc14630e6f2cad58e7c22c9a2f587e62 --- /dev/null +++ b/src/aliensimulator/AlienSimulator.java @@ -0,0 +1,42 @@ +package aliensimulator; + +import aliens_3rdparty.AlienFromNY; +import aliens_3rdparty.NeutralBesuchen; +import aliensimulator.aliens.*; +import aliensimulator.verhalten.ErdeFreundlichBesuchen; +import aliensimulator.verhalten.ErdeNeutralAdapter; + +public class AlienSimulator { + + public static void main(String[] args) { + Alien alienMars = new AlienMars(); + 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 = new AlienMond(); + alienMond.darstellen(); + alienMond.fliegen(); + alienMond.erdeBesuchen(); + + Alien alienVenus = new AlienVenus(); + alienVenus.darstellen(); + alienVenus.fliegen(); + alienVenus.erdeBesuchen(); + + Alien alienFromNY = new AlienAdapter(new AlienFromNY()); + 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(); + } +} 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/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/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