Upload
elsabeth-lappen
View
107
Download
0
Embed Size (px)
Citation preview
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
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
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
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.
Sequenzdiagramm
3. Beschriftung und Parameter von Nachrichten
- Angabe von Klammern, wenn Daten übergeben werden
Sequenzdiagramm
4. Lost/ Found message
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)
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
Sequenzdiagramm
- break: Ausnahmebehandlung (exception)
Sequenzdiagramm
6. Interaktionsreferenz
=Referenz auf anderes Interaktionsdiagramm, optional mit Parameterübergabe
Sequenzdiagramm
7. Schachtelung
Sequenzdiagramm
Notation Sequenzdiagramm: Überblick
Kommunikationsdiagramm
Überblick: Notation Kommunikationsdiagramm
Ü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(); } }
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
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
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):
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
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:
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.
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
Zustandsdiagramm
Überblick: Notation Zustandsdiagramm
Zustandsmuster (state pattern)• Operationen führen in Abhängigkeit vom jeweiligen Zustand
Teilaufgaben aus
Ü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.