VU Objektorientierte Modellierung Übung 4 188.391, SS2007 Tutorenstunden: Di. 8.5.2007 bis Fr. 11.5.2007 Übungsgruppen: Mo. 14.5.2007 bis Fr. 18.5.2007 Aufgabe 1: Sequenzdiagramm Gegeben ist das in Abbildung 1 dargestellte (vereinfachte) Sequenzdiagramm mit sechs Ereignissen (a-f ). sd bsp : A : B : C : D : E a b c d e f Abbildung 1: Sequenzdiagramm a) Geben Sie alle möglichen Sequenzen von Ereignissen an. Trace 1: a b c e d f Trace 2: d a b c e f Trace 3: a d b c e f Trace 4: a b d c e f Trace 5: a b c d e f
b) Ändern Sie das ursprüngliche Sequenzdiagramm so ab, dass die Ereigniseintritte in jedem Fall in alphabetischer Reihenfolge stattfinden. Lösung UE 4_1.3 sd bsp : A : B : C : D : E strict a b c d e f Abbildung 2: Sequenzdiagramm Lösung 1b c) Ändern Sie das ursprüngliche Sequenzdiagramm so ab, dass das Ereignis d in jedem Fall direkt nach Ereignis c folgen muss. Geben Sie weiter alle nun möglichen Sequenzen von Ereignissen an. Lösung UE 4_1.4 sd bsp : A : B : C : D : E a strict b c d e f Abbildung 3: Sequenzdiagramm Lösung 1c
d) Ändern Sie das ursprüngliche Sequenzdiagramm so ab, dass folgende Sachverhalte zusätzlich modelliert sind: Führen Sie ein lokales Attribut x (Integer) ein. a und b werden ausgeführt, falls x=1, ansonsten werden c und d ausgeführt c und d werden 14 mal ausgeführt Lösung UE 4_1.5 sd bsp x:int : A : B : C : D : E alt [x=1] a Loop (14) d b c e f Abbildung 4: Sequenzdiagramm Lösung 1d
Aufgabe 2: Verhaltensmodellierung mittels Sequenzdiagramm Gegeben ist das Klassendiagramm der Komponenten eines Taschenrechners (siehe Abb. 5). Die Aufgaben der einzelnen Komponenten sind wie folgt: Keyboard wartet auf Tastatureingaben und liefert das eingegebene Zeichen zurück (Operation getkey()). Mögliche gelieferte Zeichen sind 0 bis 9 sowie +, -, *, / und =. Display zeigt eine Zahl an (Operation show). ALU berechnet einen ganzzahligen Ausdruck (Operation compute); der Ausdruck ist bestimmt durch zwei Zahlen (op1, op2) und einen Rechenoperator (o). Buffer speichert eine Zahl (Operation set bzw. get); außerdem kann eine Ziffer zur bereits gespeicherten Zahl angehängt werden (Operation append). Bspw., nach set(1) und append(2) gilt value=12. Controller steuert den Taschenrechner (Operation main). Ein Controller c benutzt dazu ein Keyboard k, ein Display d, eine ALU a, und zwei Buffer b1 und b2. b1 wird benutzt, um das Zwischenergebnis nach Eingabe eines Operators zu speichern, b2 speichert die jeweils aktuelle Eingabe, welche nach jeder Zifferneingabe per append erweitert wird. Alle Operationen sind synchron, d.h., blockierend. Display value:int show(n:int) Keyboard getkey():char ALU compute(o:char, op1:int, op2:int):int Controller operator:char main() Buffer value:int set(value:int) get():int append(digit:char) Abbildung 5: Klassendiagramm Taschenrechner Der Taschenrechner verhält sich wie in folgendem Szenario dargestellt (wie der Standard Taschenrechner von Windows): Eingabe Anzeige 1 1 2 12 + 12 3 3 * 15 4 4 = 60 Gesucht ist ein Sequenzdiagramm, welches die Interaktionen zwischen den Komponenten des Taschenrechners beim gegebenen Szenario 1 2 + 3 * 4 = darstellt. Gehen Sie dabei davon aus, dass 1 2 + bereits geschehen ist, d.h., das Sequenzdiagramm soll den weiteren Ablauf mit den Eingaben 3 * 4 = darstellen. Geben Sie außerdem den Zustand der Komponenten nach 1 2 + explizit an.
:Keyboard :Display :Controller :ALU b1:buffer b2:buffer getkey getkey:3 getkey getkey:* value=12 operator=+ value=12 set(3) set show(3) show get get:12 get get:3 show(15) show compute(+,12,3) compute:15 set(15) set getkey getkey:4 getkey getkey:= show(4) show set(4) set get get:15 get get:4 show(60) show compute(*,15,4) compute:60 set(60) set
Aufgabe 3: Verhaltensmodellierung mittels Zustandsdiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Zustandsdiagramm beschäftigt. Erklären Sie die Konzepte Ereignis und Aktivität. Welche Art von Aktivitäten gibt es innerhalb eines Zustands? Wann erfolgt eine Transition (von einem Zustand in einen anderen)? Welche Arten von Ereignissen gibt es? Nennen Sie jeweils zwei Beispiele (die nicht in den Folien stehen). Erklären Sie die Konzepte von UND- sowie ODER-Verfeinerung. Geben Sie jeweils ein kleines Beispiel (das nicht in den Folien steht). Aufgabe 4: Zustandsdiagramm Kassenautomat Ein Kassenautomat eines Parkhauses funktioniert wie folgt: Wenn der Automat nicht ausgeschalten ist, befindet er sich in einem Grundzustand und wartet auf eine Eingabe. Der Automat besitzt ein Lesegerät für das Ticket, welches bezahlt werden soll. Zunächst wird dieses Ticket in die Maschine gezogen. Ist es ungültig, wird es wieder ausgegeben, eine Fehlermeldung wird angezeigt und der Zahlvorgang wird abgebrochen. Bei einem gültigen Ticket wird der offene Betrag angezeigt. Nun kann zwischen Bezahlung per Bankomatkarte und Barzahlung gewählt werden (die Auswahl erfolgt über einen Knopf). Wird Bankomatkarte ausgewählt, wartet der Automat solange, bis eine Karte in den dafür vorgesehenen Einschub gesteckt wird. Der Zahlungsvorgang wird abgebrochen, wenn innerhalb von zwei Minuten keine Bankomatkarte eingeschoben wurde oder der Code vom Inhaber der Karte drei Mal falsch eingegeben wurde. Ticket und Karte werden dann wieder ausgegeben. Ansonsten muss der Zahlungsvorgang noch mit dem OK-Knopf bestätigt werden. Ist dieses geschehen, wird ein Ticket, das für die Ausfahrt verwendet werden kann, ausgegeben. Wurde die Variante der Barzahlung gewählt, muss der Parkhausbenutzer solange Geld in den Automaten werfen, bis der zu begleichende Betrag erreicht oder überschritten ist. Dann wird das Ausfahrtsticket und gegebenenfalls das Retourgeld ausgegeben. Wiederum wird nach zwei Minuten der Vorgang abgebrochen und Ticket und Geld werden zurückgegeben. Erstellen Sie ein Zustandsdiagramm zur Steuerung eines Kassenautomaten eines Parkauses.
Grundzustand Ticketeingabe Ticketprüfung do/ Gültigkeit überprüfen Abbruch do/ Ticket auswerfen; Fehlermeldung ausgeben [gültig] Display Betrag do/ Betrag anzeigen Zahlungsartauswahl [Bankomatkarte] [Barzahlung] after(2 min) Bereit Geldeinwurf after(2 min)/ Geld zurückgeben [i=3]/ BK ausgeben Karte einstecken/i=0 PIN-Eingabe entry/i++ do/ PIN einlesen exit/ PIN prüfen [OffenerBetrag>Einwurf] Geldeinwurf Einwurf prüfen /Retourgeld ausgeben [PIN korrekt & OK gedrückt]/ Bankomatkarte ausgeben Drucken exit/ Ausfahrtsticket ausgeben Abbildung 7: Zustandsdiagramm Lösung Bsp4
Aufgabe 5: Mensch-Ärgere-Dich-Nicht Geben Sie für eine Spielfigur des Spiels Mensch-Ärgere-Dich-Nicht ein Zustandsdiagramm an. Hinweise: Überlegen Sie, welche Zustände die Spielfigur haben kann. Achten Sie darauf, welche Ereignisse Transitionen auslösen. Im Starthaus Ausrücken Im Freien Vorrücken Hinauswurf durch Mitspieler [Zielhaus wird erreicht] Im Zielhaus Abbildung 8: Sequenzdiagramm Lösung Bsp5