objektorientierter entwurf wdh.: basiskonzepte innerhalb des ood statische konzepte im entwurf:...

40
Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Upload: gotthard-helme

Post on 05-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Objektorientierter Entwurf

Wdh.: Basiskonzepte innerhalb des OOD

Statische Konzepte im Entwurf:

Assoziationen

Page 2: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen
Page 3: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

OOD-Modell

• Soll das spätere Programm widerspiegeln; aber: höhere Abstraktionsebene, Verdeutlichung des Zusammenwirkens einzelner Elemente

• Erstellen eines statischen und dynamischen Modells/ Elaboration des bereits bestehenden OOA-Modell

Page 4: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Klasse

Allgemein:Notation Name: Wie in der Analyse fett und

zentriert, beginnend mit Großbuchstabe

• Stereotypen verwenden, um Zugehörigkeit einer Klasse zu einer bestimmten Entwurfsschicht zu zeigen: <<interface>>, <<database>>, …

Person

<<interface>>

UIButton

Page 5: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Klasse

Parametrisierte Klasse (Template):

Queue

queue: T[0..n]

insert()

delete()

FloatQueueAdressbuch

<<bind>>

<TPerson,n100>

<<bind>>

<Tfloat,n100>

Die parametrisierte Klasse Queue enthält ein Attribut queue, das mit Hilfe des Typs T und der Multiplizität [0..n] definiert wird; in den beiden Klassen, die Queue als Vorlage benutzen, wird dann Typ und Anzahl der maximalen Werte/Objekte bestimmt

Page 6: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Klasse

Container-Klasse • Verwaltung von Objekten einer anderen Klasse • stellt Operationen bereit, um auf die zu verwaltenden Objekte

zugreifen zu können• Vordefiniert in Bibliotheken (z.B. C++ STL)

Page 7: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Implementierung

C++:template <class ElementType, int max>

class Queue{

public:

void insert(ElementType element) {...}

};

typedef Queue<int,100> IntQueue;

typedef Queue<string,100> StringQueue;

IntQueue intQueue;

StringQueue strQueue;

