diff --git a/src/Brieftasche.java b/src/Brieftasche.java new file mode 100644 index 0000000..7046d6b --- /dev/null +++ b/src/Brieftasche.java @@ -0,0 +1,23 @@ +/** + * Diese Klasse modelliert eine Brieftasche. + * + * @author tebe + * + */ +public class Brieftasche { + private int geld = 0; + + /** + * @return Der Geldbetrag in der Brieftasche + */ + public int getGeld() { + return geld; + } + /** + * Legt den Geldbetrag in der Brieftasche fest + * @param geld Der Geldbetrag + */ + public void setGeld(int geld) { + this.geld = geld; + } +} diff --git a/src/Person.java b/src/Person.java new file mode 100644 index 0000000..9b7fa6e --- /dev/null +++ b/src/Person.java @@ -0,0 +1,18 @@ +/** + * Diese Klasse modelliert eine Person mit einer + * Brieftasche. + * + * @author tebe + * + */ +public class Person { + private final Brieftasche brieftasche = new Brieftasche(); + + /** + * @return Die Brieftasche + */ + public Brieftasche getBrieftasche() { + return brieftasche; + } + +} diff --git a/src/Zahlstation.java b/src/Zahlstation.java new file mode 100644 index 0000000..b90aad9 --- /dev/null +++ b/src/Zahlstation.java @@ -0,0 +1,88 @@ +/** + * Diese Klasse modelliert eine Zahlstation, wo Personen + * eine Gebuehr zahlen muessen, um passieren zu koennen. + * Die Bezahlstation schaltet eine Ampel passend zum + * geschehen. Anfaenglich steht die Ampel auf Rot. + * + * @author tebe + * @version 1.0 + * + */ +public class Zahlstation { + private int preis = 150; + //Moeglichen Zustaende: 0 => Gruen, 1 => Orange, 2 => Rot + private int ampelzustand = 2; + + /** + * Laesst die spezifizierte Person passieren, falls Sie die + * geforderte Gebuehr bezahlen kann. + * @param person Die Person, die passieren will + * @return true, falls die Person passieren konnte + */ + public boolean passieren(Person person) { + boolean passieren = kannPassieren(person); + if (passieren) { + person.getBrieftasche().setGeld( + person.getBrieftasche().getGeld() - preis); + System.out.println("Person hat bezahlt."); + zustandWechseln(0); + System.out.println("Person laeuft durch."); + zustandWechseln(2); + } + return passieren; + } + + /** + * Prueft, ob die Person passieren kann + * @param person Die Person, die passieren will + * @return true, wenn die Person passieren kann + */ + private boolean kannPassieren(Person person) { + return person.getBrieftasche().getGeld() > preis; + } + + /** + * Fuehrt Zustandswechsel der Ampel durch. + * Moeglichen Zustaende: 0 => Gruen, 1 => Orange, 2 => Rot + * + * @param neuerZustand + */ + private void zustandWechseln(int neuerZustand) { + if (ampelzustand == 0) { + switch (neuerZustand) { + case 1: + System.out.println("Schalte auf Orange."); + ampelzustand = 1; + break; + case 2: + System.out.println("Schalte auf Orange."); + System.out.println("Schalte auf Rot."); + ampelzustand = 2; + break; + } + } else if (ampelzustand == 1) { + switch (neuerZustand) { + case 0: + System.out.println("Schalte auf Gruen."); + ampelzustand = 0; + break; + case 2: + System.out.println("Schalte auf Rot."); + ampelzustand = 2; + break; + } + } else { + switch (neuerZustand) { + case 0: + System.out.println("Schalte auf Orange."); + System.out.println("Schalte auf Gruen."); + ampelzustand = 0; + break; + case 1: + System.out.println("Schalte auf Orange."); + ampelzustand = 1; + break; + } + } + } +} diff --git a/src/Zahlstationssimulator.java b/src/Zahlstationssimulator.java new file mode 100644 index 0000000..ec34bd6 --- /dev/null +++ b/src/Zahlstationssimulator.java @@ -0,0 +1,35 @@ +/** + * Ein ziemlich primitiver Zahlstationssimulator. + * Er erzeugt ein paar mit einem zufaelligen Geldbetrag + * ausgestattete Personen und schickt diese anschliessend + * durch eine Zahlstation. + * + * @author tebe + * + */ +public class Zahlstationssimulator { + private static final int MAX_GELD = 1000; + private static final int ANZAHL_PERSONEN = 10; + + public static void main(String[] args) { + Zahlstation zahlstation = new Zahlstation(); + for(int i=0; i