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