8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung...

24
Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme

Transcript of 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung...

Page 1: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

Vorlesung Software Engineering I

WS 2019/20

Prof. Dr. Dirk Müller

8 Unified Modeling Language:Klassendiagramme

Page 2: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

2/24

Übersicht

● Einführung● Software-Entwicklungsprozesse● Anforderungsanalyse● Prozessanalyse und -modellierung● Objekt-orientierte Analyse● UML

– Ziele, Grenzen, Geschichte, Metamodellierung, Bewertung– Anwendungsfalldiagramme– Klassendiagramme– Aktivitätsdiagramme– Zustandsdiagramme

Page 3: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

3/24

Diagrammarten in der UML 2.4.1

Quelle: http://upload.wikimedia.org/wikipedia/de/5/53/UML-Diagrammhierarchie.pngDownload am 27.05.2014

Page 4: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

4/24

Motivation

● Erstellung eines Klassendiagramms als einer der ersten Analyse-Schritte– datenorientierte OOA: 1. Schritt– verhaltensorientierte OOA: 2. Schritt

● White-Box-Sicht auf Strukturierung der Daten und Brücke zur Modellierung des Verhaltens im System

● Klassen mit Attributen und Operationen sowie Beziehungen zwischen Klassen spezifizieren

● Aus welchen Klassen besteht das System und wie stehen diese untereinander in Beziehung?

Page 5: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

5/24

Klassen und Objekte

● Klasse ist Typ, dessen Ausprägungen deren Objekte sind.● Klasse: „A class describes a set of objects that share the

same specifications of features, constraints, and semantics.“ [1], S. 118

● Eine Klasse beschreibt eine Menge von Objekten, die über dieselben Spezifikationen von Eigenschaften, Neben-bedingungen und Semantik verfügen.

PersonAbstraktion

Page 6: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

6/24

Klassen und Attribute

● Attribute als Mikrosicht auf Daten● Attribute sind mit Objekten untrennbar verbunden.

– weist auf Modellierung als Attribut und nicht als andere Klasse, z. B. Name und Geburtsdatum einer Person

– Existenz des Objekts nötig, Ausnahme: Klassenattribut

● Zugriff auf Attribute nur über Klasse/Objekt: Kapselung

Quelle: [3], S. 110 f.

Page 7: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

7/24

Analyse- und Entwurfsmodelle

fachlichtechnisch

Quelle: [3], S. 112 Quelle: [3], S. 114

Page 8: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

8/24

Grundelement Klasse

● Klassenname im Rechteck zentriert, fett, Großschreibung● Substantiv im Singular● abstrakte Klasse kursiv, z. B. Rolle● 3 verschiedene Detaillierungsstufen:

Überblick, Analyse, Entwurf● Namensraum mit Attributen und

Operationen– keine globalen Variablen/Funktionen

● aktive Klasse mit zweitervertikaler Linie links und rechts– jede Instanz mit eigenem

Kontrollfluss

Quelle: [1], S. 120

Quelle: [3], S. 116

Page 9: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

9/24

Abstrakte Syntax einer Klasse

Quelle: [1], S. 95

kann abstraktsein, Standard

konkret

Attribute

Operationen

Page 10: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

10/24

Attribute

● typisierte Daten, die der Klasse zugeordnet sind● [sichtbarkeit] [/] name [: Typ] [[Multiplizität]][= Vorgabewert] [{eigenschaftswert [, eigenschaftswert]*}]

