17.01.2014 Aufrufe

3 Statische Konzepte in der objektorientierten Analyse - Universität ...

3 Statische Konzepte in der objektorientierten Analyse - Universität ...

3 Statische Konzepte in der objektorientierten Analyse - Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Grundlagen <strong>der</strong> Softwaretechnik<br />

Info 2 - GdS<br />

§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Lernziele<br />

– Erklären können, was e<strong>in</strong>e Assoziation ist<br />

– Erklären können, was e<strong>in</strong>e assoziative Klasse und e<strong>in</strong>e qualifizierte<br />

Assoziation s<strong>in</strong>d<br />

– Erklären können, was Aggregation und Komposition bedeuten<br />

– Erklären können, was Vererbung ist<br />

– Erklären können, was e<strong>in</strong> Paket ist<br />

– UML-Notation für Assoziation, Vererbung und Paket anwenden können<br />

– Assoziationen und Vererbung <strong>in</strong> e<strong>in</strong>em Text identifizieren und darstellen<br />

können<br />

– Klassen zu Paketen gruppieren können<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

149


3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

Info 2 - GdS<br />

§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong><br />

<strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

3.2 Assoziation<br />

3.3 Aggregation und Komposition<br />

3.4 Vererbung<br />

3.5 Paket<br />

3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

3.7 Zusammenfassung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

150


3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

Info 2 - GdS<br />

OOA-Modell (<strong>Analyse</strong>modell):<br />

Vererbung<br />

Assoziation<br />

<strong>Statische</strong><br />

<strong>Konzepte</strong><br />

Paket<br />

Anwendungsfall<br />

Szenario<br />

Dynamische<br />

<strong>Konzepte</strong><br />

Zustandsautomat<br />

Botschaft<br />

Attribut<br />

Operation<br />

Basiskonzepte<br />

Nicht verän<strong>der</strong>bare<br />

Aspekte<br />

(grundlegende Struktur)<br />

<strong>Statische</strong>s Modell<br />

Klasse<br />

Objekt<br />

Verhalten des Systems im<br />

Zeitverlauf<br />

(Abläufe,<br />

Kommunikationsfluss)<br />

Dynamisches Modell<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

151


3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

Info 2 - GdS<br />

OOA-Modell (<strong>Analyse</strong>modell):<br />

– Das statische Modell zeigt die Struktur<br />

Klassen beschreiben die Elemente des Fachkonzepts<br />

Assoziationen beschreiben die Beziehungen zwischen den Elementen<br />

Vererbung beschreibt die Verallgeme<strong>in</strong>erung von Klassen<br />

Attribute beschreiben Eigenschaften <strong>der</strong> Klassen (Daten des Systems)<br />

Pakete teilen das System <strong>in</strong> Teilsysteme auf<br />

– Das dynamische Modell zeigt Funktionsabläufe<br />

Anwendungsfälle beschreiben die durchzuführenden Aufgaben auf<br />

e<strong>in</strong>em sehr hohen Abstraktionsniveau<br />

Szenarios zeigen, wie Objekte mite<strong>in</strong>an<strong>der</strong> kommunizieren, um e<strong>in</strong>e<br />

bestimmte Aufgabe zu erledigen<br />

Zustandsautomaten beschreiben die Reaktionen e<strong>in</strong>es Objekts auf<br />

verschiedene Ereignisse<br />

Video: <strong>Statische</strong>s Modell mit dem UML-Werkzeug Poseidon<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

152


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Frage zu 3.1 : <strong>Statische</strong>s o<strong>der</strong> dynamisches Modell<br />

– Ordnen Sie die folgenden Aussagen dem statischen o<strong>der</strong> dem<br />

dynamischen Modell zu<br />

Aussage<br />

Beschreibt das Verhalten des zu entwickelnden<br />

Softwaresystems<br />

Bildet den stabilen Kern des <strong>objektorientierten</strong> Modells<br />

Beschreibt die Beziehungen zwischen Klassen (bzw.<br />

ihren Objekten)<br />

Zeigt, wie Objekte mite<strong>in</strong>an<strong>der</strong> kommunizieren, um e<strong>in</strong>e<br />

bestimmte Aufgabe zu erledigen<br />

Modelliert die Struktur des Softwaresystems<br />

Beschreibt die Reaktionen e<strong>in</strong>es Objekts auf<br />

verschiedene Ereignisse<br />

Enthält die Aufteilung des Systems <strong>in</strong> Teilsysteme<br />

<strong>Statische</strong>s<br />

Modell<br />

<br />

<br />

<br />

<br />

Dynamisches<br />

Modell<br />

<br />

<br />

<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

153


3.2 Assoziation<br />

Info 2 - GdS<br />

§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong><br />

<strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

3.2 Assoziation<br />

3.3 Aggregation und Komposition<br />

3.4 Vererbung<br />

3.5 Paket<br />

3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

3.7 Zusammenfassung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

154


3.2 Assoziation<br />

Info 2 - GdS<br />

Was ist e<strong>in</strong>e Assoziation?<br />

Def<strong>in</strong>ition:<br />

E<strong>in</strong>e Assoziation modelliert Verb<strong>in</strong>dungen zwischen Objekten e<strong>in</strong>er o<strong>der</strong><br />

mehrerer Klassen.<br />

Assoziation modelliert Verb<strong>in</strong>dungen zwischen Objekten, nicht<br />

zwischen Klassen!<br />

Beispiel:<br />

Objekte <strong>der</strong> Klasse Student (z.B. Paul, Susi o<strong>der</strong> Peter) haben e<strong>in</strong>e<br />

Verb<strong>in</strong>dung zu Objekten <strong>der</strong> Klasse Lehrveranstaltung (z.B. Grundlagen <strong>der</strong><br />

Softwaretechnik am Dienstag)<br />

Student<br />

besucht<br />

Lehrveranstaltung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

155


3.2 Assoziation<br />

Info 2 - GdS<br />

Beispiel: Assoziation zwischen Tank und Ventil<br />

– Klassendiagramm<br />

Tank<br />

Füllstand<br />

Soll-Niveau<br />

1 *<br />

besitzt<br />

Ventil<br />

Art<br />

Durchfluss<br />

Zustand<br />

Zeigt Klassen und ihre Beziehungen (statische Modellelemente)<br />

– Objektdiagramm<br />

T1:Tank<br />

Füllstand = 75<br />

Soll-Niveau = 80<br />

Zeigt Objekte und ihre Beziehungen<br />

(zu e<strong>in</strong>em bestimmten Zeitpunkt)<br />

V1:Ventil<br />

Art = E<strong>in</strong>lassventil<br />

Durchfluss = 4<br />

Zustand = offen<br />

V2:Ventil<br />

Art = Auslassventil<br />

Durchfluss = 7<br />

Zustand = geschlossen<br />

Die Menge aller Verb<strong>in</strong>dungen wird als Assoziation zwischen den<br />

Objekten <strong>der</strong> Klassen Tank und Ventil bezeichnet.<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

156


3.2 Assoziation<br />

Info 2 - GdS<br />

Eigenschaften von Assoziationen<br />

– Es gibt b<strong>in</strong>äre (zwischen zwei Objekten) und höherwertige Assoziationen<br />

– E<strong>in</strong>e reflexive Assoziation besteht zwischen Objekten <strong>der</strong>selben Klasse<br />

– E<strong>in</strong>e Assoziation hat e<strong>in</strong>e Richtung (Navigierbarkeit)<br />

"Welches Objekt ist über die Beziehung <strong>in</strong>formiert?"<br />

unidirektional<br />

bidirektional<br />

Assoziationen s<strong>in</strong>d <strong>in</strong> <strong>der</strong> Systemanalyse <strong>in</strong>härent bidirektional<br />

