OOA (Teil III) 31) Strukturelle metamodellgetriebene ......von Analysemodellen in der...
Transcript of OOA (Teil III) 31) Strukturelle metamodellgetriebene ......von Analysemodellen in der...
-
Softwaretechnologie, © Prof. Uwe AßmannTechnische Universität Dresden, Fakultät Informatik 1
OOA (Teil III)31) Strukturelle metamodellgetriebene Modellierung
Prof. Dr. rer. nat. habil. Uwe AßmannInstitut für Software- und
MultimediatechnikLehrstuhl Softwaretechnologie
Fakultät für InformatikTU Dresden
Version 11-0.2, 28.05.11
1) Metamodelle2) Merkmale3) Beziehungen
1) Aggregation und Komposition
4) Vererbung
-
Prof. U. Aßmann, Softwaretechnologie 2
Überblick Teil III:Objektorientierte Analyse (OOA)
1. Überblick Objektorientierte Analyse1. (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 Hierarchien2. (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
Aktionsdiagrammen2. Funktionale querschneidende Verfeinerung: Szenarienanalyse mit
Anwendungsfällen, Kollaborationen und Interaktionsdiagrammen3. (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ßmannTechnische Universität Dresden, Fakultät Informatik 4
31.1 Strukturmodelle (Metamodelle)
-
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
Anforderungenzu einem
Modellder fachlichen
AufgabeMerkmale identifizieren
Klassen identifizieren
Klassenbeziehungen identifizieren
OOA
Verhalten der Merkmalebeschreiben
Strukturanalyse
Metamodell
Metaobjekt-Protokoll(dynamischeSemantik)
stammt aus:
-
Prof. U. Aßmann, Softwaretechnologie 7
Schritte der objektorientierten, metamodellgetriebenen (strukturellen) Analyse
Ziel:Von den
Anforderungenzu einem
Modellder fachlichen
Aufgabe
Klassen nach Profilenklassifizieren
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
analysismodelKontextmodell
(context model,system interface)
Domänen-modell
Anwendungsfälle(use cases)
TextuelleAnforderungen
Architektur-Entwurf
Feinentwurf
Fachliches Modell
Top-level-Architektur
Nutzer-modell
Produktdefinition
Anforderungs-spezifikation
-
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ßmannTechnische Universität Dresden, Fakultät Informatik 12
31.2 Analyse von Merkmalen
(Wdh.)
-
Prof. U. Aßmann, Softwaretechnologie 13
Schritte der strukturellen, metamodellgetriebenen Analyse
Ziel:Von den
Anforderungenzu einemModell
der fachlichenAufgabe
Klassen nach Profilenklassifizieren
Attribute identifizieren
Assoziationen ident.
Merkmale identifizieren
Klassen identifizierenOperationen 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: Stringbeginn: Date
dauer: Intanzahl: Int
Teambesprechung
-
Prof. U. Aßmann, Softwaretechnologie 16
Beispiel: Instanz- und Klassenattribute in aUML (Analyse-UML)
Teammitgliedleitet
Teilnahme
1*
* 2..*
nameabteilung
BesprechungsraumraumNr
kapazität
1
*
1*für
Teamname
1..* Leiter
0..1
1
Termin
titelbeginndaueranzahl
Teambesprechung
Privater Termin
beschreibgbeginndauer
ortwegzeit
VeranstOrt
1Reservierung
-
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
Teambesprechungtitel
beginndauer
raumFestlegeneinladenabsagen
Teambesprechungtitel
beginndauer
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
-
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
beschreibgbeginndauer
ortwegzeit
genehmigen()verschieben()
Teammitgliedleitet
Teilnahme
1*
* 2..*
nameabteilung
terminBestätigen()
BesprechungsraumraumNr
kapazitätreservieren()freigeben()
freienRaumSuchen()Ort0..1
1* für
*
Teamname
1..* Leiter
0..1
1titel
beginndaueranzahl
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ßmannTechnische Universität Dresden, Fakultät Informatik 24
31.3 Analyse von Klassenbeziehungen
-
Prof. U. Aßmann, Softwaretechnologie 25
Schritte der strukturellen, metamodellgetriebenen Analyse
Ziel:Von den
Anforderungenzu einemModell
der fachlichenAufgabe
Klassen nach Profilenklassifizieren
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 TeammitgliedTeilnahme
-
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 FrauEhefrauEhemann
-
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
-
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-AssoziationTeambesprechung Teammitglieddesign12 tm1design12 tm3requirementsX1 tm1requirementsX1 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=truetookPart:boolean=unclearfolien:Foliensatz=fs1protokoll:Protokoll=p1
requirementsX1tm1:Status
informed:boolean=falsetookPart:boolean=truefolien:Foliensatz=fs2protokoll: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
TeammitgliedTeambesprechung
Status
informed:booleantookPart:booleanfolien:Foliensatzprotokoll: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
ZeitraumReservierungsdatum
Reservierung
ZeitraumReservierungsdatum
-
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 K2AS
Mult► Notation:
Teambesprechung Teammitglied* 2..*
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
-
Prof. U. Aßmann, Softwaretechnologie 37
Flachklopfen von zweiseitigen (Bidirektionale) Assoziationen
Child Mother0..1
momkid
0..n
jane:Mother tom:Childkid
sally:Childkid
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..1mom
kid0..n
Parentship Parentship
Childship(Parentship-1)
Laufzeit:
-
Prof. U. Aßmann, Softwaretechnologie 38
Einseitige einstellige Assoziationen in Java und jUML (Wdh.)
Child Mother0..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 Child0..* class Mother { ...
private Child[] kid; ...}
jane:Mother tom:Child Mother jane = new Mother();jane.kid[0] = tom;...jane.kid[1] = sally;
kid
kid
jane:Motherkid
jane:Mother tom:Childkid
sally:Childkid
► 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 Ba
0..1
class A { ... private B a; ...}
A Ba
1
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..*
-
Prof. U. Aßmann, Softwaretechnologie 41
Zweiseitige (Bidirektionale) Assoziationen
Child Mother0..1
class Child { ... private Mother mom; ...}class Mother { ... private Child[] kid; ...}
momkid
0..n
jane:Mother tom:Childkid
sally:Childkid
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
...
Teammitgliedteilnahme* 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ßmannTechnische Universität Dresden, Fakultät Informatik 44
31.3.2 Aggregation und Komposition
-
Prof. U. Aßmann, Softwaretechnologie 45
Aggregation (has-a)
TeammitgliedTeam
► 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
-
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 k3392:Kolbenj299:Jetronic
l129:Lenkrad
-
Prof. U. Aßmann, Softwaretechnologie 50
Realisierung von Aggregation und Komposition in Java
class A { ... private B[] a; ...}
A Ba
0..*
► 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ßmannTechnische 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
Anforderungenzu einemModell
der fachlichenAufgabe
Klassen nach Profilenklassifizieren
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 5353
Mehrfachvererbung (Multiple Inheritance)
ProfessorStudent
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:
Professorand Student
Härtig:Professor
StudentSchneider: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
ProfessorEmeritus
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 Schnittstellenclass Teambesprechung extends Teamveranstaltung, Hausveranstaltung
-
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
titelbeginndauer
verschieben() {abstract}
raumFestlegen()einladen()absagen()
verschieben()
Privater Termin
ortwegzeit
verschieben()
Terminverwaltung
1
*
Teammitgliedleitet
Teilnahme
1*
* 2..*
nameabteilung
terminBestätigen()
BesprechungsraumraumNr
kapazitätreservieren()freigeben()
freienRaumSuchen()VeranstOrt0..1*
1* für
{abstract}
anzahl
Teamname
1..* Leiter
0..1
1
1
-
Prof. U. Aßmann, Softwaretechnologie 60
Ausblick: Verfeinerung von Analyse- zum Entwurfsmodell
Analyse-Modell Entwurfs-ModellMehr Struktur & mehr Details
Notation: UMLObjekte: Fachgegenstände
Klassen: FachbegriffeAttribute ohne Typen und Sichtbarkeiten
Operationen: ohne Typen, Parameter und Rückgabewerte
Assoziationen: partiell, bidirektionali. Allg. ohne Datentypen
Aggregationen, KompositionenLeserichtung, partielle Multiplizitäten
Vererbung: BegriffsstrukturAnnahme perfekter Technologie
Funktionale EssenzVöllig projektspezifischGrobe Strukturskizze
Notation: UMLObjekte: 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: ProgrammableitungErfüllung konkreter Rahmenbedingungen
Gesamtstruktur des SystemsÄhnlichkeiten zwischenverwandten Projekten
Genaue Strukturdefinition
-
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.
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13KlassenattributeSlide 15Beispiel: AttributeOperationOperation, Methode, ProzedurSlide 19Spezifikation von OperationenParameter und Datentypen für OperationenBeispiel: OperationenSlide 23Slide 24Slide 25AssoziationLeserichtung und AssoziationsendenBeispiel: AssoziationenSemantik (bidirektionaler) AssoziationenSlide 30Slide 31Klassenkandidaten und AttributeMultiplizität bei AssoziationenMultiplizitäten bestimmen durch "Vorlesen"Beispiel: MultiplizitätenSlide 36Slide 37Slide 38Slide 39Optionale und notwendige AssoziationenSlide 41Bidirektionale Assoziationen: BeispielBidirektionalität von AssoziationenSlide 44AggregationBeispiel: Assoziationen und AgregationenSlide 47Slide 48Slide 49Realisierung von AggregationSlide 51Slide 52Feature Resolution in Multiple InheritanceSlide 54Slide 55MehrfachvererbungErsatz von Vererbung durch KompositionSlide 58KlassendiagrammUML zum logischen DetailentwurfSlide 61