From 115adf16b3cae250be1119bde4aca145fc2c9ca1 Mon Sep 17 00:00:00 2001
From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de>
Date: Thu, 12 Nov 2020 21:26:33 +0100
Subject: [PATCH] Alien simulator classes for creatures exercise

---
 lib/aliens_3rdparty.jar                       | Bin 0 -> 1784 bytes
 src/aliensimulator/AlienSimulator.java        |  42 ++++++++++++++++++
 src/aliensimulator/aliens/Alien.java          |  26 +++++++++++
 src/aliensimulator/aliens/AlienAdapter.java   |  24 ++++++++++
 src/aliensimulator/aliens/AlienMars.java      |  14 ++++++
 src/aliensimulator/aliens/AlienMond.java      |  14 ++++++
 src/aliensimulator/aliens/AlienVenus.java     |  14 ++++++
 .../verhalten/ErdeBesuchverhalten.java        |   6 +++
 .../verhalten/ErdeFeindlichBesuchen.java      |   6 +++
 .../verhalten/ErdeFreundlichBesuchen.java     |   8 ++++
 .../verhalten/ErdeNeutralAdapter.java         |  17 +++++++
 .../verhalten/ErdeZerstoererischAdapter.java  |  11 +++++
 src/readme.txt                                |   1 -
 13 files changed, 182 insertions(+), 1 deletion(-)
 create mode 100644 lib/aliens_3rdparty.jar
 create mode 100644 src/aliensimulator/AlienSimulator.java
 create mode 100644 src/aliensimulator/aliens/Alien.java
 create mode 100644 src/aliensimulator/aliens/AlienAdapter.java
 create mode 100644 src/aliensimulator/aliens/AlienMars.java
 create mode 100644 src/aliensimulator/aliens/AlienMond.java
 create mode 100644 src/aliensimulator/aliens/AlienVenus.java
 create mode 100644 src/aliensimulator/verhalten/ErdeBesuchverhalten.java
 create mode 100644 src/aliensimulator/verhalten/ErdeFeindlichBesuchen.java
 create mode 100644 src/aliensimulator/verhalten/ErdeFreundlichBesuchen.java
 create mode 100644 src/aliensimulator/verhalten/ErdeNeutralAdapter.java
 create mode 100644 src/aliensimulator/verhalten/ErdeZerstoererischAdapter.java
 delete mode 100644 src/readme.txt