Objekte "kennen" sich gegenseitig<br />

– 3 Arten von Assoziation<br />

e<strong>in</strong>fache Assoziation<br />

Aggregation<br />

Komposition<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

157


3.2 Assoziation<br />

Info 2 - GdS<br />

UML Notation e<strong>in</strong>er Assoziation<br />

– B<strong>in</strong>äre Assoziation<br />

L<strong>in</strong>ie zwischen e<strong>in</strong>er o<strong>der</strong> zwei Klassen<br />

Assozationsname<br />

An jedem Ende <strong>der</strong> L<strong>in</strong>ie steht die Wertigkeit bzw. Kard<strong>in</strong>alität<br />

(multiplicity)<br />

"Wie viele Objekte kann e<strong>in</strong> bestimmtes Objekt kennen"<br />

An jedem Ende kann e<strong>in</strong> Rollenname stehen<br />

Klasse1<br />

Klasse2<br />

Attribut<br />

k1<br />

k2<br />

Attribut<br />

Operation()<br />

Operation()<br />

Klasse<br />

Attribut<br />

Operation()<br />

k2<br />

k1<br />

reflexive<br />

Assoziation<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

158


3.2 Assoziation<br />

Info 2 - GdS<br />

Assoziation im Objektdiagramm (Live-Mitschrieb)<br />

ObjectTec<br />

Maier<br />

Müller<br />

– Frage: Wie sieht das Klassendiagramm zu diesem Objektdiagramm aus?<br />

*<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

159


3.2 Assoziation<br />

Info 2 - GdS<br />

Name e<strong>in</strong>er Assoziation<br />

– Beschreibt Semantik (Bedeutung) <strong>der</strong> Assoziation<br />

– Beschreibt meistens nur e<strong>in</strong>e Richtung <strong>der</strong> Assoziation<br />

– E<strong>in</strong> schwarzes Dreieck gibt die Leserichtung an<br />

– Name darf fehlen, wenn die Bedeutung <strong>der</strong> Assoziation offensichtlich ist<br />

Prozessor<br />

Bezeichnung<br />

Taktfrequenz<br />

1 *<br />

benutzt<br />

Speicher<br />

Bezeichnung<br />

Größe<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

160


3.2 Assoziation<br />

Info 2 - GdS<br />

UML Notation <strong>der</strong> Kard<strong>in</strong>alität (Anzahl <strong>der</strong> Elemente)<br />

1<br />

0 ..1<br />

*<br />

3 ..*<br />

0..2<br />

2<br />

2, 4, 6<br />

1..5, 8, 10..*<br />

genau 1<br />

0 bis 1<br />

0 bis viele<br />

3 bis viele<br />

0 bis 2<br />

genau 2<br />

2, 4 o<strong>der</strong> 6<br />

nicht 6, 7 o<strong>der</strong> 9<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

161


3.2 Assoziation<br />

Info 2 - GdS<br />

Bedeutung <strong>der</strong> Kard<strong>in</strong>alität<br />

– Kann-Assoziation<br />

Untergrenze: Kard<strong>in</strong>alität 0<br />

– Muss-Assoziation<br />

Untergrenze: Kard<strong>in</strong>alität 1 o<strong>der</strong> größer<br />

muss<br />

kann<br />

Prozessor<br />

1<br />

Speicher<br />

Prozessor kann mehrere Speicher besitzen<br />

Es gibt Prozessoren, die ke<strong>in</strong>en Speicher besitzen<br />

Je<strong>der</strong> Speicher gehört genau zu e<strong>in</strong>em Prozessor<br />

muss<br />

muss<br />

Prozessor<br />

1<br />

1..<br />

Speicher<br />

Je<strong>der</strong> Prozessor muss m<strong>in</strong>destens e<strong>in</strong>en Speicher besitzen<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

162


3.2 Assoziation<br />

Info 2 - GdS<br />

Rollenname (1)<br />

– Beschreibt Bedeutung e<strong>in</strong>es Objekts <strong>in</strong> e<strong>in</strong>er Assoziation<br />

– B<strong>in</strong>äre Assoziationen besitzen maximal zwei Rollen<br />

– Wird an das Ende <strong>der</strong> Assoziation bei <strong>der</strong> Klasse geschrieben, <strong>der</strong>en<br />

Bedeutung <strong>in</strong> <strong>der</strong> Assoziation die Rolle beschreibt<br />

– Beispiel für Klassendiagramm<br />

– Beispiel für<br />

Implementierung<br />

Prozessor<br />

Bezeichnung<br />

Taktfrequenz<br />

1 1..*<br />

CPU<br />

Speicher<br />

Bezeichnung<br />

Größe<br />

class Speicher<br />

{<br />

Prozessor CPU;<br />

}<br />

. . .<br />

Rollennamen tragen zur Verständlichkeit des<br />

Modells mehr bei als <strong>der</strong> Assoziationsname<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

163


3.2 Assoziation<br />

Info 2 - GdS<br />

Rollenname (2)<br />

– Rollenname ist nicht optional ...<br />

wenn zwischen zwei Klassen mehr als e<strong>in</strong>e Assoziation besteht<br />

Prozessor<br />

Bezeichnung<br />

Taktfrequenz<br />

1 1..*<br />

CPU<br />

* 1..*<br />

Graphikkarte<br />

Speicher<br />

Bezeichnung<br />

Taktfrequenz<br />

bei reflexiven Assoziationen<br />

Rechner<br />

IP-Adresse<br />

Standort<br />

Protokolle<br />

Client<br />

*<br />

Server 1<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

164


3.2 Assoziation<br />

Info 2 - GdS<br />

Gerichtete Assoziation<br />

– Nur e<strong>in</strong> Objekt ist über Beziehung <strong>in</strong>formiert (unidirektionale Navigierbarkeit)<br />

– Nur <strong>in</strong> die Navigationsrichtung können Botschaften geschickt werden.<br />

– Darstellung durch geöffnete Pfeilspitze<br />

Tank<br />

steuert<br />

1. .*<br />

Alarmsignal<br />

Hupe<br />

E<strong>in</strong>er Hupe ist nicht bekannt,<br />

von welchen Tanks sie als<br />

Alarmsignal verwendet wird.<br />

– Jede bidirektionale Assoziation kann durch zwei unidirektionale<br />

Assoziationen ausgedrückt werden<br />

Tank<br />

1. .*<br />

steuert<br />

1. .*<br />

wird<br />

gesteuert von<br />

Hupe<br />

Tank<br />

1. .*<br />

steuert<br />

1. .*<br />

Hupe<br />

Navigierbarkeit <strong>in</strong> <strong>der</strong> <strong>Analyse</strong> nur <strong>in</strong> Ausnahmefällen festlegen<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

165


3.2 Assoziation<br />

Info 2 - GdS<br />

Geordnete Assoziation<br />

– Zeigt an, dass die Menge <strong>der</strong> Objektverb<strong>in</strong>dungen geordnet ist<br />

– Möglich bei Kard<strong>in</strong>alität größer e<strong>in</strong>s<br />

– Kennzeichnung <strong>der</strong> Ordnung durch das Schlüsselwort {or<strong>der</strong>ed}<br />

Ke<strong>in</strong>e Aussage über Def<strong>in</strong>ition <strong>der</strong> Ordnung (z.B. zeitlich, alphabetisch)<br />

Register<br />

1 {or<strong>der</strong>ed}*<br />

Speicherstelle<br />

Bit<br />

1. Stelle<br />

:Bit<br />

:Register<br />

2. Stelle<br />

:Bit<br />

3. Stelle<br />

:Bit<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

166


3.2 Assoziation<br />

Info 2 - GdS<br />

Restriktion (constra<strong>in</strong>t) e<strong>in</strong>er Assoziation<br />