● Sichtbarkeit– public(+): keine Beschränkung– private(-): Zugriff nur durch Instanzen der eigenen Klasse– protected(#): Zugriff nur durch Instanzen der eigenen und

abgeleiteter Klassen– package(~): Zugriff nur durch Instanzen von Klassen des Pakets

● / : abgeleitetes Attribut, das zur Laufzeit berechnet werden kann, z. B. Lebensalter, kein Speicher nötig

● Typ: Standardtypen, Aufzählungstyp, Listentyp, Klasse

Page 11: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

11/24

Typen

● Primitive Typen– Boolean, zweiwertig, nur true und false– Integer, ganze Zahl– Real, reelle Zahl– String, Zeichenkette– UnlimitedNatural, * für unbegrenzt, z. B. bei Multiplizitäten

● Date, Time, Int, UInt

● Fließkomma: Float (32 Bit) , Double (64 Bit)● Festkomma: Fixed(Vorkommastellen,Nachkommastellen)

● Aufzählungstypen«enumeration»

Jahreszeitfruehlingsommerherbstwinter

Page 12: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

12/24

Multiplizitäten

● Unter- und Obergrenze der Anzahl der Instanzen● Notation: in eckigen Klammern, „..“ als Abk. für „bis“

● Untergrenze– 0 „kann“– 1 „muss“

● Obergrenze– * für unbegrenzt

● Untergrenze=Obergrenze: Abk. durch einen Wert „genau“● weitere Abk. * für 0..*● Die Standardmultiplizität (bei fehlender Angabe) ist 1.

Page 13: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

13/24

Attribute: Klassenattribute, Eigenschaftswerte, Konstanten

● Klassenattribute: Speicher pro Klasse statt pro Objekt– z. B. aktuelle Anzahl der Objekte

● Eigenschaftswerte– in geschweiften Klammern– {readOnly}: nur Lesezugriff, unveränderlich– {ordered}: Inhalte sind sortiert– {unique}: keine Duplikate– {id}: ist Teil des Identifiers der Klasse

(z. B. relationale Datenbank, XML)

● Konstante: als unveränderlichesKlassenattribut

Kreis

+anzInstanzen: Integer = 0+pi: Real = 3.14159 {readOnly}+radius: Real/flaeche: Real {readOnly}

Page 14: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

14/24

Operationen

● Art von Verhalten, das der Klasse zugeordnet ist● [Sichtbarkeit] name ([Parameterliste])[: [Rückgabetyp] [[<Multiplizität>]]{eigenschaftswert [, eigenschaftswert]*}] <Parameterliste>::=<Parameter>[,<Parameter>]*<Parameter> ::= [Übergaberichtung] name : Typ <Ausdruck>[[<Multiplizität>]][=Vorgabewert][{eigenschaftswert[, eigenschaftswert]*}]

● Übergaberichtung– in: Datenfluss nur vom Aufrufenden – out: Datenfluss nur zum Aufrufenden– inout: Datenfluss in beide Richtungen– return: Datum als Rückgabewert Syntactic Sugar [1], S. 157

Konzept von der SpracheAda übernommen

Page 15: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

15/24

Klassenoperationen

● arbeiten auf Klassen- statt auf Objektebene● keine Objekterzeugung vorher nötig● Syntax: unterstrichen● Standardbeispiel

– Konstruktor zum Erzeugen einer Instanz

Person

+name: String

+Person(name: String)

Page 16: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

16/24

Beispiel: Klasse Konto

Konto

-anzInstanzen: Integer = 0-nummer: Integer {id}-stand: Fixed(10,2) = 0

+Konto(nummer: Integer)+getNummer(): Integer+buchen(betrag: Betrag)-pruefeKontostand(in betrag: Betrag, in datum: Datum[0..1]): Boolean+listeBuchungen(von: Datum, bis: Datum): Buchung[*] {ordered}

Page 17: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

17/24

Generalisierung

● Taxonomische zweiwertige Beziehung zwischen Classifiern, Features werden vom Allgemeinen an das Spezielle vererbt

● nicht ausgefüllter Pfeilvom Speziellen zumAllgemeinen

● Vererbung +Substitution =Generalisierung

● Mehrfach­generalisierung mgl.,aber nicht empfohlen

Quelle: [3], S. 136

Page 18: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

18/24

Assoziation

● Darstellung von Beziehungen zwischen Klassen● allgemein: n-äre Assoziation (n beteiligte Klassen)● wichtigster Spezialfall: binäre Assoziation (n=2)

Quelle: [3], S. 143

rolle rolle{eigenschaft}

Page 19: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

19/24

Generalisierung zwischen AssoziationenAbgeleitete Assoziation

Quelle: [3], S. 137

Quelle: [3], S. 137

ergibt sich aus demWeg via Cocktail

kleiner Schwachpunkt hier:Rollennamen bitte in Kleinschreibung

Page 20: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

20/24

Aggregation

● Teile-Ganzes-Beziehung– Notation: ungefüllte Raute auf Seite des Ganzen

● 1 Teil kann zu einem Zeitpunkt zumehreren Ganzen gehören

● Semantic Variation Point– „Precise semantics of shared aggregation

varies by application area and modeler.“ [2], S. 36

● Zerstörung eines Ganzen impliziert nichtZerstörung seiner Teile

Vorlesung Student StudentenklubVorlesung* 3..* **

Page 21: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

21/24

Komposition

● verschärfte Teile-Ganzes-Beziehung– Notation: gefüllte Raute auf Seite des Ganzen

● 1 Teil kann zu einem Zeitpunkt zuhöchstens 1 Ganzem gehören

● Ganzes hat Verantwortung für Existenzund Speicherung seiner Teile

● Teile und Ganzes im physischen Sinne– wechselseitige Implikation zwischen Zerstörung des Ganzen und

Zerstörung aller Teile

● gerichteter, azyklischer Graph (DAG)– transitives Löschverhalten

Auto RadFuhrpark1 1..* 1 4

Page 22: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

22/24

Beispiel: LinkedIn

● Diskussionen können bewegt werden.– gewöhnlich von

Diskussionen zu Jobs oder Promotions

● kann aber nicht Teil von zwei (oder mehr) Kategorien zur selben Zeit sein

Quelle: [4]

Page 23: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

23/24

Zusammenfassung

● Aus welchen Klassen besteht das System und wie stehen diese untereinander in Beziehung?

● Klasse mit Attributen (typisierte Daten) undOperationen (Verhalten) – Instanzen sind Objekte– Klassenattribute und -operationen per Klasse und nicht per Objekt

● wichtige Beziehungen zwischen Klassen– Generalisierung: Vererbung + Substitution – Assoziation: gleichberechtigte Beziehung– Aggregation: Teile-Ganzes-Beziehung– Komposition: Teile-Ganzes-Beziehung mit impliziertem

Lebenszyklus und vorgegebener Multiplizität 1 beim Ganzen

Page 24: 8 Unified Modeling Language Klassendiagrammemuellerd/SWEngI_WS201920/08_UML… · Vorlesung Software Engineering I WS 2019/20 Prof. Dr. Dirk Müller 8 Unified Modeling Language: Klassendiagramme.

WS 2019/20Dirk Müller: Software Engineering I

24/24

Literatur

[1] OMG Unified Modeling LanguageTM (OMG UML),Infrastructure Version 2.4.1, August 2011, Download am 27.05.2014, http://www.omg.org/spec/UML/2.4.1/Infrastructure/PDF/

[2] OMG Unified Modeling LanguageTM (OMG UML), Superstructure Version 2.4.1, August 2011, Download am 27.05.2014, http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF/

[3] Chris Rupp, Stefan Queins: „UML 2 glasklar“, Hanser Verlag, 2012, 4. Auflage

[4] Geert Bellekens: “UML Composition vs Aggregation vs Association”, 20/12/2010, Download am 06.10.2016, http://bellekens.com/2010/12/20/uml-composition-vs-aggregation-vs-association/