1. Was ist UML?
đ Definition
đŻ Warum UML?
- Visualisierung: Komplexe Systeme grafisch verstÀndlich machen
- Kommunikation: Gemeinsame Sprache fĂŒr Entwickler, Designer und Kunden
- Dokumentation: Software-Architektur dauerhaft festhalten
- Planung: Struktur vor dem Programmieren entwerfen
đ UML-Diagrammtypen (Ăberblick)
| Kategorie | Diagramm | Beschreibt |
|---|---|---|
| Struktur | Klassendiagramm | Klassen, Attribute, Methoden, Beziehungen |
| Objektdiagramm | Konkrete Objekte zu einem Zeitpunkt | |
| Verhalten | AktivitÀtsdiagramm | Ablauf von AktivitÀten (Flussdiagramm) |
| Sequenzdiagramm | Zeitliche Abfolge von Nachrichten | |
| Use-Case-Diagramm | AnwendungsfÀlle aus Nutzersicht |
2. Klassendiagramme
đ Was ist ein Klassendiagramm?
2.1 Aufbau einer Klasse
đŠ Die drei Bereiche einer Klasse
Jede Klasse wird als Rechteck mit drei Bereichen dargestellt:
- Oberer Bereich: Name der Klasse (fett, zentriert)
- Mittlerer Bereich: Attribute (Variablen)
- Unterer Bereich: Methoden (Funktionen)
2.2 Sichtbarkeit (Visibility)
đ Sichtbarkeitssymbole
| Symbol | Java-Keyword | Bedeutung | Zugriff von |
|---|---|---|---|
| + | public |
Ăffentlich | Ăberall |
| - | private |
Privat | Nur in eigener Klasse |
| # | protected |
GeschĂŒtzt | Eigene Klasse + Unterklassen |
| ~ | (default) | Paket-sichtbar | Gleiches Paket |
+ = Plus = Alle (öffentlich)
- = Minus = Abgezogen/Versteckt (privat)
# = Raute = GeschĂŒtzt (protected)
3. UML-Notation fĂŒr Attribute und Methoden
3.1 Attribute schreiben
đ Attribut-Syntax
// UML-Format:
Sichtbarkeit name: Datentyp [= Standardwert]
// Beispiele:
- name: String
- alter: int = 0
+ id: int
# kontostand: double
Von UML nach Java
UML:
- name: String- alter: int = 0+ istAktiv: boolean
Java:
private String name;private int alter = 0;public boolean istAktiv;
3.2 Methoden schreiben
đ Methoden-Syntax
// UML-Format:
Sichtbarkeit methodenname(parameter): RĂŒckgabetyp
// Beispiele:
+ getName(): String
+ setName(name: String): void
+ berechneAlter(geburtsjahr: int): int
- pruefePasswort(pw: String): boolean
Von UML nach Java
UML:
+ getName(): String+ setAlter(a: int): void- berechne(): double
Java:
public String getName()public void setAlter(int a)private double berechne()
3.3 Statische Elemente
đ Statische Attribute und Methoden
Statische Elemente werden in UML unterstrichen dargestellt:
- name: String
+ getName(): String
// Entsprechender Java-Code:
public class Zaehler {
private static int anzahl; // unterstrichen = static
private String name;
public static int getAnzahl() { // unterstrichen = static
return anzahl;
}
public String getName() {
return name;
}
}
4. VollstÀndiges Klassendiagramm-Beispiel
Beispiel: Klasse Person
public class Person {
// Attribute (alle private)
private String name;
private int alter;
private String email;
// Konstruktor
public Person(String name, int alter) {
this.name = name;
this.alter = alter;
}
// Getter und Setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAlter() {
return alter;
}
public void setAlter(int alter) {
this.alter = alter;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String toString() {
return name + " (" + alter + ")";
}
}
5. Beziehungen zwischen Klassen
5.1 Assoziation
đ Assoziation
Darstellung: Einfache Linie zwischen den Klassen
đ Assoziation mit MultiplizitĂ€t
| MultiplizitÀt | Bedeutung | Beispiel |
|---|---|---|
1 |
Genau eins | Jede Person hat genau 1 Personalausweis |
0..1 |
Null oder eins | Person hat 0 oder 1 Auto |
* oder 0..* |
Beliebig viele (inkl. 0) | Person kann beliebig viele BĂŒcher haben |
1..* |
Mindestens eins | Kurs hat mindestens 1 Teilnehmer |
n..m |
Zwischen n und m | Team hat 2..11 Spieler |
5.2 Aggregation ("hat"-Beziehung)
đ Aggregation
Darstellung: Linie mit leerer Raute â am Ganzen
â Aggregation Beispiel
Interpretation: Eine Bibliothek "hat" BĂŒcher. Wenn die Bibliothek schlieĂt, existieren die BĂŒcher weiterhin.
In Mermaid: o-- = Aggregation (leere Raute)
public class Bibliothek {
private ArrayList<Buch> buecher;
public void buchHinzufuegen(Buch buch) {
buecher.add(buch);
}
}
5.3 Komposition ("besteht aus"-Beziehung)
đ Komposition
Darstellung: Linie mit ausgefĂŒllter Raute â am Ganzen
â Komposition Beispiel
Interpretation: Ein Haus "besteht aus" RĂ€umen. Wenn das Haus abgerissen wird, existieren auch die RĂ€ume nicht mehr.
In Mermaid: *-- = Komposition (ausgefĂŒllte Raute)
public class Haus {
private ArrayList<Raum> raeume = new ArrayList<>();
// RĂ€ume werden im Haus erstellt
public Haus() {
raeume.add(new Raum("Wohnzimmer"));
raeume.add(new Raum("KĂŒche"));
}
}
Aggregation (â): "Hat" - Teile können unabhĂ€ngig existieren (Bibliothek hat BĂŒcher)
Komposition (â): "Besteht aus" - Teile können NICHT unabhĂ€ngig existieren (Haus besteht aus RĂ€umen)
5.4 Vererbung (Generalisierung)
đ Vererbung in UML
Darstellung: Linie mit leerem Dreieck âł zur Oberklasse
âł Vererbung Beispiel
In Mermaid: <|-- = Vererbung (Dreieck zeigt zur Oberklasse)
public class Fahrzeug {
protected int geschwindigkeit;
protected String marke;
public void fahren() { }
public void bremsen() { }
}
public class Auto extends Fahrzeug {
private int anzahlTueren;
public void hupen() { }
}
public class Motorrad extends Fahrzeug {
private boolean hatBeiwagen;
public void wheelie() { }
}
6. Ăbersicht: Alle Beziehungen
đ Beziehungen auf einen Blick
| Beziehung | Symbol | Bedeutung | Beispiel |
|---|---|---|---|
| Assoziation | âââ | "kennt" / allgemeine Verbindung | Student â Kurs |
| Aggregation | ââââ | "hat" / schwache Teil-Beziehung | Team ââ Spieler |
| Komposition | ââââ | "besteht aus" / starke Teil-Beziehung | Auto ââ Motor |
| Vererbung | âââł | "ist ein" / Spezialisierung | Hund ââł Tier |
7. Von Text zu UML
đ Methodik: Textanalyse fĂŒr Klassendiagramme
- Substantive â Potenzielle Klassen
- Adjektive/Eigenschaften â Attribute
- Verben â Methoden
- "hat", "besteht aus" â Beziehungen
- "ist ein" â Vererbung
Beispiel: Text zu UML
Aufgabentext:
"Ein SchĂŒler hat einen Namen, eine Klasse und ein Alter. Er kann seine Noten berechnen und sich vorstellen."
Analyse:
- Klasse: SchĂŒler (Substantiv)
- Attribute: name, klasse, alter (Eigenschaften)
- Methoden: berechneNoten(), vorstellen() (Verben)
- klasse: String
- alter: int
+ vorstellen(): void
Komplexeres Beispiel mit Beziehungen
Aufgabentext:
"Eine Schule besteht aus mehreren Klassen. Jede Klasse hat mehrere SchĂŒler und genau einen Klassenlehrer. Ein Klassenlehrer ist ein Lehrer."
Analyse der Beziehungen:
- Schule âââ Klasse (Komposition: "besteht aus")
- Klasse âââ Schueler (Aggregation: "hat")
- Klasse âââ Klassenlehrer (Assoziation: "hat genau einen")
- Klassenlehrer âââł Lehrer (Vererbung: "ist ein")
đ Zusammenfassung: UML Grundlagen
Klassenstruktur:
- Drei Bereiche: Klassenname | Attribute | Methoden
- Sichtbarkeit: + (public), - (private), # (protected)
- Statisch: unterstrichen
Beziehungen:
| âââ | Assoziation | "kennt" |
| ââââ | Aggregation | "hat" (schwach) |
| ââââ | Komposition | "besteht aus" (stark) |
| âââł | Vererbung | "ist ein" |
Text zu UML:
Substantive â Klassen | Eigenschaften â Attribute | Verben â Methoden