– Bed<strong>in</strong>gung, die stets erfüllt se<strong>in</strong> muss<br />

– E<strong>in</strong>schränkung <strong>der</strong> möglichen Inhalte e<strong>in</strong>es Modellelements<br />

Angestellter<br />

Name<br />

Gehalt<br />

Position<br />

Mitarbeiter<br />

*<br />

Chef<br />

0..1<br />

{Chef.Gehalt><br />

Mitarbeiter.Gehalt}<br />

a1: Angestellter<br />

Gehalt = 7000<br />

Chef<br />

Mitarbeiter<br />

a2: Angestellter<br />

Gehalt = 5000<br />

a3: Angestellter<br />

Gehalt = 4500<br />

Chef<br />

Mitarbeiter<br />

a4: Angestellter<br />

Gehalt = 3000<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

167


3.2 Assoziation<br />

Info 2 - GdS<br />

or-Restriktion e<strong>in</strong>er Assoziation<br />

– Zu jedem beliebigen Zeitpunkt kann nur e<strong>in</strong>e von mehreren möglichen<br />

Assoziationen gelten<br />

– or- Restriktion kann sich auf mehr als zwei Assoziationen beziehen<br />

– Wichtig: E<strong>in</strong>bezogene Klassen müssen unterschiedliche Rollennamen haben<br />

Fehlt <strong>der</strong> Rollenname, gilt: Name <strong>der</strong> Klasse = Rollenname<br />

lagert <strong>in</strong><br />

1<br />

Hochregallager<br />

Palette1<br />

Palette<br />

*<br />

*<br />

{or}<br />

lagert <strong>in</strong><br />

1<br />

Lagerraum<br />

Palette2<br />

:Hochregallager<br />

:Lagerraum<br />

subset-Restriktion e<strong>in</strong>er Assoziation<br />

Sportler<br />

Teilnehmer<br />

*<br />

Sieger<br />

{subset}<br />

*<br />

0..1<br />

*<br />

Wettbewerb<br />

siehe Kap. 3.6<br />

Erweiterungsmechanismen<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

168


3.2 Assoziation<br />

Info 2 - GdS<br />

Beispiel für or-Restriktion: Umleitventil (Live-Mitschrieb)<br />

Umleit-<br />

ventil<br />

Abfluss<br />

1<br />

{or}<br />

1<br />

Speicherung<br />

Pumpe<br />

Druckspeicher<br />

– Java Code<br />

class Umleitventil {<br />

Pumpe Abfluss;<br />

Druckspeicher Speicherung;<br />

...<br />

}<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

169


3.2 Assoziation<br />

Info 2 - GdS<br />

Assoziative Klasse (association class)<br />

– Assoziationen können zusätzlich die Eigenschaften e<strong>in</strong>er Klasse besitzen<br />

– Darstellung mit Klassensymbol und gestrichelter L<strong>in</strong>ie<br />

– Name <strong>der</strong> Assoziation und <strong>der</strong> Assoziationsklasse s<strong>in</strong>d stets identisch<br />

Sen<strong>der</strong><br />

Name<br />

Adresse<br />

1 *<br />

Kanal<br />

Protokoll<br />

Zustand<br />

Empfänger<br />

Name<br />

Adresse<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

170


3.2 Assoziation<br />

Info 2 - GdS<br />

Verwendung von assoziativen Klassen (1)<br />

– Erfor<strong>der</strong>lich für Attribute und Operationen, die we<strong>der</strong> <strong>der</strong> e<strong>in</strong>en noch <strong>der</strong><br />

an<strong>der</strong>en Klasse zugeordnet werden können, son<strong>der</strong>n Eigenschaft <strong>der</strong><br />

Beziehung selbst s<strong>in</strong>d.<br />

– Werden nur <strong>in</strong> <strong>der</strong> <strong>Analyse</strong> verwendet<br />

– Im Entwurf Umwandlung <strong>in</strong> e<strong>in</strong>e richtige Klasse<br />

Klasse 1<br />

Rolle 1<br />

k1<br />

Rolle 2<br />

k2<br />

Klasse 2<br />

Klasse 1<br />

Rolle 1<br />

Assoziationsklasse<br />

Assoziationsklasse<br />

Rolle 2<br />

1 Rolle 2 Rolle 1 1<br />

k2<br />

k1<br />

Wichtig:<br />

Übernahme <strong>der</strong><br />

Kard<strong>in</strong>alitäten!<br />

Klasse 2<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

171


3.2 Assoziation<br />

Info 2 - GdS<br />

Verwendung von assoziativen Klassen (2)<br />

– Beispiel: Umwandlung e<strong>in</strong>er Assoziationsklasse<br />

Sen<strong>der</strong><br />

Name<br />

Adresse<br />

1 *<br />

Kanal<br />

Protokoll<br />

Zustand<br />

Empfänger<br />

Name<br />

Adresse<br />

Sen<strong>der</strong><br />

Name<br />

Adresse<br />

Empfänger<br />

Name<br />

Adresse<br />

1 1<br />

*<br />

Kanal<br />

Protokoll<br />

Zustand<br />

1<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

172


3.2 Assoziation<br />

Info 2 - GdS<br />

Qualifizierte Assoziation<br />

– E<strong>in</strong>teilung <strong>der</strong> Menge <strong>der</strong> assoziierten Objekte durch spezielles Attribut,<br />

dessen Wert e<strong>in</strong> o<strong>der</strong> mehrere Objekte auf <strong>der</strong> an<strong>der</strong>en Seite selektiert<br />

– Erhöhen den Informationsgehalt des Klassenmodells<br />

– Das qualifizierende Attribut wird <strong>in</strong> e<strong>in</strong>em Rechteck an <strong>der</strong> Seite <strong>der</strong><br />

Klasse notiert<br />

Mitarbeiter<br />

Name<br />

Personalnr.<br />

* beschaeftigt 1<br />

Unternehmen<br />

Name<br />

Anschrift<br />

E<strong>in</strong> Unternehmen<br />

beschäftigt e<strong>in</strong>e Menge<br />

von Mitarbeitern<br />

Je<strong>der</strong> Mitarbeiter<br />

gehört genau zu<br />

e<strong>in</strong>em Unternehmen<br />

Mitarbeiter<br />

Name<br />

Personalnr.<br />

1<br />

beschaeftigt 1<br />

Personalnr.<br />

Unternehmen<br />

Name<br />

Anschrift<br />

Mitarbeiter werden<br />

über ihre Personalnummer<br />

identifiziert<br />

Qualifikationsangaben können die Kard<strong>in</strong>alität verän<strong>der</strong>n!<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

173


3.2 Assoziation<br />

Info 2 - GdS<br />

Beispiel zu qualifizierte Assoziation<br />

– Ohne Qualifikation<br />

Schnittstellenkarte<br />

Typ<br />

Steckplatznr.<br />

* bedient 0..1<br />

PC-Bus<br />

Übertragungsrate<br />

PC-Bus bedient viele<br />

Schnittstellenkarten<br />

– Mit Qualifikation<br />

Schnittstellenkarte<br />

Typ<br />

Steckplatznr.<br />

1<br />

bedient 0..1<br />

Steckplatznr.<br />

PC-Bus<br />

Übertragungsrate<br />

PC-Bus-Objekt<br />

zusammen mit<br />

Steckplatznummer<br />

selektiert genau e<strong>in</strong>e<br />

Schnittstellenkarte<br />

– Veranschaulichung:<br />

Bezeichnung(Karte) Steckplatznr. Typ (PC-Bus)<br />

Graphikkarte 1 IDE-Bus<br />

Soundkarte 2 IDE-Bus<br />

Festplattencontroller 5 SCSI-Bus<br />

