Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektorientierter Entwurf

Ähnliche Präsentationen


Präsentation zum Thema: "Objektorientierter Entwurf"—  Präsentation transkript:

1 Objektorientierter Entwurf
Dynamische Konzepte im OOD: Szenario Zustandsautomat

2 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

3 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) Medium ist verfügbar Medium wurde vorgemerkt Medium wird ausgegeben, wenn Entleiher= Vormerker Wenn Entleiher!=Vormerker, Vormerkung vorschlagen

4 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

5 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.

6 Sequenzdiagramm 3. Beschriftung und Parameter von Nachrichten
- Angabe von Klammern, wenn Daten übergeben werden

7 Sequenzdiagramm 4. Lost/ Found message

8 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)

9 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

10 Sequenzdiagramm break: Ausnahmebehandlung (exception)

11 Sequenzdiagramm 6. Interaktionsreferenz =Referenz auf anderes Interaktionsdiagramm, optional mit Parameterübergabe

12 Sequenzdiagramm 7. Schachtelung

13 Sequenzdiagramm Notation Sequenzdiagramm: Überblick

14 Kommunikationsdiagramm
Überblick: Notation Kommunikationsdiagramm

15 Ü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(); }

16 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

17 Zustandsdiagramm: Erweiterungen für das OOD
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

18 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):

19 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

20 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:

21 Zustandsdiagramm 1.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.

22 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

23 Zustandsdiagramm Überblick: Notation Zustandsdiagramm

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

25 Ü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.


Herunterladen ppt "Objektorientierter Entwurf"

Ähnliche Präsentationen


Google-Anzeigen