Skip to content
Snippets Groups Projects
Commit 115adf16 authored by Peter Hertkorn's avatar Peter Hertkorn
Browse files

Alien simulator classes for creatures exercise

parent c6a0a5bf
No related branches found
No related tags found
No related merge requests found
Showing
with 182 additions and 1 deletion
File added
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();
}
}
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;
}
}
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();
}
}
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.");
}
}
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.");
}
}
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.");
}
}
package aliensimulator.verhalten;
public interface ErdeBesuchverhalten {
public void erdeBesuchen();
}
package aliensimulator.verhalten;
public class ErdeFeindlichBesuchen implements ErdeBesuchverhalten{
public void erdeBesuchen() { System.out.println("Ich besuche die Erde. Die Menschen schmecken gut."); }
}
package aliensimulator.verhalten;
public class ErdeFreundlichBesuchen implements ErdeBesuchverhalten {
public void erdeBesuchen (){
System.out.println("Ich besuche die Erde. Die Menschen sind wundervoll.");
};
}
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();
}
}
package aliensimulator.verhalten;
import aliens_3rdparty.ZerstoererischBesuchen;
public class ErdeZerstoererischAdapter extends ZerstoererischBesuchen implements ErdeBesuchverhalten {
@Override
public void erdeBesuchen() {
zerstoere();
}
}
Source Code für die Beispiele und Übungsaufgaben
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment