Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
schule:klassen:2019:10abc:zustandsdiagramme [2020/01/05 16:05] – martin | schule:klassen:2019:10abc:zustandsdiagramme [2021/12/29 10:40] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Zustandsdiagramme ====== | ====== Zustandsdiagramme ====== | ||
+ | |||
+ | ===== Beispiel: Stoppuhr ===== | ||
+ | ==== Funktionsbeschreibung als Text: ==== | ||
+ | Nach dem Einschalten zeigt die Stoppuhr die Zeit 0 min 0 s, kurz: 00:00. Nach Drücken der Taste „s“ beginnt die Zeitmessung und die Uhr zeigt die abgelaufene Zeit an. Drückt man erneut die Taste „s“, so hält die Zeitmessung an, kann jedoch durch weiteren Druck auf „s“ fortgesetzt werden. | ||
+ | Ein Druck auf die Taste „r“ bewirkt jederzeit, dass die Zeitmessung angehalten und die Uhr auf 00:00 zurückgesetzt wird. | ||
+ | |||
+ | ==== Zustandsdiagramm ==== | ||
+ | {{: | ||
+ | |||
+ | ==== Umsetzung als Computerprogramm: | ||
+ | Wir modellieren die Uhr als Java-Klasse. | ||
+ | |||
+ | Im Attribut zustand speichern wir, in welchem Zustand sich das Programm gerade befindet (siehe grüne Zahlen im Zustandsdiagramm). | ||
+ | |||
+ | Für jede auslösende Aktion bekommt die Klasse eine Methode, deren Aufruf die Aktion auslöst. | ||
+ | |||
<code java> | <code java> | ||
Uhr u = new Uhr(); | Uhr u = new Uhr(); | ||
Zeile 80: | Zeile 96: | ||
</ | </ | ||
+ | |||
+ | ===== Aufgabe: Zwischenstopp-Taste ===== | ||
+ | Die Stoppuhr erhält eine weitere Taste Z („Zwischenzeit“), | ||
+ | |||
+ | {{: | ||
+ | |||
+ | <code java> | ||
+ | Uhr u = new Uhr(); | ||
+ | |||
+ | // Die Timer-Klasse führt die Methode run des Objekts u | ||
+ | // alle 1000 ms immer wieder aus: | ||
+ | Timer.repeat(u, | ||
+ | |||
+ | |||
+ | public class Uhr implements Runnable { | ||
+ | |||
+ | int zustand = 1; | ||
+ | int sekunden = 0; | ||
+ | int minuten = 0; | ||
+ | |||
+ | | ||
+ | | ||
+ | if(zustand == 2) { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
+ | if(zustand == 4) { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | ausgabe(); | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | | ||
+ | | ||
+ | if(zustand == 1) { | ||
+ | | ||
+ | // Uhr starten | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(zustand == 2) { | ||
+ | |||
+ | | ||
+ | // Zwischenstopp | ||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | if(zustand == 3) { | ||
+ | | ||
+ | // wieder starten | ||
+ | | ||
+ | } | ||
+ | |||
+ | if(zustand == 4) { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | ausgabe(); | ||
+ | |||
+ | } | ||
+ | |||
+ | | ||
+ | |||
+ | zustand = 1; | ||
+ | // reset | ||
+ | sekunden = 0; | ||
+ | minuten = 0; | ||
+ | |||
+ | ausgabe(); | ||
+ | return; | ||
+ | | ||
+ | } | ||
+ | |||
+ | | ||
+ | | ||
+ | if(zustand == 2 || zustand == 4) { | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | minuten++; | ||
+ | sekunden = 0; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | ausgabe(); | ||
+ | |||
+ | } | ||
+ | |||
+ | | ||
+ | if(zustand != 4) { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </ | ||
+ |