• Keine Ergebnisse gefunden

Aggregation und Komposition

N/A
N/A
Protected

Academic year: 2021

Aktie "Aggregation und Komposition "

Copied!
16
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 1

OOA (Teil III) 31) Strukturelle

metamodellgetriebene Modellierung

Prof. Dr. rer. nat. habil. Uwe Aßmann Institut für Software- und

Multimediatechnik Lehrstuhl Softwaretechnologie

Fakultät für Informatik TU Dresden Version 11-0.2, 28.05.11

1) Metamodelle 2) Merkmale 3) Beziehungen

1)

Aggregation und Komposition

4) Vererbung

Prof. U. Aßmann, Softwaretechnologie 2

Überblick Teil III:

Objektorientierte Analyse (OOA)

1. Überblick Objektorientierte Analyse

1. (schon gehabt:) Strukturelle Modellierung mit CRC-Karten

2. Strukturelle metamodellgetriebene Modellierung mit UML für das Domänenmodell

1. Strukturelle metamodellgetriebene Modellierung (31) 2. Modellierung von komplexen Objekten

1.Modellierung von Hierarchien

2.(Modellierung von komplexen Objekten und ihren Unterobjekten) 3.Modellierung von Komponenten (Groß-Objekte)

3. Strukturelle Modellierung für Kontextmodell und Top-Level-Architektur 3. Analyse von funktionalen Anforderungen

1. Funktionale Verfeinerung: Dynamische Modellierung und Szenarienanalyse mit Aktionsdiagrammen

2. Funktionale querschneidende Verfeinerung: Szenarienanalyse mit Anwendungsfällen, Kollaborationen und Interaktionsdiagrammen 3. (Funktionale querschneidende Verfeinerung für komplexe Objekte) 4. Beispiel Fallstudie EU-Rent

Prof. U. Aßmann, Softwaretechnologie 3

Obligatorische Literatur

Zuser, Kap. 7-9

Störrle 5.2-5.5

Balzert Kap. 6-7, 9-10

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 4

31.1 Strukturmodelle (Metamodelle)

(2)

Prof. U. Aßmann, Softwaretechnologie 5

Metamodelle

Ein Metamodell beschreibt die Struktur einer Menge von Modellen mit Hilfe eines Klassendiagramms

Vereinfachtes Metamodell von UML:

Klasse Assoziation

Merkmal (feature)

Operation Attribut

beteiligt an

*

*

Strom (stream)

Ausnahme Ereignis (event)

Vererbung Teilbeziehung

(Aggregation) Konnektor

Prof. U. Aßmann, Softwaretechnologie 6

Schritte der objektorientierten,

metamodellgetriebenen (strukturellen) Analyse

Ziel:

Von den Anforderungen

zu einem Modell der fachlichen

Aufgabe Merkmale identifizieren

Klassen identifizieren

Klassenbeziehungen identifizieren OOA

Verhalten der Merkmale beschreiben Strukturanalyse

Metamodell

Metaobjekt- Protokoll (dynamische Semantik)

stammt aus:

Prof. U. Aßmann, Softwaretechnologie 7

Schritte der objektorientierten,

metamodellgetriebenen (strukturellen) Analyse

Ziel:

Von den Anforderungen

zu einem Modell der fachlichen

Aufgabe

Klassen nach Profilen klassifizieren Attribute identifizieren

Assoziationen ident.

Merkmale identifizieren Klassen identifizieren

Operationen identifizieren

Klassenbeziehungen identifizieren

Komplexe Klassen ident.

Vererbungen ident.

Ereignisse identifizieren strukturelle OOA

Ausnahmen identifizieren Ströme identifizieren

Konnektoren ident.

Assoziationsklassen id.

gelb: Domänenmodell; grün: Kontextmodell, TL-Architektur

Prof. U. Aßmann, Softwaretechnologie 8

Vom Analysemodell zum Entwurfsmodell

Analysemodelle sind meist gröber als Entwurfsmodelle.

Beim Übergang zum Entwurfsmodell wird das Analysemodell verfeinert, d.h. ausgefüllt.

Das Analysemodell ist sozusagen das Skelett des Entwurfsmodells

♦ Kontextmodell ergibt Top-Level-Architektur ergibt Architekturmodell ergibt Feinentwurf

♦ Domänenmodell ergibt Materialentwurf

♦ GUI-Prototyp ergibt GUI

analysis model Kontextmodell (context model, system interface) Domänen-

modell

Anwendungsfälle (use cases) Textuelle Anforderungen

Architektur- Entwurf

Feinentwurf Fachliches Modell

Top-level- Architektur Nutzer-

modell Produktdefinition

Anforderungs -

spezifikation

(3)

Prof. U. Aßmann, Softwaretechnologie 9

Was bedeutet Verfeinerung?

Ein Fragment eines Programms oder Modells ist ein partieller Satz der Sprache.

