Zustandsmodelle - Gymnasium Pegnitz
Zustandsmodelle - Gymnasium Pegnitz
Zustandsmodelle - Gymnasium Pegnitz
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Zustandsmodelle</strong><br />
M. Jakob<br />
<strong>Gymnasium</strong> <strong>Pegnitz</strong><br />
9. April 2013<br />
0<br />
speichern<br />
T=0<br />
toggeln<br />
T=1<br />
1<br />
0<br />
speichern<br />
T=0<br />
toggeln<br />
T=1<br />
1
Inhaltsverzeichnis<br />
1 Einführung<br />
2 Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
3 Implementation<br />
4 Bedingungen und ausgelösten Aktionen in ZÜD
Gliederung<br />
Einführung<br />
1 Einführung<br />
2 Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
3 Implementation<br />
4 Bedingungen und ausgelösten Aktionen in ZÜD<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 3 / 28
Das Inselspiel<br />
Einführung<br />
Inselspiel<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 4 / 28
Das Inselspiel<br />
Einführung<br />
Inselspiel<br />
Kristallfähre<br />
Totenkopffähre<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 4 / 28
Einführung<br />
Das Inselspiel — Zustandsdiagramm<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 5 / 28
Einführung<br />
Mikrobetriebsysteme<br />
Elektronische Geräte (Handy, mp3-Player,...) brauchen zur<br />
Funktion eine kleines Betriebssystem, das festlegt wie sich das<br />
Gerät sich verhalten soll.<br />
Zur Entwicklung solcher Betriebssysteme werden zuerst<br />
Zustandsdiagramme entworfen.<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 6 / 28
Einführung<br />
Beispiel: Einfache Stoppuhr<br />
T1 und T2<br />
T1<br />
Stoppuhr läuft<br />
Uhrzeitanzeige 00:00:00<br />
T1<br />
T1<br />
T1 und T2<br />
T2<br />
Stoppuhr steht<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 7 / 28
Einführung<br />
Beispiel: Einfache Stoppuhr mit ausgelösten Aktionen<br />
T1 und T2<br />
/Anz. auf 0<br />
stellen<br />
T1 /Stoppuhr<br />
starten<br />
Stoppuhr läuft<br />
Uhrzeitanz. 00:00:00<br />
T1 /St.<br />
starten<br />
T1 /St.<br />
anhalten<br />
T1 und T2<br />
/Anz. auf UZ<br />
stellen<br />
T2 /Anz.<br />
auf 0 stellen<br />
Stoppuhr steht<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 8 / 28
Einführung<br />
Übung<br />
➥Ü1: Zustandsübergänge mit ausgelösten Aktionen, Vorlage:<br />
ZUEDUbg.graphml<br />
Nachfolgend sind Zustände, Ereignisse oder ausgelöste Aktionen<br />
angegeben. Ergänze die fehlenden Bausteine<br />
(a) Telefonhörer abheben.<br />
(b) Eine Waschmaschine hat die Waschtemperatur erreicht.<br />
(c) Eine Heizung soll aufhören zu heizen.<br />
(d) Bei einem Getränkeautomat soll ein Getränk im Ausgabefach<br />
liegen.<br />
(e) Eine Braut soll heiraten.<br />
(f) Peter Lustig soll eine E-Mail von seinem Provider abrufen können.<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 9 / 28
Gliederung<br />
UML-Diagramme<br />
1 Einführung<br />
2 Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
3 Implementation<br />
4 Bedingungen und ausgelösten Aktionen in ZÜD<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 10 / 28
UML-Diagramme<br />
Zustandsdiagrame in der UnifiedModelling Language<br />
UML (Unified Modelling Language) bei Zustandsdiagrammen<br />
Zustände werden durch abgerundete Rechtecke dargestellt.<br />
Ein Zustandsübergang wird durch ein (Übergangs-)Ereignis<br />
hervorgerufen und durch einen Pfeil dargestellt.<br />
Bei jedem Zustandsübergang kann eine Aktion ausgelöst werden.<br />
Jedes Zustandsdiagramm muss genau einen Anfangszustand<br />
haben (Symbol: ).<br />
Endzustände (Symbol:<br />
) darf es beliebig viele geben.<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 11 / 28
Übung<br />
UML-Diagramme<br />
Ü2: Buch, Aufgabe 2.6<br />
TA8(a) in yEd-Textfeld bearbeiten, yEd-Datei hochmoodeln<br />
Ü3: Buch, Aufgabe 2.13<br />
Mit ausgelösten Aktionen ausführen. yEd-Datei hochmoodeln<br />
Ü4: Buch, Aufgabe 2.14<br />
Texteditor eingemoodelt<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 12 / 28
UML-Diagramme<br />
Übung<br />
Ü5: Zahnbürste<br />
Eine elektrische Zahnbürste lässt sich als Automat mit genau zwei<br />
Zuständen (an und aus) darstellen. Das Ereignis für einen<br />
Zustandsübergang ist das Drücken den An-/Ausknopfes, die<br />
ausgelöste Aktion das Laufen bzw. Stoppen des Motors.<br />
(a) Zeichne das ZÜD.<br />
(b) Ergänze das ZÜD um einen dritten Zustand lädt, im dem sich die<br />
Bürste beim Laden befindet. Trage auch die dazugehörigen<br />
Ereignisse und ausgelösten Aktionen ein.<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 13 / 28
Übung<br />
UML-Diagramme<br />
Ü6: verliebt-verlobt-verheiratet-getrennt<br />
Bekanntlich können zwei Personen verliebt, verlobt, verheiratet oder<br />
getrennt sein. Erstelle ein dazu passendes ZÜD mit<br />
Übergangsereignissen und ausgelösten Aktionen.<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 14 / 28
Gliederung<br />
Implementation<br />
1 Einführung<br />
2 Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
3 Implementation<br />
4 Bedingungen und ausgelösten Aktionen in ZÜD<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 15 / 28
Bespiel: Speiseaufzug<br />
Implementation<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 16 / 28
Bespiel: Speiseaufzug<br />
Implementation<br />
Die Zustände werden in der<br />
Variable zustand<br />
gespeichert, die Übergänge<br />
durch die Methode<br />
abschickenZu modelliert<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 16 / 28
Implementation<br />
Speiseaufzug Attributdeklaration<br />
1 public class Speiseaufzug(){<br />
2<br />
3 private int zustand;<br />
4<br />
5 //Konstruktor<br />
6 //Methoden<br />
7 }<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 17 / 28
Implementation<br />
Speiseaufzug — Konstruktor<br />
1 public Speiseaufzug(){<br />
2 zustand = 0;<br />
3 }<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 18 / 28
Implementation<br />
Speiseaufzug — Methode abschicken(stockwerk)<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 19 / 28
Implementation<br />
Speiseaufzug — Methode abschicken(stockwerk)<br />
1 public void abschickenZu(int stockwerk){<br />
2<br />
3 if ( zustand == 0 ){<br />
4 if ( stockwerk==1 ){ zustand = 1; }<br />
5 else {<br />
6 if ( stockwerk==2 ){zustand = 2; }<br />
7 }<br />
8 }<br />
9 if ( zustand == 1; ){<br />
10 ...<br />
11 }<br />
12 }<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 19 / 28
Implementation<br />
Zusammenfassung<br />
Implementation von Zustandsübergangsdiagrammen<br />
ZÜD werden wie folgt implementiert:<br />
ein Attribut zustand deklarieren,<br />
im Konstruktor dem Attribut zustand den Anfangszustand<br />
zuweisen,<br />
Methode(n) für die Zustandsübergänge implementieren.<br />
Dabei müssen in einer Fallunterscheidung für alle Zustände alle<br />
Übergänge implementiert werden.<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 20 / 28
Implementation<br />
Übung<br />
Ü7: Speiseaufzug<br />
Material: Paket Speiseaufzug2Vorlage für TA c und d.<br />
(a) Implementiere die Klasse Speiseaufzug wie oben beschrieben.<br />
(b) Ergänze die Methode positionGeben(), die dem Benutzer auf der<br />
Konsole angibt, in welchem Stockwerk sich der Aufzug befindet.<br />
(c) In dem Paket Speiseaufzug2Vorlage wurde die Methode<br />
abschicken() mit einer sogenannten switch-case-Anweisung<br />
umgesetzt. Beschreibe in Worte, wie sie funktioniert, worin ihr<br />
Vorteil besteht und welche Aufgabe der break-Befehl hat.<br />
(d) die Methode abschicken() kann noch einfacher geschrieben<br />
werden. Wie?<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 21 / 28
Übung<br />
Implementation<br />
Ü8: Kühlschrank<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 22 / 28
Gliederung<br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
1 Einführung<br />
2 Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
3 Implementation<br />
4 Bedingungen und ausgelösten Aktionen in ZÜD<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 23 / 28
Bedingungen und ausgelösten Aktionen in ZÜD<br />
ZÜD mit Bedingungen und ausgelösten Aktionen<br />
ZÜD mit Bedingungen und ausgelösten Aktionen<br />
In ZÜD können Ereignisse (z.B. Getränk wählen) ergänzt werden<br />
durch Bedingungen (z.B. Getränk vorhanden). Der Übergang findet<br />
nur statt, wenn die Bedingung den Wert true liefert.<br />
Mit dem dem Übergang kann eine Aktion ausgelöst werden (z.B.<br />
Getränk ausgeben)<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 24 / 28
Übung<br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
Ü9: Getränkeautomat<br />
Ergänze das ZÜD des oben angegebenen Getränkeautomaten um<br />
den Zustand bereit und vervollständige das Diagramm durch<br />
Übergänge mit Bedingungen und ausgelösten Aktionen.<br />
Folgende Ereignisse, Bedingungen bzw. Aktionen müssen enthalten<br />
sein: genug bezahlt, Becher nehmen, Anzeige aktualisieren.<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 25 / 28
Bedingungen und ausgelösten Aktionen in ZÜD<br />
Übung<br />
Ü10: Tresor<br />
(a) Aufgabe 2.39<br />
(b) Implementiere die Klasse Tresor nach dem im Buch auf S. 55<br />
abgebildeten Zustandsdiagramm.<br />
Hinweise<br />
Du musst zumindest die Attribute zustand, anzahlFehlversuche<br />
und pin deklarieren<br />
Dem Konstruktor soll die notwendige PIN als Parameter übergeben<br />
werden.<br />
Implementiere die Methoden oeffnen und verriegeln.<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 26 / 28
Übung<br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
➥Ü11: Soziales Netzwerk<br />
Ü12: 2.51<br />
Ü13: 2.52<br />
Ü14: Wie Geht’s<br />
M. Jakob (<strong>Gymnasium</strong> <strong>Pegnitz</strong>) <strong>Zustandsmodelle</strong> 9. April 2013 27 / 28