8 unified modeling language klassendiagrammemuellerd/swengi_ws201920/08_uml… · vorlesung...
TRANSCRIPT
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
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
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?
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
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.
WS 2019/20Dirk Müller: Software Engineering I
7/24
Analyse- und Entwurfsmodelle
fachlichtechnisch
Quelle: [3], S. 112 Quelle: [3], S. 114
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
WS 2019/20Dirk Müller: Software Engineering I
9/24
Abstrakte Syntax einer Klasse
Quelle: [1], S. 95
kann abstraktsein, Standard
konkret
Attribute
Operationen
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
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
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.
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}
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
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)
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}
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
● Mehrfachgeneralisierung mgl.,aber nicht empfohlen
Quelle: [3], S. 136
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}
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
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..* **
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
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]
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
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/