Video: Anwendungsbeispiel Sortierband - Assoziationen<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

174


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Frage zu 3.2<br />

Beschreiben Sie mit eigenen Worten, welche Art von Beziehung zwischen<br />

den zwei Klassen <strong>in</strong> dem nachfolgend abgebildeten Modell besteht.<br />

Person<br />

Name<br />

Vorname<br />

1..*<br />

*<br />

Volkshochschulkurs<br />

Nummer<br />

Bezeichnung<br />

Antwort<br />

– Bidirektionale Assoziation zwischen Person und Volkshochschulkurs<br />

– E<strong>in</strong>e Person kann null o<strong>der</strong> mehrere VHS-Kurse besuchen<br />

– Je<strong>der</strong> VHS-Kurs hat m<strong>in</strong>destens e<strong>in</strong>en Teilnehmer<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

175


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Frage zu 3.2<br />

Folgendes Diagramm ist gegeben:<br />

Student<br />

4<br />

Vere<strong>in</strong><br />

1<br />

3<br />

Unternehmen<br />

2<br />

Raum<br />

a) "arbeitet für“, b) "besitzt“,<br />

c) "nutzt“, d) "ist Mitglied",<br />

e) "befreundet mit“,<br />

f) "schraubt"<br />

Wie könnte die Bezeichnung <strong>der</strong> Assoziationen lauten?<br />

Antwort<br />

Möglichkeit 1: Möglichkeit 2:<br />

Student<br />

arbeitet<br />

für<br />

Unternehmen<br />

Student<br />

arbeitet<br />

für<br />

Unternehmen<br />

ist<br />

Mitglied<br />

Vere<strong>in</strong><br />

nutzt<br />

Raum<br />

besitzt<br />

arbeitet<br />

für<br />

Vere<strong>in</strong><br />

besitzt<br />

Raum<br />

nutzt<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

176


3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong><br />

<strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

3.2 Assoziation<br />

3.3 Aggregation und Komposition<br />

3.4 Vererbung<br />

3.5 Paket<br />

3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

3.7 Zusammenfassung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

177


Füllstandsmesser<br />

3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

Aggregation<br />

Def<strong>in</strong>ition: E<strong>in</strong>e Aggregation bezeichnet e<strong>in</strong>e "Teil-Ganzes“- (whole-part)<br />

o<strong>der</strong> "ist-Teil-von“-Beziehung zwischen Klassen<br />

Ganzes<br />

Aggregatklasse<br />

Teil<br />

Teilklasse<br />

– Aggregation ist e<strong>in</strong>e spezielle Form <strong>der</strong> Assoziation<br />

– Lässt sich durch ist Teil von bzw. besteht aus beschreiben (Ganzes – Teile)<br />

– Raute kennzeichnet das Ganze<br />

Beispiel:<br />

Max-Niveau<br />

Soll-Niveau<br />

Füllstand<br />

Tank<br />

Füllstand<br />

Max-Niveau<br />

Soll-Niveau<br />

besteht aus ><br />

< ist Teil von<br />

Füllstandsmesser<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

178


3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

Eigenschaften <strong>der</strong> Aggregation<br />

– ist asymmetrisch<br />

wenn B Teil von A ist, dann darf A nicht Teil von B se<strong>in</strong><br />

– ist transitiv<br />

wenn A Teil von B und B Teil von C, dann ist auch A Teil von C<br />

Anlage<br />

besteht aus<br />

1 1..*<br />

Tank<br />

besteht aus<br />

1 1..*<br />

Füllstandsmesser<br />

– muss nicht exklusiv se<strong>in</strong><br />

B darf gleichzeitig Teil von A und Teil von C se<strong>in</strong><br />

Abteilung<br />

beschäftigt<br />

1..* 1..*<br />

arbeitet für<br />

Freier Mitarbeiter<br />

– Das Ganze übernimmt Aufgaben stellvertretend für se<strong>in</strong>e Teile<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

179


3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

Transivität e<strong>in</strong>er <strong>der</strong> Aggregation (Live-Mitschrieb)<br />

– Beispiel Pkw:<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

180


3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

Wann liegt e<strong>in</strong>e Aggregation vor?<br />

– E<strong>in</strong>e Aggregation liegt vor, wenn die folgenden Fragen mit ja beantwortet<br />

werden können:<br />

1. Ist die Beschreibung ”Teil von” zutreffend?<br />

2. Werden manche Operationen auf das ”Ganze” automatisch auch auf<br />

die ”Teile” angewandt?<br />

3. Pflanzen sich manche Attribute vom ”Ganzen” auf alle o<strong>der</strong> e<strong>in</strong>ige<br />

”Teile” fort?<br />

4. Ist die Verb<strong>in</strong>dung durch e<strong>in</strong>e Asymmetrie gekennzeichnet, bei <strong>der</strong> die<br />

”Teile” dem ”Ganzen” untergeordnet s<strong>in</strong>d?<br />

– Beispiele für Aggregationsbeziehungen<br />

Das Ganze und se<strong>in</strong>e Teile<br />

Bsp.: Pkw (Ganzes) und Motor (Teil)<br />

Der Behälter und se<strong>in</strong> Inhalt<br />

Bsp.: Kaffeemasch<strong>in</strong>e (Behälter) und Kaffeepulver (Inhalt)<br />

Die Kollektion und ihre Mitglie<strong>der</strong><br />

Bsp.: Firma (Kollektion) und Angestellte (Mitglie<strong>der</strong>)<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

181


3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

Komposition<br />

Def<strong>in</strong>ition: E<strong>in</strong>e Aggregation mit starker B<strong>in</strong>dung (Existenzabhängigkeit) wird<br />

als Komposition bezeichnet<br />

Ganzes<br />

Aggregation<br />

Teil<br />

Komposition<br />

Existenzabhängiges<br />

Teil<br />

– Kennzeichung durch gefüllte Raute<br />

Beispiel:<br />

Buch<br />

besteht<br />

aus<br />

ist Teil<br />

von<br />

Kapitel<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

182


3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

Eigenschaften <strong>der</strong> Komposition<br />

Zusätzlich zur Aggregation gilt:<br />

– Jedes Objekt <strong>der</strong> Teilklasse kann zu e<strong>in</strong>em bestimmten Zeitpunkt<br />

nur Komponente e<strong>in</strong>es e<strong>in</strong>zigen Objekts <strong>der</strong> Aggregatklasse se<strong>in</strong><br />

Kard<strong>in</strong>alität <strong>der</strong> Aggregatklasse


3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

Vergleich Aggregation vs. Komposition (2)<br />

PKW<br />

1<br />

hat<br />

4..5<br />

Rad<br />

Fenster<br />

1<br />

hat<br />

1..*<br />

Rahmen<br />

– Aggregation: "Pkw hat Rä<strong>der</strong>“<br />

Rä<strong>der</strong> gehören notwendigerweise zu e<strong>in</strong>em Auto<br />

Aggregation<br />

Rä<strong>der</strong> können aber eigenständig und zwischen Pkw austauschbar<br />

betrachtet werden<br />

ke<strong>in</strong>e Komposition<br />

– Komposition: „Fenster hat Rahmen“<br />

Wird das Fenster gelöscht, werden auch alle existenzabhängigen<br />

E<strong>in</strong>zelteile mitgelöscht<br />

Komposition<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

184


3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

Beispiel Reiseunternehmen<br />

E<strong>in</strong> Reiseunternehmen erarbeitet e<strong>in</strong> Klassenmodell für die Verwaltung se<strong>in</strong>er<br />

Reisekataloge, se<strong>in</strong>er Reisebeschreibungen und <strong>der</strong> Reiseunterlagen. Selbstverständlich<br />

beschreibt e<strong>in</strong>e Klasse auch den Touristen, <strong>der</strong> die Reisen bucht.<br />

