Zustand - DHBW Stuttgart

Download Report

Transcript Zustand - DHBW Stuttgart

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Verhaltensmodellierung
Seite 1
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Verhaltensmodellierung
Seite 2
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Verhaltensmodellierung
Seite 3
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Bedeutung der Zustandsautomaten
Anwendung im Projekt
•
•
•
Use Cases, deren Ablauf im wesentlichen durch Ereignisse gesteuert werden, können statt mit einem
Aktivitätsdiagramm besser mit einem Zustandsautomaten beschrieben werden
Parallele Zustandsautomaten kommen dann zum Einsatz, wenn mehrere Objekte in einem Diagramm
spezifiziert werden sollen (z.B. Prüfen einer Bestellung und Prüfen einer Zahlung)
Oberzustände sind dann sinnvoll, wenn für mehrere Zustände zum gleichen Zeitpunkt ein Übergang
zu einem neuen Zustand möglich ist (z.B. Hinzufügen des Zustands „Abgewiesen“)
Zu beachten
•
•
Zwischen Bedingungen (Wächter) und Ereignissen unterscheiden: Ereignisse kommen von außen
(entsprechen im Aktivitätsdiagramm einer anderen Swimlane), während Bedingungen selbst
abgefragt werden
Bevor man ein „neues“ Objekt definiert, ist zu überlegen, ob es sich bei der betrachteten Information
eventuell um einen „neuen“ Zustand eines schon vorhandenen Objekts handelt.
Seite 4
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat allgemein
Zustandsdiagramm (STD = state transition diagram) als endlicher Automat:
Alle Ausgangsgrößen lassen sich durch die derzeitigen und vergangenen Eingangsgrößen
herleiten; der somit erforderliche Speicher definiert die Zustände des Automaten.
Zustandsdiagramm enthält vier Basis-Komponenten:
•
Zustand, repräsentiert durch ein Rechteck (mit abgerundeten Ecken), das den Namen
des Zustands enthält; der Anfangszustand eines STD's ist extra gekennzeichnet.
•
Zustandsübergang, repräsentiert durch einen Pfeil, dessen Spitze die Richtung des
Übergangs zeigt.
Syntax: Ereignis / Aktion
•
Ereignis, das den Zustandsübergang auslöst
•
Aktion, die beim Zustandsübergang ausgeführt wird
oder
Ereignis
Aktion
Folgendes ist möglich:
•
Ein Zustandsübergang führt wieder zu sich selbst, wenn beim Auftreten des
Ereignisses eine Aktion ausgeführt wird, aber kein Zustandswechsel stattfinden soll.
•
Ein Zustand wird beim Auftreten des Ereignisses gewechselt, ohne dass eine Aktion
ausgeführt wird.
Seite 5
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Mit Hilfe des Zustandsdiagramms visualisiert man die verschiedenen Zustände eines Objekts, die es im
Laufe seines Lebens einnehmen kann, und die Funktionen, die zu Zustandsänderungen des
Objektes führen.
Ein Zustandsdiagramm besteht aus Zuständen (einer davon dient als Anfangszustand) und
Zustandsübergängen (Transitionen), die durch ein Ereignis (auch Trigger genannt) gegebenenfalls mit einer (Wächter-) Bedingung (engl. Guards) kombiniert - ausgelöst werden und
selber Aktionen auslösen können:
Ereignis [Bedingung] / Aktion.
Anfangszustand
Ereignis1 / Aktion1
Zustand0
Endzustand
(optional)
Zustand1
entry / Aktivität2
do / Aktivität3
Transition
Ereignis4
Zustand3
entry / Aktivität5
exit / Aktivität6
Ereignis3
[Bedingung]
Zustand2
Implizites
Ereignis
Ereignis2
/ Aktion4
Seite 6
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Beschreibung von Zuständen:
Zustände werden durch Zustandsvariable und (Zustands)Aktivitäten beschrieben
–
Zustandsvariable (Attribute der Klasse) haben das Format:
variable : klasse = initialwert {merkmal} {zusicherung}
–
Zustandsaktivitäten (interne Aktivitäten) können sein:
• Entry-Aktivität: nichtunterbrechbare Aktivität beim
Eintreten in den Zustand
• Exit-Aktivität: nichtunterbrechbare Aktivität beim
Verlassen des Zustands
• Do-Aktivität: unterbrechbare Aktivität mit und ohne
definiertem Ende; das Beenden einer do-Aktivität kann
zu einem Zustandswechsel führen, so dass bei der
Transition ein Ereignis nicht explizit angegeben
werden muss (implizites Ereignis).
• Verzögerte Ereignisse
• defer gibt an, dass ein Ereignis nicht im aktuellen
Zustand verarbeitet werden kann, jedoch im
nachfolgenden Zustand eine Rolle spielen könnte.
Seite 7
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Zusammengesetzter Zustand: Setzt sich aus Zuständen, Pseudozuständen und
Transitionen zusammen, steht stellvertretend für einen vollständigen
Zustandsautomaten und kann Ein- und Austrittspunkte besitzen
Seite 8
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
•
Zustände können in verschiedene sequentielle oder parallele Unterzustände aufgeteilt
werden, wenn es nötig ist, Ereignisse innerhalb eines Zustandes eines Objektes näher zu
untersuchen (Die Notation von Unterzuständen ist gleich denen von Zuständen):
Seite 9
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Beschreibung von Zustandsübergängen:
Es existieren verschiedene Formen von Ereignissen:
– Empfangsereignis (signal/call event): Empfang von (Aufruf)Nachrichten
(Operationsrufe) als asynchrone/synchrone Signale, zumeist mit Übername von
Parametern
– Zeitereignis (time event) definiert mittels eines relativen (after) oder absoluten
(when) Zeitpunkts, zu dem die Transaktion ausgelöst werden soll
– Zustandsereignis (change event) als Änderung von beobachteten Datenwerten
(logischer Ausdruck, z.B. [number < 10]), im englischen „guard“ (Wächter).
Aktionen beinhalten in der Regel das Senden von Nachrichten
(„Ausgangsereignisse“) an andere Klassen
Eine Transition feuert nur dann, wenn das zugehörende Ereignis eintritt UND die im
Wächter spezifizierte Bedingung erfüllt ist (in den Zustand TRUE wechselt)
Bei einem impliziten Ereignis wird die Transition ausgeführt, wenn die dem
Zustand verbundene Verarbeitung beendet ist (i.d.R. eine do-Aktivität).
Seite 10
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Beispiele von Zustandsübergängen:
Seite 11
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Pseudozustände:
Seite 12
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Pseudozustände:
Seite 13
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Beispiele
für
Pseudozustände:
Seite 14
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Beispiel:
• Trigger (Ereignis) und
Guard (Wächterbedingung)
können gemeinsam oder
alleine stehen
• Kreuzungspunkte
ermöglichen das
Hintereinanderschalten
verschiedener Transitionen
ohne verbindende Zustände
• Interne Aktivitäten können
durch Bedingungen
erweitert werden
• Interne Aktivitäten werden
häufig als
„Zustandsverhalten“
bezeichnet
Seite 15
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Nebenstehendes
Zustandsdiagramm hat
Fehler.
Aktivitäten und Ereignisse sind
nicht streng unterschieden.
An den Transitionen fehlen
Ereignisse (ggfs. mit
Wächtern)
Übung: Korrigieren sie
bitte.
Seite 16
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Übung:
Zustandsautomat für eine Digitale Armbanduhr
Eine einfache digitale Armbanduhr hat eine Anzeige und zwei Knöpfe, um die Uhr
zu stellen (Knopf A und Knopf B). Die Uhr hat zwei Betriebsarten:
Zeit anzeigen und Zeit einstellen.
Im Modus Zeit anzeigen werden die Stunden und Minuten angezeigt.
Sie sind durch einen blinkenden Doppelpunkt voneinander getrennt.
Im Modus Zeit einstellen gibt es die Untermodi Stunden einstellen und Minuten einstellen. Mit Knopf A
werden die Modi gewählt. Mit jedem Drücken des Knopfes wird der nächste Modus eingeschaltet.
Dabei gilt die Reihenfolge: anzeigen, Stunden einstellen, Minuten einstellen, anzeigen, usw.
In den Untermodi werden durch Drücken von Knopf B die Stunden oder Minuten jeweils um eine Einheit
vorgestellt. Die Knöpfe müssen losgelassen werden, bevor sie ein anderes Ereignis veranlassen können.
Zeichnen Sie ein Zustandsdiagramm der Uhr, indem Sie die drei Zustände
Zeit anzeigen, Stunden einstellen und Minuten einstellen verwenden.
Seite 17
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Übung: Der Automat soll gestartet werden und anschließend, nach dem Betreten von Links.Zustand1, schrittweise die Eingabesequenz
A,B,C,B,A,X,Y,Z,Y,X,P,Q verarbeiten. Vollziehen Sie die Ausführung des Automaten nach und notieren Sie die Ausgaben,
die während der Ausführung produziert werden, in der korrekten Reihenfolge.
Seite 18
Tipp: Die Bedingung in <name> prüft, ob der Zustand <name> aktiv ist.
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Unterschied zwischen einem geschachtelten und einen flachen Zustandsautomaten:
Seite 19
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Übung:
Seite 20
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Zustandsautomat
Übung für den Zusammenhang zwischen Zustands- und Klassendiagramm :
Kennzeichnen Sie die
Transitionen mit den
möglichen Ereignissen,
die den Methoden aus
der Klasse entsprechen.
Seite 21
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Anhang: Lösungen der Übungen
Lösung der Übungsaufgabe Seite 16
Seite 22
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Anhang: Lösungen der Übungen
Lösung der Übung Digitale Armbanduhr Seite 17
Seite 23
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Anhang: Lösungen der Übungen
Lösung der Übung „Pizzeria“ Seite 18:
00:00:00 Margerita
00:00:00 Roma
00:00:00 Hawaii
00:00:03 Tonno
00:00:07 Funghi
00:00:09 Hawaii
00:00:12 Tonno
00:00:15 Salami
00:00:15 Diavolo
00:00:21 Speciale
00:00:23 Calzone
00:00:26 FruttiDiMare
00:00:26 Margerita
00:00:26 Roma
Seite 24
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Anhang: Lösungen der Übungen
Lösung der Übung flaches Diagramm Seite 20:
Ein Oberzustand wird verlassen, wenn in jeder Region ein Endzustand
erreicht ist oder wenn eine Transition direkt nach außen führt.
Seite 25
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 2.5.3
Okt 2010
Objektorientierte Analyse (OOA)
Anhang: Lösungen der Übungen
Lösung der Übung auf Seite 21:
Seite 26