/** * 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; } } } }