– E<strong>in</strong> Reisekatalog enthält e<strong>in</strong>e o<strong>der</strong> mehrere Reisebeschreibungen.<br />

– Die Reiseunterlagen für den Touristen werden aus e<strong>in</strong>zelnen Reisebeschreibungen,<br />

eventuell aus verschiedenen Katalogen, zusammengestellt.<br />

– Mehrere Touristen können auch geme<strong>in</strong>same Reiseunterlagen erhalten.<br />

hat<br />

bezieht sich auf<br />

Tourist Reiseunterlagen Katalog<br />

1..* 1..*<br />

0..* 1..*<br />

1<br />

1<br />

besteht aus<br />

besteht aus<br />

1..*<br />

1..*<br />

Reisebeschreibung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

185


3.3 Aggregation und Komposition<br />

Info 2 - GdS<br />

Beispiel Tanksystem<br />

– E<strong>in</strong> Tanksystem besteht aus mehreren<br />

Tanks, E<strong>in</strong>- bzw. Auslassventilen,<br />

Füllstandsmessern und Rohrleitungen<br />

– Je<strong>der</strong> Tank hat e<strong>in</strong> bis zwei E<strong>in</strong>lassventile,<br />

e<strong>in</strong> Auslassventil und e<strong>in</strong>en<br />

Füllstandsmesser<br />

– Je zwei Ventile unterschiedlichen Typs<br />

können über Rohrleitungen mite<strong>in</strong>an<strong>der</strong><br />

verbunden se<strong>in</strong>.<br />

1<br />

Füllstandsmesser<br />

Tank<br />

Füllstand<br />

Soll-Niveau<br />

füllen()<br />

leeren()<br />

setze_Soll-Niveau()<br />

1..2<br />

1<br />

E<strong>in</strong>lassventil<br />

0..1<br />

0..1<br />

Auslassventil<br />

Rohrleitung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

186


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Frage zu 3.3<br />

1. Gegeben seien die Klassen Haus und Zimmer. Welche Art Beziehung<br />

würden Sie zwischen beiden modellieren?<br />

Die e<strong>in</strong>fache Assoziation "hat Beziehung zu“<br />

Die Aggregation "besteht aus"<br />

Begründung:<br />

Existenzabhängigkeit<br />

zwischen Haus und Zimmer<br />

<br />

Die Komposition "besteht aus"<br />

2. Gegeben seien die Klassen Haus und Mieter. Welche Art <strong>der</strong> Assoziation<br />

würden Sie modellieren?<br />

<br />

Die e<strong>in</strong>fache Assoziation "hat"<br />

Die Aggregation "setzt sich zusammen aus"<br />

Die Komposition "besteht aus"<br />

Begründung: Die Beziehung<br />

zwischen Haus und Mietern<br />

ist nicht so <strong>in</strong>nig. Aggregation<br />

ist auch noch vertretbar.<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

187


3.4 Vererbung<br />

Info 2 - GdS<br />

§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong><br />

<strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

3.2 Assoziation<br />

3.3 Aggregation und Komposition<br />

3.4 Vererbung<br />

3.5 Paket<br />

3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

3.7 Zusammenfassung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

188


3.4 Vererbung<br />

Info 2 - GdS<br />

Ähnliches Verhalten von Objekten (Live-Mitschrieb)<br />

Ordner<br />

e<strong>in</strong>fügen<br />

= im Ordner abheften<br />

Mappe<br />

e<strong>in</strong>fügen<br />

= <strong>in</strong> <strong>der</strong> Mappe ablegen<br />

Ablage<br />

e<strong>in</strong>fügen<br />

Ordner<br />

Mappe<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

189


3.4 Vererbung<br />

Info 2 - GdS<br />

Was ist Vererbung?<br />

Def<strong>in</strong>ition: E<strong>in</strong>e Vererbung (generalization) ist e<strong>in</strong>e Beziehung zwischen<br />

e<strong>in</strong>er allgeme<strong>in</strong>en Klasse und e<strong>in</strong>er spezialisierten Klasse.<br />

Vererbung f<strong>in</strong>det nur zwischen Klassen statt!<br />

– Vererbung ist e<strong>in</strong> Abstraktionspr<strong>in</strong>zip zur hierarchischen Strukturierung<br />

(E<strong>in</strong>ordnung <strong>der</strong> Klassen <strong>in</strong> e<strong>in</strong>e Hierarchie)<br />

– Ziel: Geme<strong>in</strong>same Eigenschaften und Verhaltensweisen zusammenfassen<br />

– Spezialisierte Klasse ist vollständig konsistent mit allgeme<strong>in</strong>er Klasse,<br />

kann aber zusätzliche Informationen (Attribute, Operationen,<br />

Assoziationen) haben<br />

– Allgeme<strong>in</strong>e Klasse = Oberklasse (super class)<br />

– Spezialisierte Klasse = Unterklasse (sub class)<br />

Oberklasse<br />

Unterklasse<br />

Generalisierung<br />

Spezialisierung<br />

Substitutionspr<strong>in</strong>zip: Objekt <strong>der</strong> Unterklasse kann überall verwendet<br />

werden, wo e<strong>in</strong> Objekt <strong>der</strong> Oberklasse erlaubt ist, aber nicht umgekehrt!<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

190


3.4 Vererbung<br />

Beispiel e<strong>in</strong>er Vererbungsstruktur<br />

Zustand<br />

Ventil<br />

öffnen()<br />

schliessen()<br />

Leitungselement<br />

Nummer<br />

Länge<br />

Breite<br />

Höhe<br />

Durchfluss<br />

Umschaltventil<br />

Anzahl Abflüsse<br />

än<strong>der</strong>eRichtung()<br />

Pumpe<br />

Typ<br />

Pumpleistung<br />

start()<br />

stop()<br />

Pumpe<br />

Typ<br />

Nummer<br />

Länge<br />

Breite<br />

Höhe<br />

Durchfluss<br />

Pumpleistung<br />

start()<br />

stop()<br />

Vererbung ist e<strong>in</strong>e "ist e<strong>in</strong>" Beziehung<br />

Info 2 - GdS<br />

Ventil<br />

Nummer<br />

Länge<br />

Breite<br />

Höhe<br />

Durchfluss<br />

Zustand<br />

öffnen()<br />

schliessen()<br />

Umschaltventil<br />

Nummer<br />

Länge<br />

Breite<br />

Höhe<br />

Durchfluss<br />

Zustand<br />

Anzahl Abflüsse<br />

öffnen()<br />

schliessen()<br />

än<strong>der</strong>eRichtung()<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

191


3.4 Vererbung<br />

Info 2 - GdS<br />

UML Notation <strong>der</strong> Vererbung<br />

– Weißes bzw. transparentes Dreieck bei <strong>der</strong> Oberklasse<br />

Klasse1<br />

Klasse1<br />

Klasse2<br />

Klasse3<br />

Klasse2<br />

Klasse3<br />

Darstellungen gleichwertig alternativ verwendbar<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

192


3.4 Vererbung<br />

Info 2 - GdS<br />

Was wird vererbt ?<br />

– Operationen, Attribute und Assoziationen<br />

Objektdiagramm<br />

Klassendiagramm<br />

Obj3:AnyClass<br />

Objekt1<br />

<br />

SuperClass<br />

1<br />

AnyClass<br />

AttributA = Wert1<br />

AttributA<br />

Klassenattribut = W<br />

OperationA()<br />

Obj4:AnyClass<br />

Objekt2<br />

<br />

SubClass<br />

1 OtherClass<br />

Obj5:OtherClass<br />

AttributA = Wert2<br />

AttributB = Wert3<br />

AttributB<br />

OperationB()<br />

