Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1
Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe) finden statt, wenn der Preis einer Reise berechnet wird? 2
ic class Reise { private int dauer; private int gefahrenekm; private Mietwagen mietwagen; private Hotel hotelbuchung; Beispiel: Reise public int berechnemietpreis(int dauer, int km){ return typ.berechnepreis(dauer, km); public int berechnereisepreis(){ int mietwagenpreis = mietwagen.berechnemietpreis(dauer, gefahrenekm); int hotelpreis = hotelbuchung.berechneuebernachtungspreis(dauer); return mietwagenpreis + hotelpreis; blic class Hotel { private int zimmerpreis; public class Fahrzeugtyp { private int grundpreis; private double kmpreis; public int berechneuebernachtungspreis(int dauer){ return zimmerpreis * dauer; public int berechnepreis(int mietdauer, int km){ return mietdauer * grundpreis + (int)(km * kmpreis); 3
ic class Reise { private int dauer; private 1. Start int gefahrenekm; private Mietwagen mietwagen; private Hotel hotelbuchung; Beispiel: Reise 1.1. public int berechnereisepreis(){ int mietwagenpreis = mietwagen.berechnemietpreis(dauer, gefahrenekm); int hotelpreis = hotelbuchung.berechneuebernachtungspreis(dauer); return mietwagenpreis + hotelpreis; 1.2. public int berechnemietpreis(int dauer, int km){ return typ.berechnepreis(dauer, km); 1.1.1. blic class Hotel { private int zimmerpreis; public class Fahrzeugtyp { private int grundpreis; private double kmpreis; public int berechneuebernachtungspreis(int dauer){ return zimmerpreis * dauer; public int berechnepreis(int mietdauer, int km){ return mietdauer * grundpreis + (int)(km * kmpreis); 4
Methodenaufrufe Die Reihenfolge der Methodenaufrufe ist also: 1. berechnereisepreis (), Klasse Reise 1.1 berechnemietpreis (), Klasse Mietwagen 1.1.1 berechnepreis (), Klasse Fahrzeugtyp 1.2 berechneuebernachtungspreis(), Klasse Hotel Diese kann man ins Objektdiagramm eintragen 5
Kommunikationsdiagramm Kommunikationspartner, i.d.r. ein Objekt. Da es aber nicht unbedingt ein Objekt sein muss, ist die Angabe ganz allgemein Bezeichnung:Typ, ohne Unterstreichung Sequenznummer, gibt die Aufrufreihenfolge wieder 6
Beispiel mit bedingten und mehrfachen Methodenaufrufen public int getgesamtpunktzahl(){ if(!berechnet){ berechnepunktzahl(); return gesamtpunktzahl; private void berechnepunktzahl(){ int punkte; for(aufgabe a:aufgaben){ punkte = a.getpunktzahl(); gesamtpunktzahl = gesamtpunktzahl + punkte; berechnet = true; Methodenaufruf nur unter bestimmten Bedingungen public int getpunktzahl(){ return punktzahl; Aufruf einer Methode aus derselben Klasse Der Methodenaufruf befindet sich in der for-schleife und erfolgt mehrfach 7
Beispiel mit bedingten und mehrfachen Methodenaufrufen Variablenname für Rückgabe Nützlich, falls man den Wert anderswo im Diagramm z. B. als Parameter noch einmal verwenden will Mehrfacher Methodenaufruf mit Angabe der Wiederholungsbedingung Es sind auch andere Angaben möglich, z. B. [für alle Aufgaben] Nachricht an sich selbst Mehrfachteilnehmer Bedingung für Methodenaufruf 8
Zeit Sequenzdiagramm Im Gegensatz zum Kommunikationsdiagramm wird der Nachrichtenaustausch nicht im Zusammenhang mit den Beziehungen zwischen den Objekten angezeigt, sondern mit dem Fokus auf der zeitlichen Reihenfolge Aufruf Rückgabe Lebenslinie des Kommunikationsteilnehmers Aktivierung: Der Kommunikationsteilnehmer ist mit der Bearbeitung einer aufgerufenen Methode beschäftigt 10
Kommunikations- und Sequenzdiagramm im Vergleich Kommunikationsbeziehungen (z. B. Assoziationen) nur im Kommunikationsdiagramm Darstellung von Aufrufreihenfolge und Schachtelung durch: 1. Nummerierung 2. Auftragen der zeitlichen Reihenfolge 11
Bedingte und mehrfache Methodenaufrufe Variablenname für Rückgabe Nützlich, falls man den Wert anderswo im Diagramm z. B. als Parameter noch einmal verwenden will Nachricht an sich selbst Das Objekt ist nun doppelt aktiviert: getgesamtpunktzahl() ist noch nicht abgeschlossen und wartet. Zusätzlich führt Objekt k:klausur berechnepunktzahl() aus Kombiniertes Fragment opt (optional) mit Bedingung Kombiniertes Fragment loop (Schleife) mit Bedingung Erneute Angabe des Methodenaufrufs bei der Rückgabe möglich 12
Kommunikations- und Sequenzdiagramm im Vergleich 13
Weitere kombinierte Fragmente und Referenz Kombiniertes Fragment alt (Alternativen) mit beliebig vielen durch Bedingungen definierten Fällen Break (Abbruch), z. B. einer Schleife Ref (Referenz), d. h. Verweis auf ein anderes Sequenz- oder Kommunikationsdiagram m 14
Aufruf von Klassenmethoden Gegeben ist das folgende Klassendiagramm einer Bibliotheksanwendung: 16
Aufruf von Klassenmethoden und transiente Beziehungen Das gefundene Buch-Objekt wird in der Variablen b zurückgegeben. findebuch() ist eine Klassenmethode, die Nachricht sollte an die Klasse selbst gehen, nicht an ein Objekt Modellierungstools erlauben aber oft nur Objekte. {transient Es handelt sich um das von der Klasse zurückgegebene Buch b Da man die Klasse immer über ihren Namen ansprechen kann, hat jedes Objekt automatisch eine Kommunikationsbeziehung zu ihr. Es existiert keine Assoziation zwischen Anwendung und Buch. Da die Anwendung von der Klasse eine Referenz auf das Buchobjekt bekommen hat, kennt die Anwendung das Buchobjekt momentan. Daher besteht eine transiente (flüchtige) Kommunikationsbeziehung. 17
Aufruf von Klassenmethoden Das vorige Beispiel als Sequenzdiagramm: 18
Anlegen und Löschen von Objekten Objekt existiert schon zu Beginn des betrachteten Szenarios Konstruktor Objekt wird neu angelegt Destruktor Objekt wird gelöscht Objekt existiert nach Ende des betrachteten Szenarios weiter 19
Anlegen und Löschen im Kommunikationsdiagramm Anlegen und Löschen im Kommunikationsdiagramm nicht so deutlich darstellbar Angabe von Eigenschaften möglich: {new Das Objekt wird neu angelegt (und besteht am Ende weiter) {destroyed Das Objekt bestand vorher und wird gelöscht {transient Das Objekt wird im betrachteten Szenario neu angelegt und wieder gelöscht {transient 20
Einsatz von Interaktionsdiagrammen Interaktionsdiagramme werden eingesetzt, wenn es darum geht, kompliziertere Nachrichtenaustausch- Sequenzen zu entwickeln, zu verstehen und für andere zu dokumentieren Nur dort, wo es einen Nutzen bringt Keine Modellierung des gesamten Systems Es werden meist nur ausgewählte Szenarien exemplarisch modelliert Z. B. nur ein bestimmter Fall Ggf. wird ein anderer Fall separat modelliert, damit die Modelle nicht zu komplex werden. 21
Auswahl zwischen Kommunikations- und Sequenzdiagramm Beide stellen im Prinzip das Gleiche dar Wähle ein Kommunikationsdiagramm Wenn der Nachrichtenaustausch im Zusammenhang mit den Beziehungen zwischen den Objekten betrachtet werden soll Wenn die Verschachtelung der Methodenaufrufe nicht zu tief sind und nicht zu viele verschiedene Alternativen, Schleifen u. ä. abgebildet werden sollen Wähle ein Sequenzdiagramm Wenn die zeitliche Reihenfolge und die Verschachtelung der Methodenaufrufe grafisch sichtbar werden soll Wenn es mehrere Alternativen, Schleifen u. ä. gibt. 22