strQueue.insert(„Meier");

intQueue.insert(5);

Page 8: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Klasse

Schnittstelle (Interface)

• Enthält Signaturen von Operationen (immer abstrakt) und evtl. Attribute • Verwendung wie abstrakte Klasse• Schlüsselwort <<interface>>

Page 9: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Beispiel:

Page 10: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Schnittstelle : Implementierung

Java:Deklaration:

interface ClassInfo{

public abstract String getClassName();

}

Nutzung:

class MyClass implements ClassInfo{

public String getClassName(){

return „MyClass“;

}

}

C++:

Mittels Klassenkonzept

Page 11: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Klasse

Abstrakte Klassen• Oberklasse zu „realen“ Klassen• kann keine Objekte erzeugen• jede Klasse, die eine mit abstract gekennzeichnete

Operation enthält muss ebenfalls abstract sein

• UML:

Medium

{abstract}

erfasse()

Medium

Oder:

erfasse() {abstract}

Page 12: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Implementierung

Java:

- Kennzeichnung mittels „abstract“

- Eine Klasse, die eine abstrakte Operation besitzt, muss als abstrakt deklariert sein

abstract class AbstClass1{public void operation1(){}

public abstract void operation2(){}

}

C++:

- Keine spezielle Kennzeichnung

Page 13: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Attribute

• UML erlaubt alle Zeichen im Attributnamen Name an Konvention Programmiersprache anpassen; beginnend mit Kleinbuchstaben

• Sichtbarkeiten

public sichtbar in allen Klassen UML: +

protected sichtbar in der Klasse und allen Unterklassen

UML: #

private sichtbar in der Klasse UML: -

package sichtbar für alle Klasse im gleichen Paket

UML:~

Page 14: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Attribute

Notation:Sichtbarkeit / name : Typ [Multiplizität] = Anfangswert {Eigenschaftswert}

- Nur der Name des Attributs ist zwingend anzugeben;

Standard: Sichtbarkeit, Name, Typ

Page 15: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

AttributeEigenschaftswerte:

- UML bietet eine Reihe von vordefinierten Eigenschaftswerten, wie z.B.:

{read only} Attributwert unveränderbar {ordered} Menge von Werten, geordnet ( vorname[1..3] {ordered} )

- Weitere Eigenschaftswerte dürfen nach Belieben definiert werden (ebenso Einschränkungen)

rueckflug: Date {rueckflug > hinflug}

Page 16: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Attribute

• Typen:

UML erlaubt neben vordefinierten Typen die Definition beliebiger weiterer Typen Typen der Programmiersprache, die verwendet werden soll, benutzen.

• Abgeleitete Attribute: Abgeleitete Attribute ins OOD- Modell eintragen. Sie werden

später als Attribute oder durch eine Operation realisiert, die den aktuellen Wert des abgeleiteten Attributs ermittelt.

Page 17: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Operationen

• Name:

beliebig, sollte mit Kleinbuchstaben beginnen; auch hier: Syntax der verwendeten Programmiersprache zu Grunde legen

• Überladen von Operationen:

Im OOD darf derselbe Operationsnamen innerhalb einer Klasse mehrfach vorkommen, allerdings mit

verschiedenen Parametern

Page 18: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Operation

Sichtbarkeiten :

• public sichtbar in allen Klassen UML: +• protected sichtbar in der Klasse und in allen

Unterklassen UML: #• privat sichtbar in der Klasse UML: -• package sichtbar im selben Paket UML: ~

Page 19: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Operationen

• Signatur:

Im OOD-Modell vollständig anzugeben

Spezifikation:

Sichtbarkeit name (Parameterliste) : Ergebnistyp {Eigenschaftswert}

Für die Parameterliste gilt:

Richtung parametername : Typ [Multiplizität] = Anfangswert {Eigenschaftswert}

Auch hier ist nur die Angabe des Namens zwingend.

Page 20: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Operation

Signatur: Richtung

• in : bei reinen Eingabeparametern; nur lesender Zugriff der Operation möglich

z.B. erfassen(in name: string)

• out : bei reinen Ausgabeparametern; Operation erzeugt den Wert des Parameters und gibt ihn an die aufrufende Funktion zurück

• inout : lesen, verändern, zurückgeben

Page 21: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Operation

• Eigenschaftswerte:

Analog zu Attributen gibt es in UML vordefinierte und die Möglichkeit, eigene zu definieren

Page 22: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Operation

• Für abstrakte Operationen gilt dasselbe wie für abstrakte Klassen:

- sie besteht nur aus der Signatur (ohne Wertangabe im OOD / ohne „aktive“ Implementierung)

- sie werden im Rahmen von Generalisierungsstrukturen ins OOD-Modell eingetragen

- UML: kursiv oder {abstract}

- in Schnittstellen sind Operationen immer abstrakt und müssen nicht gesondert als abstrakt gekennzeichnet werden

Page 23: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Beispiel

Page 24: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Operation

Erweiterung gegenüber Analyse:

• vollständige Signatur• Namen und Typen aller Parameter• Ergebnistyp der Operation• Sichtbarkeiten

Page 25: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Assoziation

Assoziationen im OOA-Modell

- Welche Klassen kennen sich, zwischen welchen Objekten existieren Beziehungen?

- Binäre Assoziationen- Multiplizitäten- Benennung/ Rolle

Page 26: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Assoziation

Navigierbarkeit

KlasseX

KlasseX

KlasseX

KlasseX KlasseY

KlasseY

KlasseY

KlasseY unspezifiziert

unidirektional

Navigierbarkeit explizit ausgeschlossen

bidirektional

Navigierbarkeit kann auch in Objektdiagramme eingetragen werden

Page 27: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

AssoziationImplementierung• Mittels Zeigern • Multiplizität 0..1 oder 1: ein einzelner Zeiger >1: Menge von Zeigern * : Container

Beispiel Java:class Angestellter{protected Abteilung arbeitetIn; public void link(Abteilung abt) {arbeitetIn=abt;}public void unlink(Abteilung abt) {... arbeitetIn=null;}public Abteilung getlink() {return arbeitetIn;}}

Page 28: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Assoziation

Sichtbarkeit Die Sichtbarkeit einer Assoziation kann im Entwurfsmodell eingetragen

werden.

z.B.:

Eigenschaftswert

z.B.:

KlasseX

Fluggast

+ rolle

Flugzeug

{ordered}

KlasseY

*

business{subset passenger}

first{subset passenger}

passenger{union}

Page 29: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Assoziation

Page 30: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Assoziation

Page 31: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Übung 1

• Ziel: Klassen und Assoziationen des OOA-Modells in den Entwurf abbilden.

Aus einem Analysemodell resultiert folgendes Klassendiagramm:

Student

matrikelnummer

name

immatrikulation

anzahl

immatrikulieren()

anmeldenPraktikum()

erstelleListe()

Firma

name

ort

branche

0..1*

praktikant

Entwickeln Sie dieses Diagramm als Teil des Entwurfsmodells weiter.

Page 32: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Komponentendiagramm

• Wie ist die Struktur des Systems, wie wird sie erzeugt?

• Komponente:

Softwarebaustein, der über feste Schnittstellen verfügt, wobei das Innenleben der Komponente modifiziert werden kann Vorteil: Austauschbarkeit

• Komponentenbasierte Entwicklung:

z.B. .NET, JavaBeans

Page 33: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Komponentendiagramm

• Notation: Komponente und Schnittstelle

<<component>>Komponente

Komponente

Page 34: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Komponentendiagramm

• Alternative Darstellung

Page 35: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Komponentendiagramm

• Die einzelnen Komponenten sind über ihre Schnittstellen miteinander verbunden:

<<component>>KomponenteA

<<component>>KomponenteB

<<component>>KomponenteC

Page 36: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Komponentendiagramm• Artefakte Artefakte sind physische Informationseinheiten, z.B. eine

Quellcodedatei oder eine ausführbare Binärdatei Die Art des Artefakts kann durch Stereotypen spezifiziert

sein: <<file>> =Datei <<document>> =Datei, die weder Quellcode noch ausführbaren Programmcode besitzt <<source>> =Datei mit Quellcode <<executable>> = ausführbare Datei <<library>> =Datei, die Bibliothek enthält (z.B. dll- Datei)

<<artefact>>ArtefaktX

Page 37: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Komponentendiagramm

Artefakt1 wird durch Komponente realisiert

Keine näher spezifizierte Abhängigkeit

Class-Datei wird automatisiert aus Java-Datei erstellt

OOD-Modell wird aus OOA-Modell erstellt

Abhängigkeiten zwischen Artefakten und Komponenten

Page 38: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Komponentendiagramm

• Darstellung des Innenlebens einer Komponente

Page 39: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Komponentendiagramm

• Abhängigkeiten zwischen Modellelementen

Klasse Fahrzeug ist Exemplar der Klasse Fahrzeugtyp

Kunden-Window besitzt Zugriffsrechte auf Klasse Kunde

OOD-Klasse Kunde realisiert OOA-Klasse Kunde

EditierbareListe ist durch Klasse Liste ersetzbar

Klasse Bestellung benötigt für volle Funktionalität Artikel

Page 40: Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

Übung 2

Ziel: Komponentendiagramm erstellen

Erstellen Sie ein Komponentendiagramm mit den folgenden Komponenten und den jeweils angegebenen Schnittstellen, die diese Komponenten zur Verfügung stellen und benutzen:

- Online-Reservierung: benutzt Reservierung

- Zimmerbelegung: bietet Zimmeranfrage und Buchung

- Preisberechnung: bietet Preisliste und Sonderangebote

- Zimmerreservierung: bietet Stornierung und

Reservierung, benutzt Zimmeranfrage, Buchung,

Preisliste und Sonderangebote.