1. Attribut A von Superclass wird nach Subclass vererbt<br />

2. 0perationenA() von Superclass auch auf Subclass anwendbar<br />

3. Klassenattribut mit dem Wert W von Superclass an Subclass<br />

4. Assoziation zwischen Superclass und AnyClass an Subclass<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

193


3.4 Vererbung<br />

Info 2 - GdS<br />

Überschreiben von Operationen<br />

– Unterklassen können das Verhalten ihrer Oberklassen verfe<strong>in</strong>ern,<br />

redef<strong>in</strong>ieren bzw. überschreiben (redef<strong>in</strong>e, override)<br />

– Operationen können <strong>in</strong> <strong>der</strong> Unterklasse überschrieben, aber nicht<br />

elim<strong>in</strong>iert werden<br />

Gleiche Signatur <strong>der</strong> Operationen erfor<strong>der</strong>lich!<br />

Konto<br />

Kontonummer<br />

Kontostand<br />

buchen ()<br />

Durchfluss<br />

Zustand<br />

öffnen ()<br />

Ventil<br />

buchen ()<br />

Sparkonto<br />

Magnetventil<br />

öffnen ()<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

194


3.4 Vererbung<br />

Info 2 - GdS<br />

Abstrakte Klasse<br />

– Unterscheidung zwischen abstrakten und konkreten Klassen<br />

– Von e<strong>in</strong>er abstrakten Klasse können ke<strong>in</strong>e Objekte erzeugt werden<br />

– Verwendung, um ihre Informationen an spezialisierte Klassen zu vererben<br />

– Kennzeichnung durch kursiven Namen o<strong>der</strong> durch Merkmal {abstract}<br />

– E<strong>in</strong>e abstrakte Klasse kann abstrakte Operationen enthalten. Abstrakte<br />

Operationen müssen <strong>in</strong> <strong>der</strong> Unterklasse implementiert werden.<br />

Abstrakte Klasse ohne Vererbung s<strong>in</strong>nlos<br />

Person<br />

{abstract}<br />

Säugetier<br />

{abstract}<br />

Pflanzenfresser<br />

{abstract}<br />

Fleischfresser<br />

{abstract}<br />

Frau<br />

Mann<br />

Kuh<br />

Tiger<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

195


3.4 Vererbung<br />

Info 2 - GdS<br />

Polymorphismus<br />

Def<strong>in</strong>ition:<br />

E<strong>in</strong>e Botschaft ist polymorph, wenn sie bei unterschiedlichen Objekten<br />

Methoden aktiviert, die verschiedene Semantiken besitzen.<br />

– Polymorphie bedeutet unterschiedliches Verhalten verschiedener Objekte<br />

auf die gleiche Botschaft<br />

Beispiel<br />

– Methode move(Position) bei den verschieden<br />

Spielfiguren unterschiedlich implementiert<br />

Turm: Nur geradeaus<br />

Läufer: Nur diagonal<br />

Spr<strong>in</strong>ger: 1 Feld gerade, 1 Feld diagonal<br />

Gleiche Botschaft move(Position) löst<br />

unterschiedliche Reaktion aus<br />

Turm<br />

move(Pos)<br />

Schachfigur<br />

{abstract}<br />

Position<br />

move(Pos)<br />

{abstract}<br />

Läufer<br />

move(Pos)<br />

Spr<strong>in</strong>ger<br />

move(Pos)<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

196


3.4 Vererbung<br />

Info 2 - GdS<br />

Funktionsweise des Polymorphismus (Live-Mitschrieb)<br />

– Beispiel Schachspiel<br />

Spieler<br />

me<strong>in</strong>eFiguren: list of SchachFigur<br />

me<strong>in</strong>eFiguren = (:Turm, :Bauer, :Spr<strong>in</strong>ger, :Läufer, :Turm, ...)<br />

move(Pos)<br />

– Methode move(Pos) unterschiedliche Reaktionen<br />

– Z.B. me<strong>in</strong>eFiguren[2].move(a3)<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

197


3.4 Vererbung<br />

Info 2 - GdS<br />

Beispiel für Vererbung (1)<br />

– Auf e<strong>in</strong>er Fensterfläche sollen Kreise, Rechtecke und Dreiecke angezeigt,<br />

verschoben und entfernt werden können.<br />

– Die Begriffe Kreis, Rechteck und Dreieck können generalisiert und ganz<br />

allgeme<strong>in</strong> als geometrische Figuren bezeichnet werden.<br />

– Die Klassen Kreis, Rechteck und Dreieck s<strong>in</strong>d demnach Spezialisierungen<br />

<strong>der</strong> geme<strong>in</strong>samen Oberklasse GeomFigur<br />

GeomFigur<br />

Oberklasse<br />

Figurenform<br />

Diskrim<strong>in</strong>ator: Unterscheidungsmerkmal:<br />

gibt an,<br />

nach welchem Kriterium<br />

e<strong>in</strong>e Vererbungsstruktur<br />

erstellt wird<br />

Dreieck<br />

Kreis<br />

Rechteck<br />

Unterklasse<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

198


3.4 Vererbung<br />

Info 2 - GdS<br />

Beispiel für Vererbung (2)<br />

– Klassendiagramm<br />

GeomFigur<br />

{abstract}<br />

x: Integer<br />

y: Integer<br />

sichtbar: Boolean<br />

anzeigen() {abstract}<br />

entfernen() {abstract}<br />

verschiebeZu(pX, pY)<br />

Figurenform<br />

Abstrakte<br />

Klasse<br />

Diskrim<strong>in</strong>ator<br />

Kreis<br />

Rechteck<br />

Dreieck<br />

radius {radius > 0}<br />

setRadius(pR)<br />

anzeigen()<br />

entfernen()<br />

a {a > 0}<br />

b {b > 0}<br />

setKanten(pA, pB)<br />

anzeigen()<br />

entfernen()<br />

a {c-b < a < b+c}<br />

b {a-c < b < a+c}<br />

c {a-b < c < a+b}<br />

setKanten(pA, pB, pC)<br />

anzeigen()<br />

entfernen()<br />

Konkrete<br />

Klassen<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

199


3.4 Vererbung<br />

Info 2 - GdS<br />

Beispiel für Vererbung (3)<br />

– Java-Programmcode (Ausschnitt)<br />

abstract class GeomFigur<br />

{<br />

<strong>in</strong>t x, y;<br />

boolean sichtbar;<br />

}<br />

public abstract void anzeigen();<br />

public abstract void entfernen();<br />

public void verschiebeZu(<strong>in</strong>t pX,pY)<br />

{<br />

if (sichtbar)<br />

{<br />

entfernen();<br />

this.x = pX;<br />

this.y = pY;<br />

anzeigen();<br />

} else<br />

{<br />

this.x = pX;<br />

this.y = pY;<br />

}<br />

}<br />

class Rechteck extends GeomFigur<br />

{<br />

<strong>in</strong>t a, b;<br />

}<br />

public void anzeigen()<br />

{...}<br />

public void entfernen()<br />

{...}<br />

public void setKanten(<strong>in</strong>t pA, pB)<br />

{<br />

if ((a > 0) && (b > 0))<br />

{<br />

this.a = pA;<br />

this.b = pB;<br />

}<br />

}<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

200


3.4 Vererbung<br />

Info 2 - GdS<br />

Vor- und Nachteile <strong>der</strong> Vererbung<br />

+ Unterstützung <strong>der</strong> Än<strong>der</strong>barkeit<br />

Än<strong>der</strong>ung von Attributen <strong>in</strong> <strong>der</strong> Oberklasse wirkt sich automatisch auf<br />

alle Unterklassen aus<br />

+ E<strong>in</strong>sparung von Code<br />

+ Unterstützung <strong>der</strong> Wie<strong>der</strong>verwendbarkeit<br />