Ein generisches Fragment eines Programms oder Modells ist ein partieller Satz der Sprache mit Platzhaltern (“Lücken”)

Das Analysemodell besteht aus Fragmenten und generischen Fragmenten von UML

Verfeinerungsschritte vom Analysemodell zum Entwurfsmodell

Vervollständigung (Ausfüllen, Elaboration) von Fragmenten

♦ Detaillierung von Fragmenten

Strukturierung, Restrukturierung

Abflachen (Flachklopfen, lowering) von Fragmenten: Ersetzen von ausdrucksstarken Konstrukten durch weniger ausdrucksstarke, implementierungsnähere

Erhöhung Zuverlässigkeit: Einziehen von qualitätssteigernden Fragmenten

Prof. U. Aßmann, Softwaretechnologie 10

Strukturgetriebene Analyse

Die Schritte der metamodellgetriebenen Analyse gelten für alle Arten von Analysemodellen in der Produktdefinition

Anforderungsspezifikationen

Fachliche Modelle

♦ Domänenmodell

♦ Kontextmodell

♦ Top-level-Architektur

Im folgenden werden sie hauptsächlich für ein Analysemodell dargestellt, das alle obigen Teilmodelle integriert

Man kann aber Klassen den jeweiligen Teilmodellen zuordnen

Wir werden noch weitere Analyseschritte für Kontextmodell und Top- level-Architektur kennenlernen.

Prof. U. Aßmann, Softwaretechnologie 11

Was man vom Analysemodell auflösen muss

Strukturelle Eigenschaften

Relationen:

♦ n-stellige Assoziationen, bidirektionale Assoziationen

♦ Aggregationen, Kompositionen

♦ Konnektoren

Objekte:

♦ Mehrfachvererbung von Code

♦ Aktive Objekte

♦ Komplexe Objekte wie

Unterobjekte (Rollen, Facetten, Teile)

♦ Ströme

Verhalten

States

Activites

Ereignisse auffangen und behandeln

Beim Übergang vom Analysemodell zum Entwurfsmodell und

Implementierungsmodell muss man verschiedene abstrakte Konstrukte auflösen, dh. in Java übersetzen (Realisieren, Flachklopfen, lowering)

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 12

31.2 Analyse von Merkmalen

(Wdh.)

(4)

Prof. U. Aßmann, Softwaretechnologie 13

Schritte der strukturellen,

metamodellgetriebenen Analyse

Ziel:

Von den Anforderungen

zu einem Modell der fachlichen

Aufgabe

Klassen nach Profilen klassifizieren Attribute identifizieren

Assoziationen ident.

Merkmale identifizieren Klassen identifizieren

Operationen identifizieren

Klassenbeziehungen identifizieren

Komplexe Klassen ident.

Vererbungen ident.

Ereignisse identifizieren strukturelle OOA

Ausnahmen identifizieren Ströme identifizieren

Konnektoren ident.

Assoziationsklassen id.

Idee: Laufe das Metamodell ab und finde Ausprägungen aller Begriffe

gelb: Domänenmodell; grün: Kontextmodell, TL-Architektur

Prof. U. Aßmann, Softwaretechnologie 14

Aufgabe der Analyse von Klassen

im Domänenmodell:

Klassen können sowohl Objekte als Begriffe repräsentieren

Vererbung zwischen Begriffen bilden Begriffshierarchien (Taxonomien)

Assoziation

Aggregation und Komposition (Ganz-Teile-Beziehungen)

in Kontextmodell und Top-level-Architektur:

Klassen repräsentieren Daten, die auf Kanälen fliessen

Prozesse, die die Daten bearbeiten

in funktionalen Anforderungen:

funktionale Anforderungen werden Operationen, die Klassen zugeordnet sind

Prof. U. Aßmann, Softwaretechnologie 15

Klassenattribute (Statische Attribute)

Ein Klassenattribut A beschreibt ein Datenelement, das genau einen Wert für die gesamte Klasse annehmen kann.

Es ist also ein Attribut des Klassenprototypen

Notation: Unterstreichung

titel: String beginn: Date

dauer: Int anzahl: Int Teambesprechung

Prof. U. Aßmann, Softwaretechnologie 16

Beispiel: Instanz- und Klassenattribute in aUML (Analyse-UML)

Teammitglied leitet

Teilnahme 1

*

* 2..*

abteilungname Besprechungsraum

raumNr kapazität 1

*

*

1

für

Team name

1..* Leiter

0..1

1 Termin

titel beginn

dauer anzahl

Teambesprechung

Privater

Termin beschreibg

beginn dauer wegzeitort

VeranstOrt

1 Reservierung

(5)

Prof. U. Aßmann, Softwaretechnologie 17

Operationen

Def.: Eine Operation einer Klasse K ist die Beschreibung einer Aufgabe, die jede Instanz der Klasse K ausführen kann.

