From 39d71599dd9eb9895002739f6c4ed3bfa24a575a Mon Sep 17 00:00:00 2001 From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de> Date: Thu, 12 Nov 2020 18:22:50 +0100 Subject: [PATCH] Aliensimulator using adapter --- src/aliensimulator/AlienAdapter.java | 23 +++++++++++++++++++ src/aliensimulator/AlienSimulator.java | 12 ++++++++++ src/aliensimulator/ErdeNeutralAdapter.java | 17 ++++++++++++++ .../ErdeZerstoererischAdapter.java | 11 +++++++++ 4 files changed, 63 insertions(+) create mode 100644 src/aliensimulator/AlienAdapter.java create mode 100644 src/aliensimulator/ErdeNeutralAdapter.java create mode 100644 src/aliensimulator/ErdeZerstoererischAdapter.java diff --git a/src/aliensimulator/AlienAdapter.java b/src/aliensimulator/AlienAdapter.java new file mode 100644 index 0000000..809454f --- /dev/null +++ b/src/aliensimulator/AlienAdapter.java @@ -0,0 +1,23 @@ +package aliensimulator; + +import aliens_3rdparty.AlienFromNY; + +public class AlienAdapter extends Alien { + + private AlienFromNY alienFromNY; + + public AlienAdapter(AlienFromNY alienNY) { + this.alienFromNY = alienNY; + erdeBesuchverhalten = new ErdeZerstoererischAdapter(); + } + + @Override + public void darstellen() { + alienFromNY.show(); + } + + @Override + public void fliegen() { + alienFromNY.fly(); + } +} diff --git a/src/aliensimulator/AlienSimulator.java b/src/aliensimulator/AlienSimulator.java index 68a94e5..4514535 100644 --- a/src/aliensimulator/AlienSimulator.java +++ b/src/aliensimulator/AlienSimulator.java @@ -1,5 +1,8 @@ package aliensimulator; +import aliens_3rdparty.AlienFromNY; +import aliens_3rdparty.NeutralBesuchen; + public class AlienSimulator { public static void main(String[] args) { @@ -23,5 +26,14 @@ public class AlienSimulator { 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/ErdeNeutralAdapter.java b/src/aliensimulator/ErdeNeutralAdapter.java new file mode 100644 index 0000000..c9ed275 --- /dev/null +++ b/src/aliensimulator/ErdeNeutralAdapter.java @@ -0,0 +1,17 @@ +package aliensimulator; + +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/ErdeZerstoererischAdapter.java b/src/aliensimulator/ErdeZerstoererischAdapter.java new file mode 100644 index 0000000..0f0c04d --- /dev/null +++ b/src/aliensimulator/ErdeZerstoererischAdapter.java @@ -0,0 +1,11 @@ +package aliensimulator; + +import aliens_3rdparty.ZerstoererischBesuchen; + +public class ErdeZerstoererischAdapter extends ZerstoererischBesuchen implements ErdeBesuchverhalten { + + @Override + public void erdeBesuchen() { + zerstoere(); + } +} -- GitLab