25
Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Embed Size (px)

Citation preview

Page 1: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Objektorientierter Entwurf

Dynamische Konzepte im OOD:

Szenario

Zustandsautomat

Page 2: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Szenario

Wiederholung: Was ist ein Szenario?

• 1 Anwendungsfall= Bündel von Szenarios• 1 Szenario= Beschreibung eines Anwendungsfall- Objekts• Zeigt eine Sequenz von Verarbeitungsschritten, die unter bestimmten Bedingungen auszuführen sind• Beschreibt eine Folge von Ereignissen und Systemreaktionen, die bei der Ausführung eines System(-teil)s auftreten

Page 3: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Szenario Beispiele: Use Case: entleihe Medium

Szenario 1:

Name: entleihe Medium (Standardfall Ausgabe)

Bedingungen:

Medium verfügbar

Medium nicht vorgemerkt

Entleiherausweis gültig

Entleiherkonto ausgeglichen

Ergebnis:

Medium wird ausgegeben

Szenario 2:

Name: entleihe Medium (Medium vorgemerkt)

Bedingungen:

Medium ist verfügbar

Medium wurde vorgemerkt

Ergebnis:

Medium wird ausgegeben, wenn Entleiher= Vormerker

Wenn Entleiher!=Vormerker, Vormerkung vorschlagen

Page 4: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm: Erweiterungen für den Entwurf (nach UML 2.0)

1. Synchrone und asynchrone Nachricht

Synchrone Nachricht: Der Sender der Nachricht wartet, bis der Empfänger die Verarbeitung komplett durchgeführt hat. Erst wenn der Empfänger eine Antwortnachricht zurückschickt, setzt der Sender die Verarbeitung fort.

UML: Pfeil mit gefüllter Pfeilspitze

Rückantwort: gestrichelter Pfeil mit offener Spitze

Asynchrone Nachricht: Der Sender der Nachricht fährt mit seiner eigenen Verarbeitung fort, ohne auf die Beendigung der Verarbeitung des Empfängers zu warten. Es entsteht parallele (nebenläufige) Verarbeitung.

UML: Pfeil mit offener Spitze

Page 5: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm

2. Erzeugen und Löschen von Kommunikationspartnern

Nach UML 2.0 wird ein neuer Kommunikationspartner im Sequenzdiagramm über einen gestrichelten Pfeil mit offener Spitze erzeugt, das Löschen des Kommunikationspartner wird durch ein großes X am Ende des Aktivitätsbalkens grafisch dargestellt.

Page 6: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm

3. Beschriftung und Parameter von Nachrichten

- Angabe von Klammern, wenn Daten übergeben werden

Page 7: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm

4. Lost/ Found message

Page 8: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm

5. Kombinierte Fragmente

=Partitionierung des Sequenzdiagramms; mit Hilfe von Fragmenten können verschiedene Interaktionen deutlicher dargestellt werden:

- opt: optionale Interaktion (if-then)- alt: alternative Abläufe (if-then-else, switch)

Page 9: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm

- loop: Schleife (for, while-do, do-

while) loop (min,max): min und max

geben die Mindest-/ Höchstzahl der Wiederholungen an

loop (min,*): unendlich viele Wdh.

loop (min): Anzahl der Mindestwiederholungen

loop: Schleife wird 0 bis unendlich mal ausgeführt

Angabe berechenbarer Ausdrücke für min und max: z.B.:

loop (i=1,i<100) optional: Angabe einer

Bedingung

Page 10: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm

- break: Ausnahmebehandlung (exception)

Page 11: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm

6. Interaktionsreferenz

=Referenz auf anderes Interaktionsdiagramm, optional mit Parameterübergabe

Page 12: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm

7. Schachtelung

Page 13: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Sequenzdiagramm

Notation Sequenzdiagramm: Überblick

Page 14: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Kommunikationsdiagramm

Überblick: Notation Kommunikationsdiagramm

Page 15: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Übung 1 Ziel: Sequenzdiagramm mit Erweiterungen erstellen Gegeben ist das folgende Java-Programm. Wir gehen hier davon aus, dass die

Operation doMore() von einem Objekt mit der Bezeichnung einObjekt aktiviert wird. Zuerst werden die beiden Objekte bzw. Kommunikationspartner b:ClassB und c:ClassC erzeugt. In der Schleife nimmt die Laufvariable j nacheinander die Werte l bis 5 an und ruft bei jedem Durchgang die Operation a.doLess(j) auf, die wiederum die Operation b.work(j) aktiviert. Anschließend wird die Operation calculateP(data) auf das Objekt von A angewendet. In Abhängigkeit des errechneten Werts von p werden entweder die Operationen b.doSomethingElse() und b.work(p) oder die Operation c.doSomethingElse() aufgerufen.

