Bisher konnte mit dem Klassen- und Objekt-Diagramm nur der statische Zustand und die Beziehungen zwischen den den Klassen und Objekten dargestellt werden:
Nun soll ein weiterer Diagrammtyp die dynamischen Vorgänge darstellbar machen - das Sequenzdiagramm:
Das Sequenzdiagramm hilft bei der Suche nach Methoden! |
---|
Allgemeines zu Sequenzdiagrammen
Im Sequenzdiagramm soll festgehalten werden, was nach einem bestimmten Ereignis passiert, z.B.:
- Nutzer klickt auf Button
- Paint-Methode wird aufgerufen
- Eine Exeption tritt auf
- Ein Timer-Event (oder Thread) tritt auf
- usw.
Es wird jeweils ein Diagramm für jedes Ereignis erstellt, nicht alles in ein Diagramm zeichnen!
Bei der OOA, dem Finden der Anwendungsfälle (Use Cases) überlegt man zunächst, welche Sequenzen auftreten können.
Konstruktor und Destruktor
Beispiel: Ein Objekt soll erzeugt werden, z.B. eine Spinne oder ein Datensatz durch eine Aktion eines Anwenders.
Standartkonstruktor und Destruktor
Der User Klickt auf die Spinnenbox "sbox:SpiderBox" und erzeugt eine neue Spinne. In diesem Diagramm wird der Standart-Konstruktor <<create>> aufgerufen, Hinweis zu Java und C++: Bei Java und C++ heist der Konstruktor wie die Klasse, hier also Spider(). Hinweis zu Delphi: Bei Delphi heist der Konstruktor Spider.create()?? DestruktorIrgendwann stirbt die Spinne, es wird der Standart-Destruktor <<destoy>> Hinweis zu Java: Bei Java ist kein explizieter Destruktor-Aufruf nötig, wenn ein Objekt nicht mehr referenziert wird, also kein Verweis mehr auf es existiert, wird es automatisch beim nächsten Durchlauf des Garbage-Collectors entfernt. Hinweis zu C++ und Delphi: Hier ist ein Destruktor unbedingt erforderlich, sonst kann es zu Speicherproblemen kommen, "Alles voller Leichen".. |
Eigener Konstruktor
Eine eigene Konstruktor-Methode create(x:Integer) wird aufgerufen und initialisiert das Objekt. Thema "Überladen von Methoden" Thema "Klassen-Methoden" Die click()-Methode der sbox wird nach dem Aufruf des Spinnen-Konstruktors erst weiterbearbeitet, wenn der Konstruktor der Spinne fertig ist. Dieser Zusammenhang wird duch den Antwort-Pfeil dargestellt, auch wenn kein Wert zurück gegeben wird. |
Anstelle von <<create>> bzw. <<destroy>> ist alternativ auch die Angabe des Konstruktors mit Parameter bzw. des Destruktors möglich:
Konstruktor | Destruktor |
---|---|
create() | destroy() |
create(x : GZ) | |
init() | delete() |
To Do:
- Normaler Methodenaufruf
- Paint-Methode
- Selbstdelegation
- Iteration