From 16ab464793ce4ba1a3497281e848fe8d70606c3f Mon Sep 17 00:00:00 2001 From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de> Date: Thu, 12 Nov 2020 17:46:41 +0100 Subject: [PATCH] Aliensimulator using strategy pattern --- src/aliensimulator/Alien.java | 16 ++++++++++++- src/aliensimulator/AlienMars.java | 10 +++++--- src/aliensimulator/AlienMond.java | 4 ++++ src/aliensimulator/AlienSimulator.java | 24 ++++++++++++++----- src/aliensimulator/AlienVenus.java | 12 ++++++++++ src/aliensimulator/ErdeBesuchverhalten.java | 6 +++++ src/aliensimulator/ErdeFeindlichBesuchen.java | 6 +++++ .../ErdeFreundlichBesuchen.java | 8 +++++++ 8 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 src/aliensimulator/AlienVenus.java create mode 100644 src/aliensimulator/ErdeBesuchverhalten.java create mode 100644 src/aliensimulator/ErdeFeindlichBesuchen.java create mode 100644 src/aliensimulator/ErdeFreundlichBesuchen.java diff --git a/src/aliensimulator/Alien.java b/src/aliensimulator/Alien.java index e8ac21f..53e1fe0 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 426cbac..037afd3 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 715c604..3268687 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 4a9f6fd..68a94e5 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 0000000..55eafb9 --- /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 0000000..9100529 --- /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 0000000..178b940 --- /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 0000000..7767065 --- /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."); + }; +} -- GitLab