Javakurs/Übungsaufgaben/OOPStateCharts: Unterschied zwischen den Versionen
< Javakurs | Übungsaufgaben
Mario (Diskussion | Beiträge) (Statechart aufgabe) |
(→Aufgabenstellung) |
||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
= Aufgabenstellung = | = Aufgabenstellung = | ||
| − | [[Bild:OOPStatechart.png|thumb|Javakurs 2011 - StateChart]] | + | [[Bild:OOPStatechart.png|thumb|Javakurs 2011 - StateChart]] |
| − | Schreibe ein Programm, welches | + | Schreibe ein Programm, welches das hier gezeigte [http://de.wikipedia.org/wiki/Zustands%C3%BCbergangsdiagramm StateChart]-Diagramm in objektorientierter Weise erzeugt. |
= Hilfestellung = | = Hilfestellung = | ||
Aktuelle Version vom 22. März 2011, 10:12 Uhr
Aufgabenstellung
Schreibe ein Programm, welches das hier gezeigte StateChart-Diagramm in objektorientierter Weise erzeugt.
Hilfestellung
Benutze die folgende Klasse als Basis für alle weiteren Zustände:
/**
* Base Class for all states
*/
class State {
// ! returns a new state, if transition is correct
public State transition(String signal) {
return this;
}
}
Wobei jeder Aufruf von transition entweder das gleiche Objekt (this) oder ein neues Objekt zurückliefert, je nach dem, ob ein Statusübergang statt findet, oder nicht. Die main-Methode könnte dann wie folgt aussehen:
/**
* Class file starting main loop
*/
public class StateCharts {
/**
* Main class, creating the state chart
*
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// set the state chart to be initial at state initial
State current_state = new InitialState();
// loop through the state till exit is reached
while (current_state != null) {
// print information about current class
System.out.println("Current state: "
+ current_state.getClass().getName());
// get signal for next state
System.out.print("signal to be send: ");
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
String signal = reader.readLine();
// get next state if needed
current_state = current_state.transition(signal);
System.out.println();
}
// inform user
System.out.println("StateChart is at end state.");
}
}