"Leere Klammern":

In vielen Büchern (und den Unterlagen zur Vorlesung) zur Unterscheidung von Attributnamen: raumFestlegen(), einladen(), absagen() etc.

Auf Analyseebene gleichwertig zu Version ohne Klammern Teambesprechung

titel beginn

dauer raumFestlegen

einladen absagen

Teambesprechung titel

beginn dauer raumFestlegen()

einladen() absagen()

Prof. U. Aßmann, Softwaretechnologie 18

Operation, Methode, Botschaften

Message (Botschaft): eine Nachricht an ein Objekt, eine Operation auszuführen

operation: “a service that can be requested from an object to effect behaviour” (UML-Standard)

method: the implementation of an operation (the “how” of an operation)

"In den Methoden wird all das programmiert, was geschehen soll, wenn das Objekt die betreffende Botschaft erhält." (Middendorf/Singer)

synchrone Operation / Methode: der Sender wartet auf die Beendigung des Service

asynchrone Operation: ein Service mit Verhalten aber ohne Rückgabe, d.h. der Sender braucht nicht zu warten

Prof. U. Aßmann, Softwaretechnologie 19

Objekte kommunizieren mit Botschaftenaustausch und reagieren auf den Empfang einer Nachricht mit dem Ausführen einer (oder mehrerer) Methode(n)

In einer sequentiellen objekt-orientierten Sprache setzt sich ein Aufruf an ein Objekt mit der Anfrage, eine Operation (einen Dienst) auszuführen, zusammen aus:

einer Aufruf-Nachricht (Botschaft, message),

einer synchronen Ausführung einer (oder mehrerer) Methoden und

einer Aufruf-Fertigmeldung (mit Rückgabe)

In einer parallelen objekt-orientierten Sprache setzt sich ein Aufruf an ein Objekt mit der Anfrage, eine Operation (einen Dienst) auszuführen,

zusammen aus:

einer Aufruf-Nachricht (Botschaft, message),

einer asynchronen Ausführung von Methoden (der Sender kann parallel weiterlaufen)

einer Aufruf-Fertigmeldung (mit Rückgabe), die vom Sender ausdrücklich abgefragt werden muss

Sequentielle und parallele OO Sprachen

Prof. U. Aßmann, Softwaretechnologie 20

Spezifikation von Operationen

Definition Die Spezifikation einer Operation legt das Verhalten der Operation fest, ohne einen Algorithmus festzuschreiben.

Es wird das "Was" beschrieben und noch nicht das "Wie".

Häufigste Formen von Spezifikationen:

Signaturen (Typen der Parameter und Rückgabewerte)

Text in natürlicher Sprache (oft mit speziellen Konventionen)

♦ Oft in Programmcode eingebettet (Kommentare)

♦ Werkzeugunterstützung zur Dokumentationsgenerierung, z.B. "javadoc"

Vor- und Nachbedingungen (Verträge, contracts)

Tabellen, spezielle Notationen

"Pseudocode" (Programmiersprachenartiger Text)

Zustandsmaschinen, Aktivitätendiagramme

(6)

Prof. U. Aßmann, Softwaretechnologie 21

Parameter und Datentypen für Operationen

Detaillierungsgrad in der Analysephase gering

meist Operationsname ausreichend

Signatur kann angegeben werden

Entwurfsphase und Implementierungsmodell: vollständige Angaben sind nötig.

Notation:

Operation (Art Parameter:ParamTyp=DefWert, ...): ResTyp

Art (des Parameters): in, out, oder inout (weglassen heißt in)

DefWert legt einen Default-Parameterwert fest, der bei Weglassen des Parameters im Aufruf gilt.

Beispiel (Klasse Teambesprechung):

raumFestlegen (in wunschRaum: Besprechungsraum): Boolean

Prof. U. Aßmann, Softwaretechnologie 22

Beispiel: Operationen im Analysemodell

Privater Termin beschreibg

beginn dauer wegzeitort genehmigen() verschieben()

Teammitglied leitet

Teilnahme 1

*

* 2..*

abteilungname terminBestätigen() Besprechungsraum

raumNr kapazität reservieren()

freigeben() freienRaumSuchen()

Ort 0..1

1

*

für

*

Team name

1..* Leiter

0..1

1 titel

beginn dauer anzahl Teambesprechung Termin

raumFestlegen() einladen() absagen() verschieben()

1

Prof. U. Aßmann, Softwaretechnologie 23

Weitere Bemerkungen

Weitere Abteile (compartments) in Klassen:

Neben dem Attribut- und Operationsabteil können weitere Abteile angehängt werden (Statecharts, Aktivitätendiagramme)

Mit solchen Verhaltensbeschreibungen können Objektlebenszyklen beschrieben werden (siehe später)

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 24

31.3 Analyse von

