6. objektorientierter entwurfteam.fh-kl.de/uploads/media/swe-06-entwurf-ood-v05.pdf ·...
TRANSCRIPT
![Page 1: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/1.jpg)
6. Objektorientierter Entwurf
Software Engineering
![Page 2: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/2.jpg)
Gliederung Vorlesung
� Einführung� V-Modell XT� Analyse und Anforderungsmanagement� Benutzungsoberflächen� Architektur� Entwurf� Entwurfsmuster� Persistenz� Implementierung� Konfigurationsmanagement� Testen� Abnahme, Einführung, Wartung und Pflege
Allweyer: Software Engineering
![Page 3: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/3.jpg)
Entwurfsprinzipien
� KISS – Keep it simple and stupid● Möglichst einfache und klare Implementierung bevorzugen
� YAGNI – You ain‘t gonna need it● Keine Verallgemeinerungen einführen für Dinge, die vielleicht in Zukunft
einmal benötigt werden− Beispiel: Nicht von Vornherein Setter-Methoden für alle Attribute
� Geringe Kopplung● Zwischen verschiedenen Klassen/Paketen/Komponenten
● Zyklische Abhängigkeiten vermeiden
● Fachliche und technische Aspekte trennen
� Hohe Kohäsion● Innerhalb verschiedener Klassen/Pakete/Komponenten
Allweyer: Software Engineering
![Page 4: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/4.jpg)
Verantwortlichkeiten
� Eine Funktionalität sollte in der Klasse realisiert sein, die diese Aufgabe ohne weiteres Wissen bearbeiten kann
� Negativ-Beispiel: Allwissende Klasse
Allweyer: Software Engineering
Quelle:Kleuker, Grundkurs Software Engineering mit UML.2. Aufl., Vieweg+Teubner 2011
![Page 5: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/5.jpg)
Verantwortlichkeiten
� Besser: Verteilte Funktionalität
Allweyer: Software Engineering
Quelle:Kleuker, Grundkurs Software Engineering mit UML.2. Aufl., Vieweg+Teubner 2011
![Page 6: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/6.jpg)
Offen-Geschlossen-Prinzip
� Offen für Erweiterungen, geschlossen für Änderungen● Erweiterungen sollten leicht möglich sein
● Dabei sollte der vorhandene Code möglichst wenig geändert werden müssen
� Beispiel:void draw(){
if (type.equals("circle")
drawCircle();
else if (type.equals("square")
drawSquare();
}
Allweyer: Software Engineering
Nach:Starke, Effektive Software-Architekturen.3. Aufl., Hanser 2008
![Page 7: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/7.jpg)
Offen-Geschlossen-Prinzip
� Besser:
Allweyer: Software Engineering
Nach:Starke, Effektive Software-Architekturen.3. Aufl., Hanser 2008
![Page 8: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/8.jpg)
Allweyer: Software Engineering
Entwurf der Fachkonzept-Schicht
� OOA-Modell bildet erste Version der Fachkonzept-Schicht● Diese muss nun verfeinert und überarbeitet werden, insbesondere
hinsichtlich der Effizienz und der Wiederverwendbarkeit
● Vorteil von OOA/OOD: Es findet kein Paradigmenwechsel statt
� Vorgehen:1. Modifikation der Klassenstruktur
2. Verfeinern der Attribute
3. Verfeinern der Operationen
4. Verfeinern von Assoziationen
5. Verfeinern der Vererbung
Quelle:Starke, Effektive Software-Architekturen.3. Aufl., Hanser 2008
![Page 9: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/9.jpg)
Allweyer: Software Engineering
1. Modifikation der Klassenstruktur
� Hinzufügen von Container-Klassen● Objektverwaltung wurde in der Analyse als inhärente Eigenschaft der Klassen
angesehen. Im Entwurf muss diese mit Hilfe sog. Container-Klassen modelliert werden.
� Zerlegen komplexer Klassen● Die meisten OOA-Klassen werden 1:1 übernommen● Wird die funktionale Komplexität zu hoch, sollten Teilaufgaben an detailliertere
Klassen delegiert werden� Zusammenfassen von Klassen mit starker Interaktion
● Aus Performance-Gründen können u. U. Klassen mit hoher Kopplung zusammengefasst werden
� Hinzufügen von Klassen zum Modellieren von Zwischenergebnissen● Bündelung abgeleiteter Attribute in gemeinsame Klassen
� Transformation von assoziativen Klassen zu normalen Klassen● Assoziative Klassen können nicht direkt implementiert werden und sind daher
aufzulösen
![Page 10: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/10.jpg)
Allweyer: Software Engineering
2. Verfeinern der Attribute
� Detailliertere Beschreibung● Sichtbarkeiten, Datentypen, Anfangswerte, ...
� Abgeleitete Attribute des OOA-Modells übernehmen oder in Operationen wandeln
● Dynamische Berechnung abgeleiteter Attribute− Operation zur Berechnung vorsehen
● Speicherung der abgeleiteten Attribute− Wenn komplexe Berechnungen gespart werden und sich die Ursprungsdaten
nicht häufig ändern
− Realisierung von Update-Operationen (wenn sich die Ursprungsdaten ändern, müssen die abgeleiteten Attribute automatisch mit geändert werden)
� Neue abgeleitete Attribute einführen● Zur Speicherung von Zwischenergebnissen
![Page 11: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/11.jpg)
Allweyer: Software Engineering
3. Verfeinern der Operationen
� Detailliertere Beschreibung● Sichtbarkeiten, Datentypen, Anfangswerte, ...
� Komplexe Operationen in einfache, interne Operationen zerlegen
● Beispiel: Untergliedern einer Erfassungsoperation in eine Operation zur Eingabeprüfung und eine Operation zur Speicherung
● Ggf. müssen neue Klassen identifiziert werden
� Transformieren von Lebenszyklen in Algorithmen oder Zustandsmuster
● Ausführende Operation kann vom jeweiligen Objektzustand abhängen
● Der Algorithmus muss daher entsprechende Abfragen enthalten oder – in komplexen Fällen – wird der Lebenszyklus mit Hilfe eigener Klassen modelliert (Zustandsmuster)
![Page 12: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/12.jpg)
Allweyer: Software Engineering
4. Verfeinern der Assoziationen
� Prüfen, welche Assoziationen unidirektional modelliert werden können
● In der Analyse: alle Assoziationen bidirektional● Aus Effizienzgründen ist für jede Assoziation zu prüfen, ob eine
Navigationsrichtung ausreicht.● In diesem Fall ist die Navigationsrichtung durch einen Pfeil zu markieren
� Zugriffspfade optimieren● In der Analyse: Vermeidung redundanter Assoziationen● Im Entwurf: Optimalen, effizienten Zugriff auf Objekte sicherstellen, ggf.
können hierfür redundante Assoziationen erforderlich sein● U. U. sind anschließend Assoziationen aus der Analyse überflüssig und
können entfernt werden● Für jede Operation ist zu prüfen, welche Assoziationen sie jeweils
durchlaufen muss, um an die jeweilige Information zu kommen
![Page 13: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/13.jpg)
Allweyer: Software Engineering
5. Verfeinern der Vererbung (1)
� Abstrakte Operationen für einheitliche Schnittstellen hinzufügen
● Identifizieren von ähnlichen Operationen, prüfen ob gemeinsame abstrakte Operationen gebildet werden können
� Hinzufügen von abstrakten Oberklassen
● Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets künstlich in das Modell eingefügt
● Umgekehrt ist zu prüfen, ob sinnlose Oberklassen gebildet wurden. Indiz: Klassenname ohne Aussagekraft, steht in keiner Beziehung zu Attributen und Operationen
� Maximierung des Polymorphismus
● Operationen so hoch wie möglich in die Vererbungshierarchie einordnen
● Nutzung eines einzigen Namens für konzeptionell gleiche Operationen,z. B. drucken(), erfassen()
● Alle Operationen sind in der Schnittstelle so allgemein wie möglich zu halten
![Page 14: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/14.jpg)
Allweyer: Software Engineering
5. Verfeinern der Vererbung (2)
� Komprimieren von Vererbungsstrukturen● Umgekehrt kann es in konkreten Fällen auch sinnvoll sein, eine
Vererbungsstruktur wieder zu einer Klasse zusammenzufassen.
● Dadurch wird ein Teil der im statischen Modell spezifizierten Semantik in das dynamische Modell übernommen
● (Siehe Beispiel auf der nächsten Folie)
� Wiederverwenden existierender Klassen● Im Ggs. zur Analyse spielt Wiederverwendung (reuse) im Entwurf eine
große Rolle
● Zugunsten der Wiederverwendung können die Anforderungen an „gute“ Vererbungsstrukturen reduziert werden− Z. B. Nutzung von Oberklassen, wobei in der Unterklasse nicht alle Operationen
und Attribute benötigt werden
![Page 15: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/15.jpg)
Allweyer: Software Engineering
OOD-Modell
� OOD = Object Oriented Design
� Grundlage für OOD-Modell ist das OOA-Modell● Insbesondere Klassendiagramm
� OOD-Modell soll Spiegelbild des Programms sein● Namen, Datentypen etc. des OOD-Modells sollten denen der verwendeten
Programmiersprache entsprechen
● Häufig: Verwendung englischer Namen und Bezeichnungen− Kürzere Bezeichnungen
− Durchgängigkeit zu den meist englischsprachigen Klassenbibliotheken
![Page 16: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/16.jpg)
Allweyer: Software Engineering
Objekt / Klasse
� Stereotypen ● Können z. B. eingesetzt werden, um die Zugehörigkeit zu bestimmten
Entwurfskomponenten zu kennzeichnen
● Beispiele:− <<DB>> für Datenverwaltungsklassen
− <<UI>> für User Interface
![Page 17: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/17.jpg)
Generische Klasse
Allweyer: Software Engineering
public class Warteschlange<T> {private Object[] warteschlange;private int position=0;
public Warteschlange(int maxlaenge){warteschlange = new Object[maxlaenge];
}
public void fuegeEin(T t){warteschlange[position] = t;position++;
}
public T getElement(int position){return (T)warteschlange[position];
}}
Typ-Parameter
Konstanten-Parameter(hier nicht bei der Typ-Definition, sondern als Parameter beimKonstruktor)
![Page 18: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/18.jpg)
Ableitung von Klassen aus generischen Klassen
Allweyer: Software Engineering
public class IntSchlange extends Warteschlange<Integer>{
public IntSchlange(){super(10);
}}
Gebundener TypKonstante
![Page 19: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/19.jpg)
Generische Klassen - Verwendung
Allweyer: Software Engineering
Warteschlange untypisierteSchlange = new Warteschlan ge(5);// Beliebige Objekte einfügen
untypisierteSchlange.fuegeEin(5);untypisierteSchlange.fuegeEin("Hallo");
// Beim Auslesen Casting erforderlichString s = (String)untypisierteSchlange.getElement( 1);
Warteschlange<String> stringSchlange = new Warteschl ange<String>(3);// Hier kann man nur Strings einfügen:
stringSchlange.fuegeEin("Hallo"); // Beim Auslesen kein Casting erforderlich:
String s1 = stringSchlange.getElement(0);
IntSchlange intschlange = new IntSchlange();// Hier kann man nur Integer einfügen:
intschlange.fuegeEin(5);// Beim Auslesen kein Casting erforderlich:
int i1 = intschlange.getElement(0);
Nutzung ohne Typ
Bindung an Typ String
Nutzung deraus einemgenerischen Typabgeleiteten Klasse
![Page 20: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/20.jpg)
Collections sind generische Klassen
� Typ-sichere Listen von Objekten
� Nützlich für die Implementierung von Assoziationen
Allweyer: Software Engineering
ArrayList a1 = new ArrayList();ArrayList<String> a2 = new ArrayList<String>();ArrayList<Integer> a3 = new ArrayList<Integer>();ArrayList<MeineKlasse> a4 = new ArrayList<MeineKlas se>();Vector<String> v1 = new Vector<String>();
![Page 21: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/21.jpg)
Java Collections-Hierarchie
Allweyer: Software Engineering
- Enthalten Reihenfolge(Zugriff über Index)
- Doppelte Einträgeerlaubt
Keine doppeltenEinträge möglich
Basisfunktionalitätzum Einfügen, Erzeugen einesIterators, u. ä.
Alle Methoden synchronisiert – trotzdem häufig nicht ausreichend für Thread-sichere Zugriffe
DynamischeArrays(Einfügen u.Löschen schneller)
Sortierung
Implementierungeiniger Basisfunktionen
Keine Duplikate
Unsortierte Menge
Sortierte Menge
Definierteinige Navi-giermethoden
Doppeltverkettete Liste(Wahlfreier Zugriff
schneller)
![Page 22: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/22.jpg)
Auswahl von Collections
� Benötigte Eigenschaften● z. B. Reihenfolge, doppelte Einträge, wahlfreier Zugriff etc.
� Speicherbedarf und Perfomance● Je nach Größe und verwendeten Operationen eignen sich unterschiedliche
Implementierungen
● Soll ein Zugriff über bestimmte Schlüssel erfolgen, eignen sich statt der Collections Implementierungen des Interface "Map" (z. B. HashMap, TreeMap).
Allweyer: Software Engineering
![Page 23: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/23.jpg)
Nutzung von Interfaces und abstrakten Klassen
� Wo keine bestimmte Implementierung erforderlich ist, kann man in der Deklaration ein Interface oder eine abstrakte Klasse verwenden
� Es kann dann eine beliebige Implementierung verwendet werden.
Allweyer: Software Engineering
public static void eineMethode(List<String> eineListe){// ...
}
AbstractList<String> liste = new ArrayList<String>();eineMethode(liste);
Interface "List" als Parameter-Typ
Übergabe einer ArrayList
![Page 24: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/24.jpg)
Allweyer: Software Engineering
Container-Klasse
� In der Analyse wurde vereinfachend davon ausgegangen, dass jede Klasse ihre Objekte selbst verwaltet
� Im Entwurf muss diese Objektverwaltung realisiert werden
� Container-Klasse ● Verwaltet eine Menge von Objekten einer anderen Klasse
● Stellt Operationen bereit, um auf die verwalteten Objekte zuzugreifen
� Realisierung mit Hilfe von Arrays oder Collections
![Page 25: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/25.jpg)
Allweyer: Software Engineering
Schnittstellen (Interface)
� Eine Schnittstelle spezifiziert einen Ausschnitt aus dem Verhalten einer Klasse
� Besteht nur aus den Signaturen von Operationen● Besitzt keine Implementierung, Attribute, Zustände oder Assoziationen
� Ist äquivalent zu einer abstrakten Klasse, die ausschließlich abstrakte Operationen besitzt
� Implementierung einer Schnittstelle durch eine Klasse wird durch einen gestrichelten Vererbungspfeil gekennzeichnet
![Page 26: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/26.jpg)
Allweyer: Software Engineering
Schnittstelle (Interface)
«interface»Schnittstelle
Klasse 1 Klasse 2
Aufrufende Klasse nutzt die Schnittstelle
Schnittstelle wirdimplementiertvon Klasse 2
AufrufendeKlasse
Schnittstelle wirdimplementiertvon Klasse 1
Klasse 1 und Klasse 2 müssen beide je über eine Implementierung aller beiSchnittstelle definierten abstrakten Operationen verfügen, wobei sich dieImplementierungen voneinander unterscheiden können.
<<use>>
![Page 27: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/27.jpg)
Allweyer: Software Engineering
Beispiel für Schnittstelle
berechnePraemie(Versicherungssumme : double)
«interface»VersicherungInterface
berechnePraemie(VSumme : double)berechneSonderpraemie(VSumme : double)
Versicherung 1
berechnePraemie(VSumme : double)
Versicherung 2
ermittlePraemie()
VersicherungGUI
Unterschiedliche Implementierungender Operation berechnePraemie
<<use>>
![Page 28: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/28.jpg)
ermittlePraemie()
VersicherungGUI
Schnittstellen – alternative Darstellung
Allweyer: Software Engineering
berechnePraemie(VSumme : double)berechneSonderpraemie(VSumme : double)
Versicherung 1
ermittlePraemie()
VersicherungGUI
berechnePraemie(VSumme : double)berechneSonderpraemie(VSumme : double)
Versicherung 1
VersicherungInterface
VersicherungInterface
VersicherungInterface
![Page 29: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/29.jpg)
Allweyer: Software Engineering
Assoziationen
� In der Analyse:● Alle Assoziationen bidirektional
● Navigation in beide Richtungen möglich
� Im Entwurf:● Explizite Angabe über Navigation erforderlich
● Unidirektionale Assoziationen sind einfacher zu implementieren
![Page 30: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/30.jpg)
Allweyer: Software Engineering
Navigierbarkeit
+druckeGehaltsliste()
#Bezeichnung
Abteilung
+druckeGehalt()
#Name#Personalnr#Gehalt
Angestellter
1 *
+druckeGehaltsliste()
#Bezeichnung
Abteilung
+druckeGehalt()+druckeAusweis()
#Name#Personalnr#Gehalt
Angestellter
1 *
Unidirektional
Bidirektional
(Wenn kein Pfeil eingetragen ist, ist dieNavigierbarkeit nicht definiert)
Abteilung sollmit ausgedrucktwerden, daherist Kenntnis überdie Abteilungerforderlich
![Page 31: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/31.jpg)
Allweyer: Software Engineering
Realisierung von Assoziationen über Referenzen
� Jedes Objekt kennt die assoziierten Objekte� Multiplizität 1 oder 0..1: einzelne Referenz� Multiplizität > 1: Menge von Referenzen
(Collection, z. B. ArrayList).
Abteilung Angestellter1 *
: Abteilung : Angestellter
: Angestellter: Abteilung
: Abteilung: Angestellter
Klassen:
Objekte:
![Page 32: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/32.jpg)
Allweyer: Software Engineering
Realisierung mittels Assoziationsobjekt
Abteilung Angestellter1 *
Abteilung AngestellterAbteilung/Angestellter* *
Klassen:
Objekte:
: Abteilung
: Abteilung
: Abteilung
: Angestellter
: Angestellter
: Angestellter
: Abteilung/Angestellter
...
Assoziationsobjekt – weiß, wer mit wem verbunden ist.
Ermöglicht Assoziationen zu Klassen, die nicht verändert werden können (z. B. aus Bibliotheken)
1 1
![Page 33: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/33.jpg)
Allweyer: Software Engineering
Weitere Möglichkeiten für Assoziationen
� Merkmale für Assoziationen● {ordered}
− Geordnete Assoziationen (z. B. Sortierung nach Kundennr)
− Realisierung über eine Container-Klasse, die Ordnung der Elemente berücksichtigt, z. B. ArrayList
● {unique}− Stellst sicher, dass jedes Element nur einmal vorkommt, z. B. durch Verwendung eines
Set
− Oft wird davon ausgegangen, dass eine Assoziation diese Eigenschaft hat, eindeutig gefordert wird dies aber nur durch die {unique}-Angabe
● {frozen} − Objektverbindung kann weder hinzugefügt, gelöscht noch geändert werden, wenn sie mit
dem Erzeugen des entsprechenden Objekts einmal angelegt wurde
● {addOnly}− Es dürfen nur neue Verbindungen hinzugefügt, vorhandene aber nicht gelöscht werden
![Page 34: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/34.jpg)
Allweyer: Software Engineering
Aggregation / Komposition
� Aggregation wird genauso realisiert wie eine normale Assoziation, wobei
● stets das Ganze seine Teile kennen muss (Navigierbarkeit vom Aggregat zur Komponente!)
● Keine Zyklen in der Objektstruktur auftreten dürfen
� Komposition ebenso wie Aggregation, zusätzlich:● Bei der Definition von Operationen ist zu berücksichtigen, dass Operationen,
die das Ganze betreffen, häufig auch die Teile betreffen.● Zugriff und Erzeugen der Teile erfolgen über das Aggregatobjekt● Realisierungsmöglichkeiten:
− Über eine Referenz (wie eine gewöhnliche Assoziation)− Über Methoden sicherstellen, dass Änderungen immer über das Aggregat erfolgen
− Über Enthaltensein (Inner Class)− Vorteil: Erzeugen, Löschen und Kopieren findet automatisch gemeinsam statt− Nachteil: Direkter Zugriff von Außen auf ein Teil schwierig
![Page 35: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/35.jpg)
Allweyer: Software Engineering
Pakete (Packages)
� Entwurfsmodelle wesentlich umfangreicher als Analysemodelle, daher ist die Strukturierung mit Hilfe von Paketen noch wichtiger
� Schachtelung von Packages ermöglicht die Modellierung des Systems auf verschiedenen Abstraktionsebenen
![Page 36: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/36.jpg)
Paketdiagramm
� <<access>>● Privater Import: Die importierten Pakete sind im importierenden Paket private
� <<ímport>>● Öffentlicher Import: Importierte Pakete sind auch nach außen sichtbar
� Öffentlich sichtbare Elemente lassen sich von außen ohne Import-Beziehung über vorangestellten Paketnamen referenzieren, z. B. "P2::B"
Allweyer: Software Engineering Quelle: UML 2 glasklar
![Page 37: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/37.jpg)
Allweyer: Software Engineering
Schachtelung von Packages
![Page 38: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/38.jpg)
UML-Komponentendiagramme
� Komponente● Modularer Systemteil
● Kommunikation nur über Schnittstellen
● In einer Komponente wirken mehrere Klassen zusammen
� Komponentendiagramm● Darstellung der physischen Struktur eines Systems
● Bestandteile
● Interne Struktur von Komponenten
● Wechselbeziehungen zwischen Komponenten
Allweyer: Software Engineering
![Page 39: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/39.jpg)
Komponente
Allweyer: Software Engineering
Bereitgestellte Schnittstelle
Komponente
Port (optional),dient zur Gruppierung vonSchnittstellen
Quelle:Seemann/Gudenberg, Software Entwurf mit UML 2.2. Aufl., Springer 2006
![Page 40: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/40.jpg)
Benötigte Schnittstellen
Allweyer: Software Engineering
Komponente(alternative Darstellung)
Benötigte Schnittstelle
Quelle:Seemann/Gudenberg, Software Entwurf mit UML 2.2. Aufl., Springer 2006
![Page 41: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/41.jpg)
Zusammengesetzte Komponenten
Allweyer: Software Engineering
Quelle:Seemann/Gudenberg, Software Entwurf mit UML 2.2. Aufl., Springer 2006
![Page 42: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/42.jpg)
Alternative Darstellung
Allweyer: Software Engineering
In Anlehnung an:Seemann/Gudenberg, Software Entwurf mit UML 2.2. Aufl., Springer 2006
![Page 43: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/43.jpg)
Implementierung
Allweyer: Software Engineering
Artefakt(physisch vorhanden, z. B. Datei)
Komponente(logisches Konstrukt)
Komponente(logisches Konstrukt)
In Anlehnung an:Seemann/Gudenberg, Software Entwurf mit UML 2.2. Aufl., Springer 2006
![Page 44: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/44.jpg)
Verschiedene Darstellungen
Allweyer: Software Engineering
Nach: UML 2 glasklar
Teilnehmer
Verwaltungs-metadaten
![Page 45: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/45.jpg)
UML-Komponentendiagramm – Beispiel
Allweyer: Software Engineering
Quelle: Suhl, Bizer (FU Berlin)
![Page 46: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/46.jpg)
Beispiel Komponentenstruktur und Interfaces
Allweyer: Software Engineering
Quelle: Suhl, Bizer (FU Berlin)
![Page 47: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/47.jpg)
Elemente des Komponentendiagramms
Allweyer: Software Engineering
Quelle: UML 2 glasklar
![Page 48: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/48.jpg)
UML Verteilungsdiagramm (Deployment Diagram)
� Hardware-Umfeld (Hardware-Topologie)
� Verteilung der Software auf die Hardware (Deployment)
Allweyer: Software Engineering
![Page 49: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/49.jpg)
Verteilungsdiagramm (Deployment Diagram)
Allweyer: Software Engineering
In Anlehnung an:Seemann/Gudenberg, Software Entwurf mit UML 2.2. Aufl., Springer 2006
![Page 50: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/50.jpg)
Verteilungsdiagramm (Deployment Diagram)
Allweyer: Software Engineering
Quelle: UML 2 glasklar
Knoten (node):Betriebsmittel, das Verarbeitungs- und/oder Speicherkapazität zur Verfügung stellt (z. B. ein Computer, Router, Sensor, …)
Kommunikationspfad, gerichtet oder ungerichtet:Darstellung als Assoziation (auch Angaben von Multiplizitäten sind möglich)
Verteilungsbeziehung:Artefakt wird auf Knotendeployed
Alternative Darstellungder Verteilungsbeziehung
![Page 51: 6. Objektorientierter Entwurfteam.fh-kl.de/uploads/media/SWE-06-Entwurf-OOD-v05.pdf · Zustandsmuster Ausführende ... Dienen dazu, das Vererbungskonzept voll auszunutzen,werden stets](https://reader033.vdocuments.pub/reader033/viewer/2022050506/5f97e803b7df5e133a6b8a48/html5/thumbnails/51.jpg)
Verteilungsdiagramm (Deployment Diagram)
Allweyer: Software Engineering
Allgemeine Abhängigkeitsbeziehung
Quelle: UML 2 glasklar