– Verletzung des Geheimnispr<strong>in</strong>zips<br />

Unterklasse ist von Än<strong>der</strong>ungen <strong>der</strong> Oberklasse abhängig<br />

Um die Unterklasse zu verstehen, muß<br />

auch die Oberklasse betrachtet werden<br />

Vererbung ist e<strong>in</strong> mächtiges, aber auch schwieriges Konzept<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

201


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Frage zu 3.4<br />

Kann e<strong>in</strong> Objekt Attribute und Methoden erben?<br />

Antwort<br />

Ja<br />

<br />

Ne<strong>in</strong><br />

Ja, außer Klassenattribute und -operationen<br />

Begründung<br />

– Die Klasse kann Attribute und Methoden von an<strong>der</strong>en Klassen erben<br />

– Objekt bekommt die Attribute und Methoden se<strong>in</strong>er Klasse bei <strong>der</strong><br />

Erzeugung aufgeprägt<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

202


3.5 Paket<br />

Info 2 - GdS<br />

§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong><br />

<strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

3.2 Assoziation<br />

3.3 Aggregation und Komposition<br />

3.4 Vererbung<br />

3.5 Paket<br />

3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

3.7 Zusammenfassung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

203


3.5 Paket<br />

Info 2 - GdS<br />

Was ist e<strong>in</strong> Paket?<br />

Def<strong>in</strong>ition:<br />

E<strong>in</strong> Paket (package) fasst Modellelemente (z.B. Klassen) zusammen<br />

– Pakete schaffen e<strong>in</strong>e bessere Übersicht über e<strong>in</strong> großes Modell<br />

– E<strong>in</strong> Paket kann selbst Pakete enthalten<br />

– Beschreibung <strong>der</strong> Systemstruktur auf e<strong>in</strong>er hohen Abstraktionsebene<br />

Das vollständige System kann als e<strong>in</strong> großes Paket aufgefasst werden<br />

Beispiel: Brauerei<br />

Malzproduktion<br />

Gärstation Abfüllung Lager<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

204


3.5 Paket<br />

Info 2 - GdS<br />

UML-Notation von Paketen<br />

– Paketname muss im gesamten System e<strong>in</strong>deutig se<strong>in</strong><br />

– Paketdiagramm: enthält Pakete und <strong>der</strong>en Abhängigkeiten<br />

Notation von<br />

Paketen<br />

System<br />

Abhängigkeiten von Paketen<br />

Paket1<br />

Paket2<br />

Paket1<br />

Paket2<br />

Paket3<br />

Paket1 und Paket2 s<strong>in</strong>d von Paket3 abhängig<br />

– Jede Klasse (jedes Modellelement) gehört zu höchstens e<strong>in</strong>em Paket<br />

– Es kann <strong>in</strong> mehreren an<strong>der</strong>en Paketen darauf verwiesen werden<br />

– E<strong>in</strong> Paket def<strong>in</strong>iert e<strong>in</strong>en Namensraum für alle enthaltenen Klassen<br />

– Verweis von außerhalb des Pakets<br />

Paket::Klasse o<strong>der</strong> Paket1::Paket11::Paket111::Klasse<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

205


3.5 Paket<br />

Info 2 - GdS<br />

Vererbung bei Paketen<br />

– Abgeleitete Pakete erben öffentliche (public) und geschützte (protected)<br />

Elemente des Oberpaketes<br />

– Elemente können <strong>in</strong> den abgeleiteten Paketen überschrieben werden<br />

Vorteile <strong>der</strong> Aufteilung <strong>in</strong> Pakete<br />

+ Besseres Verständnis durch Betrachtung von Teilsystemen bzw.<br />

Systemausschnitten<br />

+ Vermeidung von Namenskonflikten<br />

+ Zugriffskontrolle für Elemente <strong>in</strong> Paketen, Kapselung<br />

+ Vere<strong>in</strong>fachung <strong>der</strong> Testphase durch separates Testen von Paketen<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

206


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Frage zu 3.5<br />

Welche Richtl<strong>in</strong>ien zur Bildung von Paketen s<strong>in</strong>d s<strong>in</strong>nvoll?<br />

Antwort<br />

Zusammenfassung von Klassen mit <strong>in</strong>tensiver Kommunikation<br />

f<br />

f<br />

<br />

Es müssen m<strong>in</strong>d. drei Pakete pro System existieren<br />

Paketname aus Namen <strong>der</strong> be<strong>in</strong>halteten Klassen ableiten<br />

<br />

Identifikation aus zusammengehörigen Anwendungsfällen<br />

<br />

Aggregationen, Kompositionen und Vererbungsstrukturen im selben<br />

Paket zusammenfassen<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

207


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Frage zu 3.5<br />

Unterteilen Sie die Klassen Reiseunterlagen, Reise<strong>in</strong>formation, Vertrag,<br />

Tourist und Katalog <strong>in</strong> die Pakete Reise und Kunden<strong>in</strong>formation.<br />

Antwort<br />

Reise<br />

Reiseunterlagen Reise<strong>in</strong>formation Vertrag<br />

Kunden<strong>in</strong>formation<br />

Tourist<br />

Katalog<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

208


3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

Info 2 - GdS<br />

§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong><br />

<strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

3.2 Assoziation<br />

3.3 Aggregation und Komposition<br />

3.4 Vererbung<br />

3.5 Paket<br />

3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

3.7 Zusammenfassung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

209


3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

Info 2 - GdS<br />

Weitere Arten von Restriktionen bei Assoziationen<br />

– subset-Restriktion<br />

subset- Restriktion bildet Teilmenge<br />

Existiert nur, wenn die Hauptassoziation auch existiert<br />

Sportler<br />

Teilnehmer<br />

*<br />

Sieger<br />

{subset}<br />

*<br />

0..1<br />

*<br />

Wettbewerb<br />

Sieger e<strong>in</strong>es Wettbewerbs muss<br />

auch Teilnehmer se<strong>in</strong><br />

s1: Sportler<br />

s2: Sportler<br />

s3: Sportler<br />

w1: Wettbewerb<br />

w2: Wettbewerb<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

210


3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

Info 2 - GdS<br />

Abgeleitete Assoziation (<strong>der</strong>ived association)<br />

– Assoziation, <strong>der</strong>en konkrete Objektbeziehungen je<strong>der</strong>zeit aus den Werten<br />

an<strong>der</strong>er Objektbeziehungen und Objekte abgeleitet werden ( redundant)<br />

– wird durch das Präfix „/“ gekennzeichnet<br />

– Ableitungsvorschrift wird ggf. als Restriktion notiert<br />

Professor<br />

1<br />

liest<br />

*<br />

Vorlesung<br />

*<br />

l<br />

ist Hörer von<br />

*<br />

*<br />

*<br />

hört<br />

Student<br />

:Professor<br />

:Vorlesung<br />

:Student<br />

:Vorlesung<br />

:Student<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

211


3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

Info 2 - GdS<br />

Verwendung von Assoziationen <strong>in</strong> Objektdiagrammen<br />

– Steigerung des Aussagegehalts e<strong>in</strong>es Objektdiagramms durch<br />

Verwendung von<br />

Rollennamen<br />

Assoziationsname bei Objektverb<strong>in</strong>dung optional, muss<br />

unterstrichen werden !<br />

Qualifikationsangaben<br />

Symbole für Aggregation bzw. Komposition (siehe Kap. 3.3)<br />

:Kunde<br />

Herbst/W<strong>in</strong>ter.Katalog<br />

Konto<strong>in</strong>haber<br />

Kontoberechtigter<br />

Bestellnummer<br />

:Konto<br />

Ski-Anorak:Artikel<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

212


3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

Info 2 - GdS<br />