Klassenbeziehungen

(7)

Prof. U. Aßmann, Softwaretechnologie 25

Schritte der strukturellen,

metamodellgetriebenen Analyse

Ziel:

Von den Anforderungen

zu einem Modell der fachlichen

Aufgabe

Klassen nach Profilen klassifizieren Attribute identifizieren

Assoziationen ident.

Merkmale identifizieren Klassen identifizieren

Operationen identifizieren

Klassenbeziehungen identifizieren

Komplexe Klassen ident.

Vererbungen ident.

Ereignisse identifizieren strukturelle OOA

Ausnahmen identifizieren Ströme identifizieren

Konnektoren ident.

Assoziationsklassen id.

gelb: Domänenmodell; grün: Kontextmodell, TL-Architektur

Prof. U. Aßmann, Softwaretechnologie 26

Assoziation (Klassenbeziehung)

Assoziationen stellen Relationen, Graphen oder Hypergraphen dar, d.h. bilden Abstraktionen von Referenzen

Definition: Eine (binäre) Assoziation (Beziehung) AS zwischen zwei Klassen K1 und K2 beschreibt, daß die Instanzen der beiden Klassen in einer fachlich wesentlichen Beziehung zueinander stehen.

Semantik: Für jedes Objekt O1 der Klasse K1 gibt es eine individuelle, veränderbare und endliche Menge AS von Objekten der Klasse K2, mit dem die Assoziation AS besteht.

Analoges gilt für Objekte von K2 .

Teambesprechung Teilnahme Teammitglied

Prof. U. Aßmann, Softwaretechnologie 27

Team- besprechung

Besprechungs- raum Veranstal-

tungsort

Ein Name für ein Assoziationsende bezeichnet die Assoziation aus der Sicht einer der teilnehmenden Klassen.

Ein Assoziationende beschreibt die Rolle einer Klasse in einer Assoziation

Für Assoziationsnamen kann die Leserichtung angegeben werden.

Leserichtung und Assoziationsenden

Team-

besprechung Besprechungs-

raum fi ndet statt in

ist Ort von

Mann Ehemann Ehefrau Frau

Prof. U. Aßmann, Softwaretechnologie 28

Beispiel: Assoziationen

Teambesprechung Termin

Privater

Termin Teammitglied

Besprechungsraum

Reservierung

Team

leitet Leiter

Teilnahme VeranstOrt

Mitglied

für

Gruppe Gruppe

(8)

Prof. U. Aßmann, Softwaretechnologie 29

Semantik (bidirektionaler) Assoziationen

Eine Assoziation (auch Relation, Graph) ist ähnlich einer Tabelle:

Von einem beteiligten Objekt aus betrachtet, gibt eine Assoziation eine Menge von assoziierten Objekten an (Nachbarmenge):

Objekt design12:Teambesprechung

Teammitglied-Objekte in Teilnahme-Assoziation: {tm1, tm3}

Objekt tm1:Teammitglied

Teambesprechung-Objekte in Teilnahme-Assoziation:

{design12,requirementsX1}

Teilnahme-Assoziation

Teambesprechung Teammitglied

design12 tm1

design12 tm3

requirementsX1 tm1 requirementsX1 tm2

tm1:Teammitglied

tm2:Teammitglied

tm3:Teammitglied Design12:

Teambesprechung

requirementsX1:

Teambesprechung

Prof. U. Aßmann, Softwaretechnologie 30

Assoziationsattribute

I. A. tragen Assoziationen (Tupel der Relationen, Kanten des Graphen) keine Attribute

Manchmal braucht man aber Kantenattribute, die Aussagen über die zwei assoziierten Objekte zusammen treffen

Diese werden durch Kantenobjekte modelliert:

tm1:Teammitglied design12:Teambesprechung

requirementsX1:

Teambesprechung

design12tm1:Status informed:boolean=true tookPart:boolean=unclear folien:Foliensatz=fs1 protokoll:Protokoll=p1

requirementsX1tm1:Status informed:boolean=false tookPart:boolean=true folien:Foliensatz=fs2 protokoll:Protokoll=p2

Prof. U. Aßmann, Softwaretechnologie 31

Assoziationsklassen

Definition: Eine Assoziationsklasse beschreibt die Kantenobjekte einer Assoziation.

Assoziationsklassen werden benötigt, wenn Wissen darstellt werden soll, das für jede Kante (Tupel) unterschiedlich ist, d.h. Wissen über die Assoziation der Objekte darstellt

Teammitglied Teambesprechung

Status informed:boolean tookPart:boolean folien:Foliensatz protokoll:Protokoll

Prof. U. Aßmann, Softwaretechnologie 32

Abflachung von Assoziationsklassen

Assoziationsklassen werden im Implementierungsmodell in normale Klassen abgeflacht:

