51
6. Objektorientierter Entwurf Software Engineering

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

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Verteilungsdiagramm (Deployment Diagram)

Allweyer: Software Engineering

Allgemeine Abhängigkeitsbeziehung

Quelle: UML 2 glasklar