Höherwertige Assoziation<br />

– Pr<strong>in</strong>zipiell s<strong>in</strong>d auch Assoziationen zwischen drei und mehr Klassen<br />

möglich<br />

– Bezeichnung: n-äre Assoziation (n-ary association)<br />

– Ternäre und höhere Assoziationen können ke<strong>in</strong>e Aggregation o<strong>der</strong><br />

Komposition bilden<br />

Jahr<br />

*<br />

Vere<strong>in</strong><br />

*<br />

*<br />

Fußball-Spieler<br />

Ergebnis<br />

Anzahl Tore<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

213


Info 2 - GdS<br />

§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong><br />

<strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

3.1 <strong>Statische</strong> vs. dynamische <strong>Konzepte</strong><br />

3.2 Assoziation<br />

3.3 Aggregation und Komposition<br />

3.4 Vererbung<br />

3.5 Paket<br />

3.6 Erweiterungsmechanismen <strong>der</strong> UML (zum Selbststudium)<br />

3.7 Zusammenfassung<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

214


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Zusammenfassung § 3<br />

– E<strong>in</strong>e Assoziation modelliert Verb<strong>in</strong>dungen zwischen Objekten e<strong>in</strong>er o<strong>der</strong><br />

mehrerer Klassen<br />

– Son<strong>der</strong>fälle <strong>der</strong> Assoziation s<strong>in</strong>d Aggregation und Komposition<br />

– Vererbung beschreibt die Beziehung zwischen e<strong>in</strong>er allgeme<strong>in</strong>en Klasse<br />

und e<strong>in</strong>er spezialisierten Klasse<br />

– E<strong>in</strong> Paket gruppiert Modellelemente und ermöglicht die Darstellung des<br />

Softwaresystems auf e<strong>in</strong>em höheren Abstraktionsniveau<br />

Vererbung<br />

Assoziation<br />

Gerichtete<br />

Assoziation<br />

Aggregation<br />

Komposition<br />

Assoziative<br />

Klasse<br />

Qualifizierte<br />

Assoziation<br />

Höherwertige<br />

Assoziation<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

215


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Frage zu § 3<br />

Beschreiben Sie <strong>in</strong> dem Klassendiagramm für e<strong>in</strong>e Kontoverwaltung die<br />

Beziehungen zwischen den Klassen !<br />

1 1..* 1 1..*<br />

Kunde<br />

Konto<br />

Kontobewegung<br />

Girokonto<br />

Sparkonto<br />

– Zwischen Kunde und Konto besteht e<strong>in</strong>e ___________________, e<strong>in</strong>fache Assoziation weil<br />

we<strong>der</strong> <strong>der</strong> Kunde ________ Teil von Konto ist, noch umgekehrt<br />

– Zwischen Konto und Kontobewegung existiert e<strong>in</strong>e Komposition, weil<br />

e<strong>in</strong>e ____________Beziehung whole-part-<br />

vorliegt: ___________________ dynamische Semantik e<strong>in</strong>es<br />

Kontos gilt stets für alle Kontobewegungen<br />

– Weil bei <strong>der</strong> Eröffnung e<strong>in</strong>es Kontos gleich e<strong>in</strong>e E<strong>in</strong>zahlung vorzunehmen<br />

ist, ist bei ______________die Kontobewegung Kard<strong>in</strong>alität 1..* e<strong>in</strong>getragen<br />

– Komposition von Konto zu Kontobewegung wird an beide Unterklassen<br />

vererbt, d.h.________________________________ jedes Sparkonto- und Girokonto-Objekt hat Kontobewegungen<br />

– Die Vererbung <strong>der</strong> Assoziation zu Kunde bedeutet, dass<br />

Verb<strong>in</strong>dungen<br />

___________ zwischen Kunde und Girokonto bzw. Sparkonto existieren<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

216


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Vorbereitungsfragen zu § 3<br />

Frage 1: Welche Aussagen zu Paketen s<strong>in</strong>d richtig? (WS 02/03)<br />

Antwort<br />

E<strong>in</strong>e Schnittstelle kann Bestandteil mehrerer Pakete se<strong>in</strong>.<br />

Existieren <strong>in</strong> zwei Paketen Klassen mit dem selben Namen, müssen die<br />

Paketnamen explizit angegeben werden.<br />

Pakete dienen als Strukturierungsmittel zur Aufteilung von großen<br />

Modellen.<br />

Pakete <strong>in</strong> <strong>der</strong> UML lassen sich nicht schachteln.<br />

Pakete müssen immer vone<strong>in</strong>an<strong>der</strong> unabhängig se<strong>in</strong>.<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

217


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Vorbereitungsfragen zu § 3<br />

Frage 2: Welche Aussagen zu Assoziation, Aggregation und<br />

Komposition s<strong>in</strong>d richtig? (WS 03/04)<br />

Antwort<br />

E<strong>in</strong>e Assoziation beschreibt die Beziehung zwischen den Objekten <strong>der</strong><br />

beteiligten Klassen.<br />

Aggregation und Komposition s<strong>in</strong>d Assoziationen.<br />

In e<strong>in</strong>er Komposition kann e<strong>in</strong> Objekt gleichzeitig Teil mehrerer<br />

Aggregatobjekte se<strong>in</strong>.<br />

Bei e<strong>in</strong>er Aggregation erbt die Teilklasse von <strong>der</strong> Aggregatklasse.<br />

Die Programmiersprache Java unterscheidet nicht zwischen Assoziation,<br />

Aggregation und Komposition.<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

218


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Vorbereitungsfragen zu § 3<br />

Frage 3: Welche <strong>der</strong> folgenden Aussagen zur Vererbung s<strong>in</strong>d richtig?<br />

(WS 06/07)<br />

Antwort<br />

Es ist möglich, sowohl von konkreten als auch von abstrakten Klassen<br />

Objekte zu erzeugen.<br />

E<strong>in</strong>e Unterklasse stellt e<strong>in</strong>e Spezialisierung ihrer Oberklasse dar.<br />

In e<strong>in</strong>er Komposition kann e<strong>in</strong> Objekt gleichzeitig Teil mehrerer<br />

Aggregatobjekte se<strong>in</strong>.<br />

Erben mehrere Unterklassen von e<strong>in</strong>er geme<strong>in</strong>samen Oberklasse, so<br />

spricht man von Mehrfachvererbung.<br />

E<strong>in</strong>e Oberklasse ist vollständig konsistent mit ihrer Unterklasse, enthält<br />

aber zusätzlich noch weitere Informationen.<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

219


§ 3 <strong>Statische</strong> <strong>Konzepte</strong> <strong>in</strong> <strong>der</strong> <strong>objektorientierten</strong> <strong>Analyse</strong><br />

Info 2 - GdS<br />

Vorbereitungsfragen zu § 3<br />

Frage 4: Welche <strong>der</strong> folgenden Aussagen zur <strong>objektorientierten</strong> <strong>Analyse</strong><br />

s<strong>in</strong>d richtig? (WS 06/07)<br />

Antwort<br />

In <strong>der</strong> <strong>Analyse</strong> wird festgelegt, was das System tun und wie es realisiert<br />

werden soll.<br />

Die <strong>Analyse</strong> ist stark mit <strong>der</strong> Implementierung verknüpft.<br />

In <strong>der</strong> <strong>Analyse</strong> wird e<strong>in</strong> Fachkonzept des zu realisierenden Systems<br />

erstellt.<br />

Das OOA-Modell besteht nur aus e<strong>in</strong>em statischen Modell.<br />

Die <strong>Analyse</strong> beschreibt den Problembereich aus Anwen<strong>der</strong>sicht.<br />

© 2013 IAS, <strong>Universität</strong> Stuttgart<br />

220

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!