– Attribut "Reservierungsdatum" für eine Raumreservierung wird für Assotiation benötigt (z.B. um Reservierungskonflikte aufzulösen).

– Die Klasse "Reservierung" wird in die bestehende Assoziation eingefügt und "zerlegt" sie in zwei neue Assoziationen.

Besprechungsraum

Teambesprechung

Besprechungsraum

Teambesprechung Reservierung

Zeitraum Reservierungsdatum Reservierung

Zeitraum Reservierungsdatum

(9)

Prof. U. Aßmann, Softwaretechnologie 33

Definition Die Multiplizität (Kardinalität) einer Klasse K1 in einer Assoziation AS mit einer Klasse K2 begrenzt die Anzahl der Objekte der Klasse K2, mit denen ein Objekt von K1 in der Assoziation AS stehen darf.

Multiplizität bei Assoziationen

K1 AS K2

Mult

Notation:

Teambesprechung * 2..* Teammitglied umfaßt

Multiplizität Mult:

n (genau n Objekte der Klasse K2) n..m (n bis m Objekte der Klasse K2) n1, n2 (n1 oder n2 Objekte der Klasse K2) Zulässig für n und m :

Zahlenwerte (auch 0)

*

(d.h. beliebiger Wert, einschließlich 0)

Prof. U. Aßmann, Softwaretechnologie 34

Multiplizitäten bestimmen durch "Vorlesen"

Von links nach rechts:

"Jede Teambesprechung findet statt in (wie vielen?) Besprechungsräumen."

"Jede Teambesprechung findet statt in genau 1 Besprechungsraum."

Team- besprechung

Besprechungs- raum fi ndet statt in

ist Ort von

Von rechts nach links:

"Jeder Besprechungsraum ist Ort von (wie vielen?) Teambesprechungen."

Jeder Besprechungsraum ist Ort von 0 oder mehreren Teambesprechungen."

Die Multiplizitätsbeschränkung steht an der Klasse, für die die Anzahl der Teilnehmer an der Assoziation beschränkt werden.

1

*

Prof. U. Aßmann, Softwaretechnologie 35

Beispiel: Multiplizitäten

Teambesprechung Termin

Privater

Termin Teammitglied

Besprechungsraum

Reservierung

Team

leitet Teilnahme

* 1

*

1

für

1..* Leiter

0..1

1

*

VeranstOrt

1

Mitglied

* 2..*

1

Prof. U. Aßmann, Softwaretechnologie 36

Assoziationsarten

An ein Assoziationsende können folgende Bedingungen notiert werden:

Ordnung: {ordered} {unordered}

Eindeutigkeit: {unique} {non-unique}

Kollektionsart: {set} {bag} {sequence}

Zusammenhang: {union} {subsets}

Beim Übergang zum Implementierungsmodell müssen diese

Bedingungen auf Unterklassen von Collections abgebildet werden

(10)

Prof. U. Aßmann, Softwaretechnologie 37

Flachklopfen von zweiseitigen (Bidirektionale) Assoziationen

Child 0..1 Mother

kid mom 0..n

jane:Mother kid tom:Child

sally:Child kid

mom

mom

Bidirektionale Assoziationen bilden zur Laufzeit bipartite Graphen (Objektnetze)

Vorsicht! Achte beim Aufbau eines Objektnetzes auf Konsistenz der Referenzen

Realisierung in jUML durch Einführung von gerichteten Assoziationen

Child Mother

0..1 mom kid

0..n

Parentship Parentship

Childship (Parentship-1)

Laufzeit:

Prof. U. Aßmann, Softwaretechnologie 38

Einseitige einstellige Assoziationen in Java und jUML (Wdh.)

Child Mother

0..1 class Child {

...

private Mother mom;

...

}

tom:Child jane:Mother

tom:Child

Child tom = new Child();

tom.mom = jane;

...

tom.mom = null;

mom

mom

mom

Ein Kind kann höchstens eine Mutter haben

Laufzeit:

Prof. U. Aßmann, Softwaretechnologie 39

Einseitige mehrstellige Assoziationen (Wdh.)

Mother Child

0..* class Mother {

...

private Child[] kid;

...

}

jane:Mother tom:Child Mother jane = new Mother();

jane.kid[0] = tom;

...

jane.kid[1] = sally;

kid

kid jane:Mother kid

jane:Mother kid tom:Child

sally:Child kid

Eine Mutter kann aber viele Kinder haben

Annahme: Die Obergrenze der Anzahl der Child-Objekte spätestens bei erstmaliger Eintragung von Assoziationsinstanzen bekannt und relativ klein. (Allgemeinere Realisierungen siehe später.)

Laufzeit:

Prof. U. Aßmann, Softwaretechnologie 40

Optionale und notwendige Assoziationen

A a 0..1 B

class A { ...

private B a;

...

}

A a 1 B

class A { ...

private B a;

...

public A (B a, ...) { this.a = a; ...

} }

