5.4 KiB
UML (Unified Modeling Language)
Categories
Structure Diagrams
-
dynamisches Verhalten der Elemente (bspw. Veränderung über Zeit) wird nicht beachtet
-
Package Diagram
-
Component Diagram
-
Profile Diagram
-
Composition Structure Diagram
-
Deployment Diagram
Behavior Diagram
-
Kann Verhalten detailliert definieren
-
Bestimmt, wie sich der Zustand eines Elements über Zeit verändert
-
State Machine Diagram
-
Use Case Diagram
-
Activity Diagram
-
Interaction Diagram
- Sequence Diagram
- Interaction Overview Diagram
- Communication Diagram
- Timing Diagram
Klassen Diagramme
- Klassen werden als Boxen dargestellt mit
- Name
- Attribute
- Methoden
Aufbau Klassen-Diagramm
1. Bereich: Name der Klasse
- beginnt mit Großbuchstaben
- ist ein Nomen
- sollte die Klasse beschreiben
2. Bereich: Attribute der Klasse
Es gibt zwei Arten die Attribute darzustellen
- Inline, dabei muss angegeben werden:
- Sichtbarkeit
- Name
- Typ (primitiv / komplex)
- Durch Assoziation
3. Bereich: Methoden der Klasse
- Haben 4 Elemente:
- Sichtbarkeit
- Name
- ggf Parameter
- Rückgabewert
- Bspw.:
+ addEntry(int number, string description): void
Sichtbarkeit von Attributen / Methoden
- Public (+)
- Jedes Objekt anderer Klassen kann zugreifen
- Protected (#)
- Jedes Objekt der Klasse und der Unterklassen kann darauf zugreifen
- Package (~)
- Jedes Objekt, deren Klasse im selben Package ist, kann darauf zugreifen
- Private (-)
- Nur das Objekt selbst kann darauf zugreifen
Beispiel Klassen Diagramme:
- 3 Klassen (Student, Course, LectureHall)
- Student kann keine bis n Lectures beitreten
- Courses können in keine bis einer LectureHall stattfinden
- Student hat einen first name, last name, date of birth...
- etc.
Erstellung eines Klassen-Diagramms
- Identifizierung der Klassen
- Identifizierung der Attribute
- Identifizierung von Generalisierungen
- Identifizierung von Assoziationen und Aggregationen
Entstandenes UML-Diagramm ist nicht einzig korrektes!
Objekt Diagramme
Beispiel Objekt Diagramme:
- 4 Instanzen / Objekte vom Typ Student (Helen, Mike, Paul)
- Helen ist im Kurs oom und iprog
- Der Kurs db ist in der LectureHall lh2
Relationship Overview
Klassen arbeiten zusammen über verschiedene Arten von Relationships
- Relationships werden als Linie zwischen den Boxen dargestellt mit
- Name
- Leserichtung
- Multiplizität
- Sind als Intervall dargestellt [Min..Max]
- Falls es kein Limit gibt: *
- Falls Min = Max: nur eins hinschreiben
- Bsp.:
[0..1]
: Attribut hat 0 - 1 Wert[5]
: Attribut hat genau 5 Werte[*]
: Attribut hat 0 bis unendlich Werte[3..*]
: Attribut hat 3 bis unendlich Werte
- Sind als Intervall dargestellt [Min..Max]
Association
Wenn ein Objekt einer Klasse mit Objekten einer anderen Klasse arbeitet
- schwächstes Relationship
- Kommunikationspartner können auf Attribute und Methoden des Anderen zugreifen
- Bsp.:
Navigatability
- x: Darauf ist nicht zugreifbar
- >: Darauf kann zugegriffen werden
- nix: undefined
Aggregation
Wenn eine Klasse eine Referenz zu Objekten einer anderen Klasse besitzt und teilt
- Objekte existieren auch unabhängig
- Es können auch mehrere Objekte in einer Aggregation verbunden werden
Composition
Wenn eine Klasse Objekte einer anderen Klasse enthält
- Nur maximal eine Instanz
- Objekt kann nicht allein existieren
Generalization (Inheritance)
Wenn eine Klasse ein Typ einer anderen Klasse ist
Erstellung von Klassen
Appropriate Level of detail
Detail der Zeichnung sollte abhängig vom SDLC sein.
- keine Details (erste Analyse für die ersten Diskussionen des Domänen-Konzepts)
- mehr Details (während späterer Analysen)
- sehr detaillierte Beschreibung (detaillierte Analyse oder während Implementierung)
N-Ary Association
- Relationship zwischen mehr als zwei Klassen
Implementierung in Code von N-Ary Association
- nicht existent in Standard-Programmiersprachen
Using Two Binary Associations
Using additional Class
Association Class
Introduction Association Class
Erlaubt N-Ary Associations
Possible Implementations of Association Classes
Abstract Class
- nur im Kontext von Generalisierungsbeziehungen sinnvoll