Zustandsdiagramme

Als Basis zur Generierung der Zustandsdiagramme dienten uns die Sequenzdiagramme, an denen das zu beschreibende Objekt beteiligt ist. Die Zustände wurden meist aus den Aufrufen der Operationen abgeleitet. Falls Ergebniswerte zurückgeliefert werden, wird anhand des Resultats in den entsprechenden Folgezustand verzweigt. Eine Transition von einem Zustand in den nächsten erfolgt durch einen Operationsaufruf, dessen Ergebnis der nächste Zustand darstellt.
 
 

1. Beispiel: "Bestellposten Kundenbestellung"

Zu Beginn des Lebenszyklus eines "Bestellpostens Kundenbestellung" steht die Initialisierung, die durch das Sequenzdiagramm zu dem Anwendungsfall "Bestellung annehmen" umgesetzt wird. Die Initialisierung umfaßt die Vergabe einer laufenden Bestellpostennummer bezüglich der in Auftrag gegebenen Bestellung, die Erstellung eines Verweises auf die aufgegebene Bestellung, die Angabe des bestellten Produktes sowie die bestellte Menge im erzeugten Objekt "Bestellposten Kundenbestellung". Der Zustand des Objektes wird erst wieder durch den Operationsaufruf "kartei_zuordnen" geändert. Diese Operation ist aus dem Anwendungsfall "Bestellung bearbeiten" entstanden.  In Abhängigkeit von der auf Lager befindlichen Menge des Produktes erfolgt eine Zuordnung entweder zur Liefer-Kartei (Lagerbestand Produkt >= Menge Bestellposten) oder zur Warte-Kartei (Lagerbestand Produkt < Menge Bestellposten). Nach der erfolgreichen Auslieferung findet eine Transition zu dem Endzustand statt.

 
Abbildung 16a: Zustandsdiagramm zur Klasse "Bestellposten Kundenbestellung" - Entwurf 1

 

Guided Tour: Weiter bei den Kollaborationsdiagrammen 

Änderung am Zustandsdiagramm "Bestellposten Kundenbestellung"

Die erste Änderung ergab sich in der Umbenennung des ersten Zustandes, von "Erzeugt" nach "Initialisiert", um dem eigentlichen Status nach dem Operationsaufruf neu() gerecht zu werden. Als zweite Änderung ergab sich die Elimination des Zustandes "Wird Kartei zugeordnet", da das Ergebnis des Operationsaufrufes "neuer_eintrag()" (ehemals "kartei_zuordnen()")  nicht ein ungewisser Zustand "Wird Kartei zugeordnet" sein kann, sondern in einer konkreten Zuordnung zu einer Kartei resultiert. 
Die umfangreichste Änderung an diesem Zustandsdiagramm ergab sich jedoch aufgrund der Verfeinerung des Sequenzdiagramms zu dem Anwendungsfall "Lieferscheine erstellen". Bestand das Sequenzdiagramm in seiner ersten Fassung aus nur einem Objekt, so wurde dies unter der Hinzunahme der Objekte Verwaltung und Liefer-Kartei komplexer, so daß auch das Zustandsdiagramm für die Klasse "Bestellposten Kundenbestellung" angepaßt werden mußte. Dies drückt sich in den beiden Zuständen "Nicht zugeordnet zu Lieferschein" und "Zugeordnet zu Lieferschein" aus. Eine Berücksichtigung einer nicht erfolgreich verlaufenen Auslieferung ergab sich durch die Transition "Rücklauf", die für einen nicht ausgelieferten Bestellposten wieder den Aufruf der  Operation "lieferscheine erstellen()" möglich macht. Weil diese Zustände dem Zustand "Zugeordnet zu Liefer-Kartei" untergeordnet sind, wurde dies durch einen sie umschließenden Kasten verdeutlicht.

 
Abbildung 16b: Zustandsdiagramm zur Klasse "Bestellposten Kundenbestellung" - endgültige Version

 

Guided Tour: Weiter bei der 1. Änderung der Klassen "Lieferkartei" und "Lieferschein" 


Hintergrundinformationen

Hinweise zur Erstellung

Einordnung in das Gesamtbild der UML


Buch: Weiter bei den Implementierungsdiagrammen

Buch: Zurück zu den Aktivitätsdiagrammen