Untere und obere Schranken von unidirektionalen Assoziationen können durch die Einführung von Argumenten in Konstruktoren eingehalten werden

Analog z.B. für Multiplizitäten 0..* und 1..*

(11)

Prof. U. Aßmann, Softwaretechnologie 41

Zweiseitige (Bidirektionale) Assoziationen

Child 0..1 Mother

class Child { ...

private Mother mom;

...

}class Mother { ...

private Child[] kid;

...

} mom

kid 0..n

jane:Mother kid tom:Child

sally:Child kid

mom

mom

Bidirektionale Assoziationen werden zunächst auf zwei unidirektionale Assoziationen abgebildet

Mother jane = new Mother();

jane.kid[0] = tom;

tom.mom = jane;

...jane.kid[1] = sally;

Prof. U. Aßmann, Softwaretechnologie 42

Bidirektionale Assoziationen: Beispiel UML/Java

Teambesprechung ...

Teammitglied teilnahme

* 2..* –name: String

–abteilung: String ...

class Teambesprechung {

private Teammitglied[] teilnahme;

...

public Teambesprechung ( Teammitglied[] teilnehmer) { this.teilnahme = teilnehmer;

} }

class Teammitglied { private String name;

private String abteilung;

private Teambesprechung[] teilnahme;

public Teammitglied (

Teammbesprechung[] teilnahme) { if (teilnahme.size() < 2) error();

this.teilnahme = teilnahme;

}...

}

Prof. U. Aßmann, Softwaretechnologie 43

Realisierung der Bidirektionalität von Assoziationen

Realisierung nur in einer Richtung:

Gibt nicht die volle Semantik des Modells wieder

Abhängig von Benutzung (Navigation) der Assoziation

Realisierung durch zwei gerichtete Assoziationen

Redundanz:

♦ zusätzlicher Speicheraufwand

♦ Gefahr von Inkonsistenzen

Aber: schnelle Navigation

Realisierung durch Assoziationsklasse:

Geeignete Datenstrukturen erforderlich

♦ "Beidseitige" Abfragemöglichkeit

♦ Sicherstellung der Mengeneigenschaft

♦ Abflachung zu normalen Klassen nötig

Genaue Entscheidung erst im Entwurf !

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 44

31.3.2 Aggregation und

Komposition

(12)

Prof. U. Aßmann, Softwaretechnologie 45

Aggregation (has-a)

Teammitglied Team

Definition: Wenn eine Assoziation den Namen „hat-ein“ oder

"besteht-aus" tragen könnte, handelt es sich um eine Aggregation (Ganzes/Teile-Relation).

Eine Aggregation besteht zwischen einem Aggregat, dem Ganzen, und seinen Teilen.

Die auftretenden Aggregationen bilden auf den Objekten immer eine transitive, antisymmetrische Relation (einen gerichteten zyklenfreien Graphen, dag).

Ein Teil kann zu mehreren Ganzen gehören (shared ), zu einem Ganzen (owns-a) und exklusiv zu einem Ganzen (exclusively-owns-a)

Prof. U. Aßmann, Softwaretechnologie 46

Beispiel: Assoziationen und Aggregationen

Teambesprechung Termin

Privater

Termin Teammitglied

Besprechungsraum

Team

leitet Teilnahme

* 1

für

1..* Leiter

0..1

1

*

1

* 2..*

1

*

1 VeranstOrt

Reservierung

Prof. U. Aßmann, Softwaretechnologie 47

Komposition (owns-a)

Definition: Ein Spezialfall der Aggregation (has-a) ist die

Komposition zwischen einem Komposit und seinen Teilen.

Ein Objekt kann Teil höchstens eines Komposits sein (Eigentums- Relation exclusively-owns-a).

Das Teil ist abhängig vom Komposit (dependent part).

♦ Das Komposit hat die alleinige Verantwortung für Erzeugung und Löschung seiner Teile (gleiche Lebenszeit)

Def: Aggregation und Komposition sind Spezialfälle der Integration von Unterobjekten (integrates-a)

Aggregat

Teil Aggregation

Komposit

Teil Komposition

Kern

Satellit Integration

Prof. U. Aßmann, Softwaretechnologie 48

Komposite Objekte

Viele Daten, die in Anwendungen gehandhabt werden, sind komposite Objekte

Produktionsplanungssysteme verwalten

Produkte. Die Teile eines Produkts werden in Stücklisten (eigentlich Stückbäume) verwaltet

Fabriken. Die Teile und Maschinen einer Fabrik werden modelliert

Geschäftsprozesssoftware verwaltet Dokumente von

Geschäftsvorgängen (Bestellungen, Rechnungen, Löhne, Mitarbeiter...), die ebenfalls komposite Objekte darstellen

Geschäftsobjekte (business objects)

, Objekte des Domänenmodells, sind oft komposit

