Initial commit of the source files.

This commit is contained in:
Bernhard Tellenbach 2017-09-17 17:07:18 +02:00
parent 9f3b8225f9
commit 3a0503be12
4 changed files with 164 additions and 0 deletions

23
src/Brieftasche.java Normal file
View File

@ -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;
}
}

18
src/Person.java Normal file
View File

@ -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;
}
}

88
src/Zahlstation.java Normal file
View File

@ -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;
}
}
}
}

View File

@ -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<ANZAHL_PERSONEN; i++) {
System.out.println("--- Person " + i + " ---");
if(zahlstation.passieren(erzeugePerson())){
System.out.println("PASSIERT");
} else {
System.out.println("NICHT PASSIERT");
}
}
}
/**
* @return Eine mit einem zufaelligen Geldbetrag ausgestattete Person
*/
public static Person erzeugePerson() {
Person person = new Person();
person.getBrieftasche().setGeld(
(int) (Math.random()*(MAX_GELD+1)));
return person;
}
}