This commit is contained in:
David Schirrmeister 2024-05-07 09:21:11 +02:00
parent 465f6f5668
commit 1846711991
4 changed files with 167 additions and 162 deletions

View File

@ -18,7 +18,10 @@
<toc-element topic="SoftwareProcesses.md"/> <toc-element topic="SoftwareProcesses.md"/>
<toc-element topic="ImplementingForMaintainability.md"/> <toc-element topic="ImplementingForMaintainability.md"/>
<toc-element topic="DesigningForMaintainability.md"> <toc-element topic="DesigningForMaintainability.md">
<toc-element topic="UML.md"/> <toc-element topic="UML.md">
<toc-element topic="UMLKlassenDiagramme.md"/>
<toc-element topic="UMLSequenzDiagramme.md"/>
</toc-element>
</toc-element> </toc-element>
</toc-element> </toc-element>
<toc-element toc-title="Rechnerarchitektur"> <toc-element toc-title="Rechnerarchitektur">
@ -29,4 +32,5 @@
</toc-element> </toc-element>
</toc-element> </toc-element>
</toc-element> </toc-element>
</instance-profile> </instance-profile>

View File

@ -3,9 +3,9 @@
### Structure Diagrams ### Structure Diagrams
- dynamisches Verhalten der Elemente (bspw. Veränderung über Zeit) wird nicht beachtet - dynamisches Verhalten der Elemente (bspw. Veränderung über Zeit) wird nicht beachtet
- **[Class Diagram](UML.md#klassen-diagramme)** - **[Class Diagram](UMLKlassenDiagramme.md)**
- Package Diagram - Package Diagram
- **[Object Diagram](UML.md#objekt-diagramme)** - **[Object Diagram](UMLKlassenDiagramme.md#objekt-diagramme)**
- Component Diagram - Component Diagram
- Profile Diagram - Profile Diagram
- Composition Structure Diagram - Composition Structure Diagram
@ -19,168 +19,10 @@
- **Use Case Diagram** - **Use Case Diagram**
- Activity Diagram - Activity Diagram
- Interaction Diagram - Interaction Diagram
- **Sequence Diagram** - **[Sequence Diagram](UMLSequenzDiagramme.md)**
- Interaction Overview Diagram - Interaction Overview Diagram
- Communication Diagram - Communication Diagram
- Timing 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 ![image_96.png](image_96.png)
#### 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.
![image_87.png](image_87.png)
### Erstellung eines Klassen-Diagramms
1. Identifizierung der Klassen
- ![image_107.png](image_107.png)
2. Identifizierung der Attribute
- ![image_108.png](image_108.png)
3. Identifizierung von Generalisierungen
- ![image_109.png](image_109.png)
4. Identifizierung von Assoziationen und Aggregationen
- ![image_110.png](image_110.png)
_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
- ![image_88.png](image_88.png)
## 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
![image_89.png](image_89.png)
- schwächstes Relationship
- Kommunikationspartner können auf Attribute und Methoden des Anderen zugreifen
- Bsp.:
- ![image_98.png](image_98.png)
#### 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
![image_90.png](image_90.png)
- Objekte existieren auch unabhängig
- Es können auch [mehrere Objekte](UML.md#relationship-overview) in einer Aggregation verbunden werden
### Composition
Wenn eine Klasse Objekte einer anderen Klasse enthält
![image_91.png](image_91.png)
- Nur maximal eine Instanz
- Objekt kann nicht allein existieren
### Generalization (Inheritance)
Wenn eine Klasse ein Typ einer anderen Klasse ist
![image_92.png](image_92.png)
## 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)
- ![image_93.png](image_93.png)
2. mehr Details (während späterer Analysen)
- ![image_94.png](image_94.png)
3. sehr detaillierte Beschreibung (detaillierte Analyse oder während Implementierung)
- ![image_95.png](image_95.png)
## N-Ary Association
- Relationship zwischen mehr als zwei Klassen
- Wird durch hohle Raute in der Mitte der Klassen dargestellt
- bspw.: ![image_99.png](image_99.png)
### Implementierung in Code von N-Ary Association
- nicht existent in Standard-Programmiersprachen
#### Using Two Binary Associations
![image_100.png](image_100.png)
#### Using additional Class
![image_101.png](image_101.png)
## Association Class
### Introduction Association Class
Erlaubt [N-Ary Associations](UML.md#n-ary-association)
### Possible Implementations of Association Classes
![image_102.png](image_102.png) ![image_103.png](image_103.png)
## Abstract Class
![image_104.png](image_104.png)
- nur im Kontext von Generalisierungsbeziehungen sinnvoll
## Interface
![image_106.png](image_106.png)

View File

@ -0,0 +1,158 @@
# 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](UMLKlassenDiagramme.md#sichtbarkeit-von-attributen-methoden)
- Name
- Typ (primitiv / komplex)
- Durch [Assoziation](UMLKlassenDiagramme.md#association)
- bspw.: entries ![image_96.png](image_96.png)
#### 3. Bereich: Methoden der Klasse
- Haben 4 Elemente:
- [Sichtbarkeit](UMLKlassenDiagramme.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.
![image_87.png](image_87.png)
### Erstellung eines Klassen-Diagramms
1. Identifizierung der Klassen
- ![image_107.png](image_107.png)
2. Identifizierung der Attribute
- ![image_108.png](image_108.png)
3. Identifizierung von Generalisierungen
- ![image_109.png](image_109.png)
4. Identifizierung von Assoziationen und Aggregationen
- ![image_110.png](image_110.png)
_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
- ![image_88.png](image_88.png)
## 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
![image_89.png](image_89.png)
- schwächstes Relationship
- Kommunikationspartner können auf Attribute und Methoden des Anderen zugreifen
- Bsp.:
- ![image_98.png](image_98.png)
#### 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
![image_90.png](image_90.png)
- Objekte existieren auch unabhängig
- Es können auch [mehrere Objekte](UMLKlassenDiagramme.md#relationship-overview) in einer Aggregation verbunden werden
### Composition
Wenn eine Klasse Objekte einer anderen Klasse enthält
![image_91.png](image_91.png)
- Nur maximal eine Instanz
- Objekt kann nicht allein existieren
### Generalization (Inheritance)
Wenn eine Klasse ein Typ einer anderen Klasse ist
![image_92.png](image_92.png)
## 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)
- ![image_93.png](image_93.png)
2. mehr Details (während späterer Analysen)
- ![image_94.png](image_94.png)
3. sehr detaillierte Beschreibung (detaillierte Analyse oder während Implementierung)
- ![image_95.png](image_95.png)
## N-Ary Association
- Relationship zwischen mehr als zwei Klassen
- Wird durch hohle Raute in der Mitte der Klassen dargestellt
- bspw.: ![image_99.png](image_99.png)
### Implementierung in Code von N-Ary Association
- nicht existent in Standard-Programmiersprachen
#### Using Two Binary Associations
![image_100.png](image_100.png)
#### Using additional Class
![image_101.png](image_101.png)
## Association Class
### Introduction Association Class
Erlaubt [N-Ary Associations](UMLKlassenDiagramme.md#n-ary-association)
### Possible Implementations of Association Classes
![image_102.png](image_102.png) ![image_103.png](image_103.png)
## Abstract Class
![image_104.png](image_104.png)
- nur im Kontext von Generalisierungsbeziehungen sinnvoll
## Interface
![image_106.png](image_106.png)

View File

@ -0,0 +1 @@
# Sequenz Diagramme