♦ Komposition ist wichtig im Domänenmodell und Datenhaltung!

Typischerweise werden Materialien mit kompositen Objekten darstellt

Materialien gehören zur Datenhaltungsschicht

Materialien sind oft komplex

(13)

Prof. U. Aßmann, Softwaretechnologie 49

Beispiel Komposite Objekte

Produktionsplanungssysteme (PPS) verwalten Produkte.

Die Teile eines Produkts werden in Stücklisten (eigentlich Stückbäume) verwaltet

Stückliste eines Phaeton (alle Teile sind lebenslang numeriert, um verfolgbar zu sein)

p204:Phaeton

m204:10-Zylinder- Dieselmotor

c22:Chassis

zk29:Zylinderkopf j299:Jetronic k3392:Kolben l129:Lenkrad

Prof. U. Aßmann, Softwaretechnologie 50

Realisierung von Aggregation und Komposition in Java

class A { ...

private B[] a;

...

} A a 0..* B

Aggregationen stellen azyklische Graphen dar und können daher genau wie Assoziationen abgebildet werden

Komposition wird in gleicher Weise abgebildet

Daher gehen in Java die Analyseinformationen verloren!

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 51

31.4 Vererbungsbeziehungen zwischen Klassen

Prof. U. Aßmann, Softwaretechnologie 52

Schritte der strukturellen,

metamodellgetriebenen Analyse

Ziel:

Von den Anforderungen

zu einem Modell der fachlichen

Aufgabe

Klassen nach Profilen klassifizieren Attribute identifizieren

Assoziationen ident.

Merkmale identifizieren Klassen identifizieren

Operationen identifizieren

Klassenbeziehungen identifizieren

Komplexe Klassen ident.

Vererbungen ident.

Ereignisse identifizieren strukturelle OOA

Ausnahmen identifizieren Ströme identifizieren

Konnektoren ident.

Assoziationsklassen id.

gelb: Domänenmodell; grün: Kontextmodell, TL-Architektur

(14)

Prof. U. Aßmann, Softwaretechnologie53 53

Mehrfachvererbung (Multiple Inheritance)

Professor Student

Person

Student drinkBeer() Professor

drinkBeer()

Von wo wird drinkBeer() geerbt?

MRO

Mehrfachvererbung

Eine Klasse kann mehrere Oberklassen besitzen

Dadurch wird die Vererbungsrelation ein gerichteter azyklischer Graph (dag)

Eine Klasse kann ein Merkmal mehrmals erben

Daher muss die Merkmalssuche einer Strategie gehorchen, der Merkmalsauflösungsordnung (method-resolution-order, MRO), einer Navigationsstrategie, die aufwärts nach Merkmalen sucht

Oft links-nach-rechts-aufwärts- Suche

Prof. U. Aßmann, Softwaretechnologie 54

Mehrfachvererbung als Venn-Diagramm

Professor

Schill:

Professor Aßmann:

Professor and Student Härtig:

Professor

Student

Schneider:Student

Müller:Student

Weckermann:Student

Person

Mehrfach-Vererbung ergibt ein Venn-Diagramm mit Überschneidungen

Prof. U. Aßmann, Softwaretechnologie 55

Eine Mehrfachvererbungs- struktur bildet

eine Halbordnung (gerichteten azyklischen Graphen, directed acyclic graph, dag)

einen Halbverband (falls mit gemeinsamer Oberklasse)

Einen Verband (falls mit gemeinsamer Ober- und Unterklasse)

Ein grosser Mehrfachvererbungsverband

eat() work() sleep() getName()

Person

giveLecture() Professor

visitLecture() drinkBeer()

Student salary

Employee

Professor Emeritus

visitUniversity() drinkBeer()

Alumnus

visitNullCourse()

Beginner LonglifeStudent

Prof. U. Aßmann, Softwaretechnologie 56

Realisierung von Mehrfachvererbung in Java

In UML ist es prinzipiell möglich, daß eine Klasse von mehreren Klassen erbt:

Termin

persönl.

Termin Team-

veranstaltung Hausveranstaltung Reise

Team-

besprechung Vortrag

Java unterstützt Mehrfachvererbung von Klassen nicht, nur von Schnittstellen

class Teambesprechung

extends Teamveranstaltung, Hausveranstaltung

(15)

Prof. U. Aßmann, Softwaretechnologie 57

Ersatz von Vererbung durch Komposition

Teambesprechung

persönl.

Termin Team-

veranstaltung Hausveranstaltung Reise

Team-Aspekt Orts-Aspekt

1 1

class Teambesprechung { private Teamaspekt ta;

private Ortsaspekt oa;

...

}

abstract class Teamaspekt { }

abstract class Teamveranstaltung extends Teamaspekt {

...

} Prof. U. Aßmann, Softwaretechnologie 58

