diff --git a/src/aliensimulator/Alien.java b/src/aliensimulator/Alien.java index e8ac21fe9cd1c3170f9933d618b5dc8ebdd11442..53e1fe0e6d1d75243d10779badb3cffbcd8d0bfd 100644 --- a/src/aliensimulator/Alien.java +++ b/src/aliensimulator/Alien.java @@ -2,9 +2,23 @@ package aliensimulator; public abstract class Alien { - public abstract void darstellen(); + protected ErdeBesuchverhalten erdeBesuchverhalten; + + 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/AlienMars.java b/src/aliensimulator/AlienMars.java index 426cbac4c8ff5ac64c79e5a98edb8bbbe8f067d5..037afd38c4a418b108a3c0a7c16b95e4e41e48da 100644 --- a/src/aliensimulator/AlienMars.java +++ b/src/aliensimulator/AlienMars.java @@ -1,8 +1,12 @@ package aliensimulator; public class AlienMars extends Alien { + + public AlienMars(){ + erdeBesuchverhalten = new ErdeFeindlichBesuchen(); + } - public void darstellen() { - System.out.println("Ich bin das Alien vom Mars."); - } + public void darstellen() { + System.out.println("Ich bin das Alien vom Mars."); + } } diff --git a/src/aliensimulator/AlienMond.java b/src/aliensimulator/AlienMond.java index 715c604799b6fcee96d4d7569f93c9d219be5803..32686870b74b3da34a740ed01a0ff8851e643a2e 100644 --- a/src/aliensimulator/AlienMond.java +++ b/src/aliensimulator/AlienMond.java @@ -2,6 +2,10 @@ package aliensimulator; public class AlienMond extends Alien { + public AlienMond(){ + erdeBesuchverhalten = new ErdeFreundlichBesuchen(); + } + public void darstellen() { System.out.println("Ich bin das Alien vom Mond."); } diff --git a/src/aliensimulator/AlienSimulator.java b/src/aliensimulator/AlienSimulator.java index 4a9f6fd568fb1fe3e4c435d758848bf9d7a43bbe..68a94e55ca356b22c3b1113197af7bcd516d16c9 100644 --- a/src/aliensimulator/AlienSimulator.java +++ b/src/aliensimulator/AlienSimulator.java @@ -3,13 +3,25 @@ package aliensimulator; public class AlienSimulator { public static void main(String[] args) { + Alien alienMars = new AlienMars(); + alienMars.darstellen(); + alienMars.fliegen(); - Alien alien = new AlienMars(); - alien.darstellen(); - alien.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 = new AlienMond(); - alien.darstellen(); - alien.fliegen(); + Alien alienMond = new AlienMond(); + alienMond.darstellen(); + alienMond.fliegen(); + alienMond.erdeBesuchen(); + + Alien alienVenus = new AlienVenus(); + alienVenus.darstellen(); + alienVenus.fliegen(); + alienVenus.erdeBesuchen(); } } diff --git a/src/aliensimulator/AlienVenus.java b/src/aliensimulator/AlienVenus.java new file mode 100644 index 0000000000000000000000000000000000000000..55eafb9b552c61284752775bcd4aa7e178fd6bdf --- /dev/null +++ b/src/aliensimulator/AlienVenus.java @@ -0,0 +1,12 @@ +package aliensimulator; + +public class AlienVenus extends Alien { + + public AlienVenus(){ + erdeBesuchverhalten = new ErdeFreundlichBesuchen(); + } + + public void darstellen() { + System.out.println("Ich bin das Alien von der Venus."); + } +} diff --git a/src/aliensimulator/ErdeBesuchverhalten.java b/src/aliensimulator/ErdeBesuchverhalten.java new file mode 100644 index 0000000000000000000000000000000000000000..9100529ebcabed1ad5dacf8dc54b6729491cbe83 --- /dev/null +++ b/src/aliensimulator/ErdeBesuchverhalten.java @@ -0,0 +1,6 @@ +package aliensimulator; + +public interface ErdeBesuchverhalten { + + public void erdeBesuchen(); +} diff --git a/src/aliensimulator/ErdeFeindlichBesuchen.java b/src/aliensimulator/ErdeFeindlichBesuchen.java new file mode 100644 index 0000000000000000000000000000000000000000..178b940eb281e910ba242869bc0eb87317f8bb3b --- /dev/null +++ b/src/aliensimulator/ErdeFeindlichBesuchen.java @@ -0,0 +1,6 @@ +package aliensimulator; + +public class ErdeFeindlichBesuchen implements ErdeBesuchverhalten{ + + public void erdeBesuchen() { System.out.println("Ich besuche die Erde. Die Menschen schmecken gut."); } +} diff --git a/src/aliensimulator/ErdeFreundlichBesuchen.java b/src/aliensimulator/ErdeFreundlichBesuchen.java new file mode 100644 index 0000000000000000000000000000000000000000..77670653506982d6b20baa9a5b22d9b3168a8fb3 --- /dev/null +++ b/src/aliensimulator/ErdeFreundlichBesuchen.java @@ -0,0 +1,8 @@ +package aliensimulator; + +public class ErdeFreundlichBesuchen implements ErdeBesuchverhalten { + + public void erdeBesuchen (){ + System.out.println("Ich besuche die Erde. Die Menschen sind wundervoll."); + }; +}