89 lines
2.3 KiB
Java
89 lines
2.3 KiB
Java
/**
|
|
* 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;
|
|
}
|
|
}
|
|
}
|
|
}
|