updatet f5aw
BIN
Writerside/images/image_87.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
Writerside/images/image_88.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
Writerside/images/image_89.png
Normal file
After Width: | Height: | Size: 896 B |
BIN
Writerside/images/image_90.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
Writerside/images/image_91.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
Writerside/images/image_92.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
Writerside/images/image_93.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
Writerside/images/image_94.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
Writerside/images/image_95.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
Writerside/images/image_96.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
Writerside/images/image_97.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
Writerside/images/image_98.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
135
Writerside/topics/OOAD/UML.md
Normal file
@ -0,0 +1,135 @@
|
||||
# UML (Unified Modeling Language)
|
||||
## Categories
|
||||
### Structure Diagrams
|
||||
- dynamisches Verhalten der Elemente (bspw. Veränderung über Zeit) wird nicht beachtet
|
||||
|
||||
- **[Class Diagram](UML.md#klassen-diagramme)**
|
||||
- Package Diagram
|
||||
- **[Object Diagram](UML.md#objekt-diagramme)**
|
||||
- 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](UML.md#sichtbarkeit-von-attributen-methoden)
|
||||
- Name
|
||||
- Typ (primitiv / komplex)
|
||||
- Durch [Assoziation](UML.md#association)
|
||||
- bspw.: entries 
|
||||
#### 3. Bereich: Methoden der Klasse
|
||||
- Haben 4 Elemente:
|
||||
- [Sichtbarkeit](UML.md#sichtbarkeit-von-attributen-methoden)
|
||||
- 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.
|
||||
|
||||

|
||||
|
||||
## 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
|
||||
|
||||
### 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
|
||||

|
||||
|
||||
### Composition
|
||||
Wenn eine Klasse Objekte einer anderen Klasse enthält
|
||||

|
||||
|
||||
### Generalization
|
||||
Wenn eine Klasse ein Typ einer anderen Klasse ist
|
||||

|
||||
|
||||
## Erstellung von Klassen
|
||||
### Appropriate Level of detail
|
||||
Detail der Zeichnung sollte abhängig vom [SDLC](IntroductionOOAD.md#software-development-lifecycle-sdlc) sein.
|
||||
1. keine Details (erste Analyse für die ersten Diskussionen des Domänen-Konzepts)
|
||||
- 
|
||||
2. mehr Details (während späterer Analysen)
|
||||
- 
|
||||
3. sehr detaillierte Beschreibung (detaillierte Analyse oder während Implementierung)
|
||||
- 
|
||||
|
||||
## N-Ary Association
|