diff --git a/lib/aliens_3rdparty.jar b/lib/aliens_3rdparty.jar
new file mode 100644
index 0000000000000000000000000000000000000000..6952e0b840cab170face2cb2e218047c4fa676f0
GIT binary patch
literal 1784
zcmWIWW@Zs#;Nak3Sdh2ahXDzQFt9NAx`sIFdiuHP`#So0y1532==r++JH^28+4sz8
zA8%c~i@e^tTIbH3-yCFc#rVO~M^Bj;0=(HdHq|q|lLi_k3B&<7El>r@Cgx<O<`u^q
z7o`*=7L`=$`=yqa6eZ?3r52YaXQbxoCFdj-7q<qS_B(7KAanVW$-;ma&E{M7GPXZq
z5NcQAQz-0W(CpAIYI2QL<tvgEn9s^S!QumBjYyJkKqUvKeA%AOyB|mH-)Fm@;fCY!
zLoCki$AeZ}Ji2Y)o@cl2R329{o^_l(X^JcJLY*m+Y3+a7stv=#?|E8?OiWzy##8mI
zopWaL=Q#^&X2fx^tKKm6S#&7i`%<CfkwRRx#|}prnEWw$^wILV(Rurmn<P&NI-mc4
z+-?5CQ-`CqI8&3wc)5%1Ygo&bl_yEf%9yy^M7cY6zsBh+)>ngO9>_R2xlZ)+6V(nj
zo8Y@HFY*pOUiW$zpV-En#Lk63k4NxoN2G38SF9DLvhQJi^&NrQtLN<xabEIqf8_D(
z_SU-GhtHH>G|DL13zsauzbGT{nV`|3lWWyO-gj?u-WW7N)hBRGt%-o2u+f>G_Hu5+
z19c92FV-D7G`+!j#_5oiAH9#rb*~Yf`}#d7sv@VX*dM_Nj4CF4QKg6_svJR4=T?-T
z>lX=$rrHU<{<j?j+V1x{%go-=vLxV^%9VnLj}zoqTyYi<S|!4H(o1`3*A(GfEv-6R
z_hxKXJas;cKjhUy`v&>e8KxclnydIfzdLiz?sHY%`+xtKKS<uz<Kp3+=P}XOkN?X}
z(d%h)vbXmv4!tG2L&GRU|EFoc(7afe`)$*cQY5_EjV3?qIC%5!Yh#i9tBfBWZVW#t
z<i(@C@r+CPEWXx%2irRnRvgVbGTH9>rDy#|7fGJxbk_dY-)gqi_gL1mg<Z3{uZGuE
zeeM*@WG&sJte@p|?b@S1QLA3;o;LHPq;AD6z2vzID>qGMOVeqpi7D{=vp_rTpu@}g
z3;TI%N<KC&+{X~$$n4AZ{nWHcJ;&Z0)6bF6ir?~9YtHACxMS*VU;T`hCnbc~8HH+b
zA2LY!P@T2PeUb88wpIH7Otv`WG%9SE@2q}H&2{>wjwuuM-u`#|DK5+PL37%tMa`*Q
zQ`^}tnJ?kVpD$OxFt7Ug-(z06Z`t0@XS7>c8?x+KddGK`Ox?B|y@m>wkK#^Edx~Gn
zfnqgOl$E<37^_uyV^s%BtVX346_@0v7Nr(t7AI$*=EL5AlU~e@0=2nGYR1QO-&ODN
z_%gv#qoSiCK%m93wS!&%(o7M*(@Wf|th)Y9l@qb~!B{sX!uZ{TgLYS5--_G2YWnr%
z=?u~lMHkdJC?&gE*+!es_0D|LTkoZ|l~dA4i+8cCS9PMxEyuuwCr)vm_S1gdvCoMQ
z$YAw~_R`+18?a*iJPwia$$XU>2i7i-S8aUgkZJXz^ma;Ls<m2U)`S)#yNPb8|J*lZ
zC{N|O()@pACfAPb^CiWVS6E5>UAn$>a@4CZgSNtJ)4oK!a+$C^^pU*e(%jQhlkTQT
zPG;i%ofxuP?eapYj}5m(CD$H0F=?Ht6fghf8Knlw2H)77S&L_g7wBycSX1d|`(xqZ
zq91!^-aVGBYAbwc-YKzpzpFR8UF%HUke0H(zrMzO8(+2E;)FNx)h<8v{Ht@kD>pPS
zZkzg@>6oKi<HGgN&d%W}cyAapx8lGR^Ty*dE>79`VfK-~N|7hD#qWcQ&!ao|+){wC
zX9bQuMkWykL<x;tw1P@#RDi3z4)8`b1v%G)ieUsu1Tu*#l+leuPI92)0s(k{-at1J
mqwqjC4mk`!=@bDTF=HBsFVzNkv$BD7vjCwJFjN<?f_MNC52|he

literal 0
HcmV?d00001

diff --git a/src/aliensimulator/AlienSimulator.java b/src/aliensimulator/AlienSimulator.java
new file mode 100644
index 0000000..49b5518
--- /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 0000000..8f3385a
--- /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 0000000..a3c429f
--- /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 0000000..73c3090
--- /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 0000000..60a5c81
--- /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 0000000..1768907
--- /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 0000000..8228a5b
--- /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 0000000..4458d61
--- /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 0000000..a3f1ea4
--- /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 0000000..12922cb
--- /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 0000000..1c4d9a2
--- /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 1724e3d..0000000
--- a/src/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Source Code für die Beispiele und Übungsaufgaben
\ No newline at end of file
-- 
GitLab