Verschiedene Ähnlichkeitsrelationen (Similarity Relationships)

is-a: zeigt Ähnlichkeit an.

In Mengenhierarchien ist die Untermengenrelation gemeint (subset)

In Begriffshierarchien Unterkonzept-Relation (subconcept)

is-a ist azyklische Relation, bei einfacher Vererbung baumförmig

is-structured-like: zeigt ähnliche Struktur an (strukturelle Ähnlichkeit oder Gleichheit)

behaves-like: Verhaltensähnlichkeit

always-behaves-like: Konformanz (conformance), Ersetzbarkeit (substitutability)

sometimes-behaves-like: gelegentlich verhaltensgleich

restrictedly-behaves-like: im allgemeinen konformant, aber nicht in speziellen Situationen (extravagance, restriction inheritance)

Achtung: is-a, is-structured-like, behaves-like werden alle Vererbung genannt

instance-of: A ist aus einer Schablone B gemacht worden

Prof. U. Aßmann, Softwaretechnologie 59

Beispiel: Analyse-Klassendiagramm

Teambesprechung Termin

titel beginn

dauer

verschieben() {abstract}

raumFestlegen() einladen() absagen() verschieben() Privater

Termin wegzeitort

verschieben()

Terminverwaltung

1

*

Teammitglied leitet

Teilnahme 1

*

* 2..*

abteilungname terminBestätigen() Besprechungsraum

raumNr kapazität reservieren()

freigeben() freienRaumSuchen()

VeranstOrt

0..1

*

*

für 1

{abstract}

anzahl

Team name

1..* Leiter

0..1

1 1

Prof. U. Aßmann, Softwaretechnologie 60

Ausblick: Verfeinerung von Analyse- zum Entwurfsmodell

Analyse-Modell Entwurfs-Modell

Mehr Struktur & mehr Details

Notation: UML Objekte: Fachgegenstände

Klassen: Fachbegriffe

Attribute ohne Typen und Sichtbarkeiten Operationen: ohne Typen, Parameter und Rückgabewerte Assoziationen: partiell, bidirektional

i. Allg. ohne Datentypen Aggregationen, Kompositionen Leserichtung, partielle Multiplizitäten

Vererbung: Begriffsstruktur Annahme perfekter Technologie

Funktionale Essenz Völlig projektspezifisch

Grobe Strukturskizze

Notation: UML Objekte: Softwareeinheiten

Klassen: Schemata. Abstrakt, Interface, Stereotyp?

Attribute: Sichtbarkeiten, Ableitung, Klassenattribute, Initialisierung, weitere spezielle Eigenschaften

Operationen: voll typisiert, mit Parameter, Rückgabewert, Klassenoperation

Unidirektionale Assoziationen mit voller Multiplizität, Navigation, qualifizierte A.

Vererbung: Programmableitung Erfüllung konkreter Rahmenbedingungen

Gesamtstruktur des Systems Ähnlichkeiten zwischen

verwandten Projekten Genaue Strukturdefinition

(16)

Prof. U. Aßmann, Softwaretechnologie 61

The End

Viele Folien sind eine überarbeitete Version der Vorlesungsfolien zur Vorlesung Softwaretechnologie von © Prof. H. Hussmann, 2002.

used by permission.

Referenzen

ÄHNLICHE DOKUMENTE

 Festlegung der Attribute und Operatoren nicht für genau ein Objekt, sondern für eine Menge von Objekten gleicher Art.  Eine solche Menge von Objekten gleicher Art heißt

Für diese Aufgabe besteht jede Liste aus einem “Listen-Objekt” der Klasse LinkedIntList, welches die gesamte Liste repräsentiert, und aus mehreren “Knoten-Objekten” der

Für diese Aufgabe besteht jede Liste aus einem “Listen-Objekt” der Klasse LinkedIntList , welches die gesamte Liste repräsentiert, und aus mehreren “Knoten-Objekten” der

Durch das dargebotene Material werden die Schüler angeregt, sich mit verschiedenen kombinatorischen Fra- gestellungen auf der enaktiven, ikonischen und symbo- lischen Ebene

Das Pluszeichen vor dem Methodennamen (public) bedeutet, dass die Methode auch außerhalb der Klasse aufgerufen werden kann, der Eintrag double

Erzeugen Sie ein zweites Objekt ( person2 ) mit dem Namen Angela Merkel und dem Alter 56 sowie ein drittes Objekt für sich selbst mit Ihren eigenen Daten.. Achtung:

beschreiben die Eigenschaften einer Klasse beschreiben das Verhalten einer Klasse Beschreiben das Verhalten einer Klasse sind die konkreten Ausprägungen von In- stanz-variablen.

Im ersten Teil des Rechtecks steht der Name der Klasse, im zweiten Teil sind die Attribute/Instanzvariablen aufgeführt, die ein Objekt der Klasse beschreiben. Von jedem