Zustandsmodelle 1 0 0 1 Inhaltsverzeichnis - Gymnasium Pegnitz
Zustandsmodelle 1 0 0 1 Inhaltsverzeichnis - Gymnasium Pegnitz
Zustandsmodelle 1 0 0 1 Inhaltsverzeichnis - 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 />
Notes<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<br />
<strong>Inhaltsverzeichnis</strong><br />
Notes<br />
Einführung<br />
Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
Implementation<br />
Bedingungen und ausgelösten Aktionen in ZÜD
<strong>Zustandsmodelle</strong><br />
Einführung<br />
Notes<br />
Gliederung<br />
Einführung<br />
Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
Implementation<br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
3 / 25<br />
<strong>Zustandsmodelle</strong><br />
Einführung<br />
Notes<br />
Das Inselspiel<br />
Inselspiel<br />
Kristallfähre<br />
Totenkopffähre<br />
4 / 25
<strong>Zustandsmodelle</strong><br />
Einführung<br />
Notes<br />
Das Inselspiel — Zustandsdiagramm<br />
5 / 25<br />
<strong>Zustandsmodelle</strong><br />
Einführung<br />
Notes<br />
Mikrobetriebsysteme<br />
◮ Elektronische Geräte (Handy, mp3-Player,...) brauchen zur<br />
Funktion eine kleines Betriebssystem, das festlegt wie sich<br />
das Gerät sich verhalten soll.<br />
◮ Zur Entwicklung solcher Betriebssysteme werden zuerst<br />
Zustandsdiagramme entworfen.<br />
6 / 25
<strong>Zustandsmodelle</strong><br />
Einführung<br />
Notes<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 />
7 / 25<br />
<strong>Zustandsmodelle</strong><br />
Einführung<br />
Notes<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 />
8 / 25
<strong>Zustandsmodelle</strong><br />
Einführung<br />
Notes<br />
Übung<br />
• Ü1: Zustandsübergänge mit ausgelösten Aktionen, Vorlage: ZUEDUbg.graphml<br />
run:Arbeitsmaterial/ZUED/ZUEDUbg.graphml<br />
Nachfolgend sind Zustände, Ereignisse oder ausgelöste Aktionen angegeben. Ergänze<br />
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 liegen.<br />
(e) Eine Braut soll heiraten.<br />
(f) Peter Lustig soll eine E-Mail von seinem Provider abrufen können.<br />
9 / 25<br />
<strong>Zustandsmodelle</strong><br />
UML-Diagramme<br />
Notes<br />
Gliederung<br />
Einführung<br />
Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
Implementation<br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
10 / 25
<strong>Zustandsmodelle</strong><br />
UML-Diagramme<br />
Notes<br />
Zustandsdiagrame in der UnifiedModelling Language<br />
UML (Unified Modelling Language) bei<br />
Zustandsdiagrammen<br />
◮ Zustände werden durch abgerundete Rechtecke<br />
dargestellt.<br />
◮ Ein Zustandsübergang wird durch ein<br />
(Übergangs-)Ereignis hervorgerufen und durch einen Pfeil<br />
dargestellt.<br />
◮ Bei jedem Zustandsübergang kann eine Aktion ausgelöst<br />
werden.<br />
◮ Jedes Zustandsdiagramm muss genau einen<br />
Anfangszustand haben (Symbol: ).<br />
◮ Endzustände (Symbol:<br />
) darf es beliebig viele geben.<br />
11 / 25<br />
<strong>Zustandsmodelle</strong><br />
UML-Diagramme<br />
Notes<br />
Übung<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 />
12 / 25
<strong>Zustandsmodelle</strong><br />
UML-Diagramme<br />
Notes<br />
Übung<br />
• Ü5: Zahnbürste<br />
Eine elektrische Zahnbürste lässt sich als Automat mit genau zwei Zuständen (an und<br />
aus) darstellen. Das Ereignis für einen Zustandsübergang ist das Drücken den<br />
An-/Ausknopfes, die 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 Bürste beim<br />
Laden befindet. Trage auch die dazugehörigen Ereignisse und ausgelösten<br />
Aktionen ein.<br />
13 / 25<br />
<strong>Zustandsmodelle</strong><br />
UML-Diagramme<br />
Notes<br />
Übung<br />
• Ü6: verliebt-verlobt-verheiratet-getrennt<br />
Bekanntlich können zwei Personen verliebt, verlobt, verheiratet oder getrennt sein.<br />
Erstelle ein dazu passendes ZÜD mit Übergangsereignissen und ausgelösten<br />
Aktionen.<br />
14 / 25
<strong>Zustandsmodelle</strong><br />
Implementation<br />
Notes<br />
Gliederung<br />
Einführung<br />
Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
Implementation<br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
15 / 25<br />
<strong>Zustandsmodelle</strong><br />
Implementation<br />
Notes<br />
Bespiel: Speiseaufzug<br />
Die Zustände werden in<br />
der Variable zustand<br />
gespeichert, die<br />
Übergänge durch die<br />
Methode abschickenZu<br />
modelliert<br />
16 / 25
<strong>Zustandsmodelle</strong><br />
Implementation<br />
Notes<br />
Speiseaufzug Attributdeklaration<br />
1 public class Speiseaufzug<br />
(){<br />
2<br />
3 private int zustand;<br />
4<br />
5 //Konstruktor<br />
6 //Methoden<br />
7 }<br />
17 / 25<br />
<strong>Zustandsmodelle</strong><br />
Implementation<br />
Notes<br />
Speiseaufzug — Konstruktor<br />
1 public Speiseaufzug(){<br />
2 zustand = 0;<br />
3 }<br />
18 / 25
<strong>Zustandsmodelle</strong><br />
Implementation<br />
Notes<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 />
19 / 25<br />
<strong>Zustandsmodelle</strong><br />
Implementation<br />
Notes<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<br />
Zustände alle Übergänge implementiert werden.<br />
20 / 25
<strong>Zustandsmodelle</strong><br />
Implementation<br />
Notes<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 Konsole angibt,<br />
in welchem Stockwerk sich der Aufzug befindet.<br />
(c) In dem Paket Speiseaufzug2Vorlage wurde die Methode abschicken() mit einer<br />
sogenannten switch-case-Anweisung umgesetzt. Beschreibe in Worte, wie sie<br />
funktioniert, worin ihr Vorteil besteht und welche Aufgabe der break-Befehl hat.<br />
(d) die Methode abschicken() kann noch einfacher geschrieben werden. Wie?<br />
21 / 25<br />
<strong>Zustandsmodelle</strong><br />
Implementation<br />
Notes<br />
Übung<br />
• Ü8: Kühlschrank<br />
22 / 25
<strong>Zustandsmodelle</strong><br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
Notes<br />
Gliederung<br />
Einführung<br />
Zustandsdiagrame in der Unified-Modelling-Language —<br />
UML-Diagramme<br />
Implementation<br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
23 / 25<br />
<strong>Zustandsmodelle</strong><br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
Notes<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<br />
werden durch Bedingungen (z.B. Getränk vorhanden). Der<br />
Übergang findet nur statt, wenn die Bedingung den Wert true<br />
liefert.<br />
Mit dem dem Übergang kann eine Aktion ausgelöst werden<br />
(z.B. Getränk ausgeben)<br />
24 / 25
<strong>Zustandsmodelle</strong><br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
Notes<br />
Übung<br />
• Ü9: Getränkeautomat<br />
Ergänze das ZÜD des oben angegebenen Getränkeautomaten um den Zustand<br />
bereit und vervollständige das Diagramm durch Übergänge mit Bedingungen und<br />
ausgelösten Aktionen.<br />
Folgende Ereignisse, Bedingungen bzw. Aktionen müssen enthalten sein:<br />
genug bezahlt, Becher nehmen, Anzeige aktualisieren.<br />
25 / 25<br />
<strong>Zustandsmodelle</strong><br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
Notes<br />
Übung<br />
• Ü10: Tresor<br />
(a) Aufgabe 2.39<br />
(b) Implementiere die Klasse Tresor nach dem im Buch auf S. 55 abgebildeten<br />
Zustandsdiagramm.<br />
Hinweise<br />
◮ Du musst zumindest die Attribute zustand,<br />
anzahlFehlversuche und pin deklarieren<br />
◮ Dem Konstruktor soll die notwendige PIN als Parameter<br />
übergeben werden.<br />
◮ Implementiere die Methoden oeffnen und verriegeln.<br />
26 / 25
<strong>Zustandsmodelle</strong><br />
Bedingungen und ausgelösten Aktionen in ZÜD<br />
Notes<br />
Übung<br />
• Ü11: Soziales Netzwerk<br />
run:./Arbeitsmaterial/SozialesNetzwerk/SozialesNetzwerk.pdf<br />
• Ü12: 2.51<br />
• Ü13: 2.52<br />
• Ü14: Wie Geht’s<br />
27 / 25<br />
Notes