class ClassB { public void doSomething { ... } public void work (int w) { ... } }class ClassC { public void doSomethingElse() { ... } }class ClassA { private ClassB b; private ClassC c; public void doLess(int param) { b.work(param);} public int calculateP(int param) { int p = 2 * param; return p;} public void doMore(int data) { b = new ClassB();c = new ClassC();

for (int j = 1; j <= 5; j++) doLess (j); int p = caIculateP (data); if (p <1){ b.doSomething();b.work(p);} else c.doSomethingElse(); } }

Page 16: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Zustandsautomat

Zustandsautomat= Zustände+ Übergänge (Transitionen)

• Zustand: Zeitspanne, in der ein Objekt auf ein Ereignis wartet (andauernde Aktivität)

• Ereignis: tritt zu einem bestimmten Zeitpunkt auf und hat (konzeptionell) keine Dauer; kann Aktion innerhalb eines Zustands auslösen (durch Operationen realisiert)

• Transition: Durch ein Ereignis ausgelöster Zustandswechsel (Aktion)• Ein Objekt kann sukzessive mehrere Zustände durchlaufen

• Momentaner Zustand und eintretendes Ereignis konstituieren den

Folgezustand

Page 17: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Zustandsdiagramm: Erweiterungen für das OOD

1. Pseudozustände

• Dienen zur Modellierung von Ablauflogik innerhalb eines Zustandsdiagramms

1.1 Anfangszustand Startpunkt für die Ausführung des Zustandautomaten Genau eine Transition führt in den ersten „echten“ Zustand Der Übergang vom Start- zum Folgezustand wird i.d.R. nicht

mit einem Ereignis benannt

inBetrieb

Page 18: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Zustandsdiagramm

1.2 Entscheidungszustand Modellierung von Alternativen, abhängig vom Ergebnis der

vorherigen Aktivität Dynamic conditional branch: die jeweilige Alternative wird

aktuell berechnet Notationsalternativen (UML 2.0):

Page 19: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Zustandsdiagramm

1.3 Junction Ermöglicht die Verknüpfung

von Transitionen ohne dazwischen liegenden Zustand

Eine junction muss mindestens eine eingehende und eine ausgehende Transition besitzen

Static conditional branch: die verknüpfte Transition ist nicht abhängig von einer vorherigen Aktivität

Page 20: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Zustandsdiagramm 1.4 Terminator (terminate pseudo state) Beendigung der Verarbeitung des Zustandsautomaten Zeigt an, dass Objekte dynamisch gelöscht werden; im

Gegensatz zum „normalen“ Ende des Zustandsautomaten (Modellierung mittels Bullauge, in UML 2.0 ein echter Zustand) wird also angezeigt, dass explizit ein Objekt gelöscht wird:

Page 21: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Zustandsdiagramm1.5 Historie Markierung, durch die angezeigt wird, dass ein Zustandsautomat

zum zuletzt eingenommenen Zustand zurückkehrt Flache/ tiefe Historie: besteht ein Zustandsdiagramm aus mehreren zusammengesetzten

Unterzuständen in verschiedenen Ebenen, so wird durch Verwendung des tiefen Historienindikators angezeigt, dass sich der Zustandsautomat auch solche tiefer liegenden Vorzustände merkt bzw. dahin zurückkehrt.

Page 22: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Zustandsdiagramm

1.6 Entry- / Exit point, Unterzustandsautomat

Eingangs-/ Ausgangspunkt kennzeichnen den Übergang in einen Teilzustandsautomaten

Verwendung: wenn bessere Übersichtlichkeit erreicht wird; bei Modellierung von Unterzuständen in separaten Diagrammen

Unterzustandsautomat: verwenden, um häufig wiederkehrendes Verhalten zu spezifizieren

Page 23: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Zustandsdiagramm

Überblick: Notation Zustandsdiagramm

Page 24: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Zustandsmuster (state pattern)• Operationen führen in Abhängigkeit vom jeweiligen Zustand

Teilaufgaben aus

Page 25: Objektorientierter Entwurf Dynamische Konzepte im OOD: Szenario Zustandsautomat

Übung 2

Ziel: Zustandsdiagramm modellieren

Eine Tresortür ist zu öffnen. Zu Beginn ist die Tür im Zustand verriegelt. Ein eingegebener Code wird geprüft. Falls er korrekt ist, wird die Tür entriegelt und kann dann innerhalb von 3 Sekunden geöffnet werden. Geschieht dies nicht, geht die Tür nach dieser Zeit in den Zustand verriegelt über. Ist der Code falsch, dann hat der Benutzer noch zwei weitere Versuche. Bei der dritten falschen Code-Eingabe geht die Tresortür für 10 Minuten in den Zustand blockiert über. Die Verarbeitung endet, wenn die Tür erfolgreich geöffnet wurde oder die Blockierung beendet ist.