Seite 7. UML-Klassendiagramm
UML-Klassendiagramm
Diese Seite erklärt das UML-Klassendiagramm so, dass du es schnell für IHK-Aufgaben und Java/OOP-Aufgaben anwenden kannst.
Ein UML-Klassendiagramm wird benutzt, um die Struktur eines Programms darzustellen.
Es zeigt:
Klassen
Attribute
Methoden
Sichtbarkeit
Beziehungen zwischen Klassen
Vererbung
Grafik 1: UML-Klassendiagramm – Grundlagen
Diese Grafik zeigt dir die wichtigsten Bausteine eines UML-Klassendiagramms:
- Klassenname
- Attribute
- Methoden
- Sichtbarkeit mit
+,-und# - Assoziation
- Vererbung
Wofür braucht man ein UML-Klassendiagramm?
Ein UML-Klassendiagramm hilft dir, die Struktur eines objektorientierten Programms zu planen.
Beispiel:
Es soll eine Produktverwaltung erstellt werden.
Ein Produkt hat eine Marke, ein Modell und einen Preis.
Monitore und Tastaturen sind spezielle Produkte.
Daraus erkennt man:
- Es gibt Klassen.
- Klassen haben Attribute.
- Klassen haben Methoden.
- Manche Klassen hängen miteinander zusammen.
- Manche Klassen können von anderen Klassen erben.
Woran erkenne ich in einer Aufgabe, dass ein UML-Klassendiagramm gemeint ist?
Typische Signalwörter:
| Signalwort / Formulierung | Hinweis |
|---|---|
| Klasse | Es geht um OOP / Programmstruktur |
| Attribut | Eigenschaft einer Klasse |
| Methode | Funktion / Verhalten einer Klasse |
| Objekt | konkrete Instanz einer Klasse |
| Vererbung | Oberklasse / Unterklasse |
| Assoziation | Beziehung zwischen Klassen |
| Java-Klassen | meist UML-Klassendiagramm |
| „modellieren Sie die Klassenstruktur“ | Klassendiagramm |
| „stellen Sie Attribute und Methoden dar“ | Klassendiagramm |
Aufbau einer Klasse
Eine Klasse wird im UML-Klassendiagramm meistens als Rechteck mit drei Bereichen dargestellt:
┌────────────────────────┐
│ Klassenname │
├────────────────────────┤
│ Attribute │
├────────────────────────┤
│ Methoden │
└────────────────────────┘
Beispiel:
┌────────────────────────┐
│ Produkt │
├────────────────────────┤
│ - marke: String │
│ - modell: String │
│ - preis: double │
├────────────────────────┤
│ + getPreis(): double │
│ + toString(): String │
└────────────────────────┘
Klassenname
Der Klassenname steht oben im Klassendiagramm.
Beispiele:
Produkt
Monitor
Tastatur
Kunde
Bestellung
Benutzer
Merksatz:
Klassennamen werden meistens großgeschrieben und stehen im Singular.
Also eher:
Produkt
nicht:
Produkte
Attribute
Attribute beschreiben die Eigenschaften einer Klasse.
Beispiel Klasse Produkt:
- marke: String
- modell: String
- preis: double
Das bedeutet:
| Attribut | Datentyp | Bedeutung |
|---|---|---|
| marke | String | Marke des Produkts |
| modell | String | Modellbezeichnung |
| preis | double | Preis |
Merksatz:
Attribute sind das, was ein Objekt speichert.
Methoden
Methoden beschreiben, was ein Objekt tun kann.
Beispiel:
+ getPreis(): double
+ setPreis(preis: double): void
+ toString(): String
Aufbau einer Methode:
sichtbarkeit methodenname(parameter): rückgabetyp
Beispiel:
+ setPreis(preis: double): void
Bedeutung:
| Teil | Bedeutung |
|---|---|
+ |
public |
setPreis |
Methodenname |
preis: double |
Parameter |
void |
kein Rückgabewert |
Sichtbarkeit
Die Sichtbarkeit zeigt, von wo aus auf Attribute oder Methoden zugegriffen werden darf.
| Zeichen | Bedeutung | Erklärung |
|---|---|---|
+ |
public | öffentlich zugreifbar |
- |
private | nur innerhalb der Klasse |
# |
protected | Klasse und Unterklassen |
~ |
package | innerhalb des Pakets |
Für IHK und Java-Grundlagen sind besonders wichtig:
+ public
- private
# protected
Typisch in Java:
private String marke;
public String toString()
UML:
- marke: String
+ toString(): String
Attribute sind meistens private
In Java sind Attribute meistens private.
Beispiel Java:
private String marke;
private String modell;
private double preis;
UML:
- marke: String
- modell: String
- preis: double
Warum?
Damit nicht jeder direkt von außen auf die Daten zugreifen kann.
Das nennt man Kapselung.
Methoden sind oft public
Methoden, die von außen genutzt werden sollen, sind meistens public.
Beispiel Java:
public String toString() {
return marke + " " + modell;
}
UML:
+ toString(): String
Grafik 2: Beispiel Produktverwaltung
Diese Grafik zeigt ein typisches UML-Klassendiagramm für eine Produktverwaltung:
- Produkt ist die Oberklasse
- Monitor ist eine spezielle Produktart
- Tastatur ist eine spezielle Produktart
- gemeinsame Attribute gehören in die Oberklasse
- spezielle Attribute gehören in die Unterklassen
Beispiel: Produkt als Oberklasse
Wenn mehrere Produktarten gemeinsame Eigenschaften haben, kann man eine Oberklasse verwenden.
Beispiel:
Produkt
- marke
- modell
- preis
Diese Attribute können für viele Produktarten gelten:
Monitor
Tastatur
Maus
CPU
Deshalb gehören sie in die gemeinsame Oberklasse Produkt.
Vererbung
Vererbung bedeutet:
Eine Unterklasse übernimmt Eigenschaften und Methoden einer Oberklasse.
Beispiel:
Monitor erbt von Produkt.
Tastatur erbt von Produkt.
Das bedeutet:
Monitor ist ein Produkt.
Tastatur ist ein Produkt.
UML-Darstellung:
Monitor ─────▷ Produkt
Tastatur ────▷ Produkt
Der Pfeil zeigt zur Oberklasse.
Merksatz:
Der Vererbungs-Pfeil zeigt immer zur allgemeineren Klasse.
Oberklasse und Unterklasse
| Begriff | Bedeutung | Beispiel |
|---|---|---|
| Oberklasse | allgemeine Klasse | Produkt |
| Unterklasse | spezielle Klasse | Monitor |
| Vererbung | Unterklasse übernimmt von Oberklasse | Monitor erbt von Produkt |
Beispiel:
Produkt
- marke
- modell
- preis
Monitor
- groesseZoll
- aufloesung
Der Monitor hat dann fachlich:
marke
modell
preis
groesseZoll
aufloesung
Assoziation
Eine Assoziation ist eine normale Beziehung zwischen Klassen.
Beispiel:
Kunde gibt Bestellung auf
Als Klassendiagramm:
Kunde ───────── Bestellung
Eine Assoziation bedeutet:
Diese Klassen stehen miteinander in Beziehung.
Multiplizität
Die Multiplizität zeigt, wie viele Objekte miteinander verbunden sein können.
| Multiplizität | Bedeutung |
|---|---|
1 |
genau eins |
0..1 |
kein oder eins |
* |
beliebig viele |
1..* |
mindestens eins |
0..* |
beliebig viele oder keine |
Beispiel:
Kunde 1 ───── 0..* Bestellung
Bedeutung:
Ein Kunde kann keine, eine oder mehrere Bestellungen haben.
Eine Bestellung gehört zu genau einem Kunden.
Unterschied Kardinalität und Multiplizität
In ERM sagt man oft:
1:n
n:m
Im UML-Klassendiagramm sieht man eher:
1
0..*
1..*
*
Beispiel:
Kunde 1 ───── 0..* Bestellung
entspricht ungefähr:
Kunde 1:n Bestellung
Aggregation und Komposition kurz erklärt
Diese beiden Beziehungen können in UML vorkommen, sind aber für den schnellen IHK-Einstieg nicht immer der Schwerpunkt.
| Beziehung | Symbol | Bedeutung |
|---|---|---|
| Aggregation | leere Raute | Teil-Ganzes-Beziehung, Teil kann auch ohne Ganzes existieren |
| Komposition | gefüllte Raute | starke Teil-Ganzes-Beziehung, Teil gehört fest zum Ganzen |
Einfacher Merksatz:
Aggregation = hat-Beziehung, Teil kann unabhängig existieren
Komposition = besteht-aus-Beziehung, Teil ist stark abhängig
Beispiel Aggregation:
Team hat Mitarbeiter
Ein Mitarbeiter kann auch ohne dieses Team existieren.
Beispiel Komposition:
Rechnung besteht aus Rechnungspositionen
Eine Rechnungsposition ergibt ohne Rechnung meist keinen Sinn.
Unterschied Klasse und Objekt
| Begriff | Bedeutung | Beispiel |
|---|---|---|
| Klasse | Bauplan | Produkt |
| Objekt | konkrete Ausprägung | Produkt p1 = neuer Monitor |
Beispiel:
Klasse: Produkt
Objekt: monitor1
Java:
Produkt monitor1 = new Produkt("Dell", "U2723QE", 499.99);
Die Klasse beschreibt, welche Attribute und Methoden ein Objekt haben kann.
Das Objekt ist eine konkrete Instanz dieser Klasse.
UML-Klassendiagramm vs. ERM
| UML-Klassendiagramm | ERM |
|---|---|
| zeigt Programmstruktur | zeigt Datenmodell |
| Klassen | Entitäten |
| Attribute | Attribute |
| Methoden | keine Methoden |
| Vererbung möglich | normalerweise keine Methoden/Vererbung |
| wichtig für OOP / Java | wichtig für Datenbanken |
Merksatz:
ERM = Daten fachlich modellieren
UML-Klassendiagramm = Programmklassen modellieren
Vorgehensweise in der Prüfung
Wenn du ein UML-Klassendiagramm erstellen sollst, gehe so vor:
| Schritt | Frage |
|---|---|
| 1 | Welche Klassen gibt es? |
| 2 | Welche Attribute gehören zu welcher Klasse? |
| 3 | Welche Methoden sind sinnvoll oder vorgegeben? |
| 4 | Gibt es gemeinsame Eigenschaften? |
| 5 | Kann man eine Oberklasse bilden? |
| 6 | Gibt es Vererbung? |
| 7 | Gibt es Beziehungen zwischen Klassen? |
| 8 | Welche Multiplizitäten sind sinnvoll? |
| 9 | Welche Sichtbarkeit brauchen Attribute und Methoden? |
Beispiel: Produktverwaltung
Fachliche Beschreibung:
Es soll eine Produktverwaltung erstellt werden.
Jedes Produkt hat eine Marke, ein Modell und einen Preis.
Ein Monitor hat zusätzlich eine Größe in Zoll und eine Auflösung.
Eine Tastatur hat zusätzlich ein Layout und die Information, ob sie mechanisch ist.
Mögliche Klassen:
Produkt
Monitor
Tastatur
Oberklasse:
Produkt
Unterklassen:
Monitor
Tastatur
Warum?
Monitor ist ein Produkt.
Tastatur ist ein Produkt.
Mögliches Klassendiagramm als Text
Produkt
--------------------------------
- marke: String
- modell: String
- preis: double
--------------------------------
+ toString(): String
Monitor extends Produkt
--------------------------------
- groesseZoll: double
- aufloesung: String
--------------------------------
+ toString(): String
Tastatur extends Produkt
--------------------------------
- layout: String
- mechanisch: boolean
--------------------------------
+ toString(): String
Typische IHK-Fehler beim UML-Klassendiagramm
| Fehler | Warum problematisch? |
|---|---|
| Attribute und Methoden vermischen | Attribut speichert Daten, Methode führt Verhalten aus |
| Sichtbarkeit vergessen | +, -, # sind wichtige UML-Informationen |
| Attribute öffentlich machen | In Java sind Attribute meist private |
| Vererbung falsch herum zeichnen | Pfeil zeigt zur Oberklasse |
| Klassen im Plural schreiben | Klassennamen meist Singular |
| ERM und Klassendiagramm verwechseln | ERM hat keine Methoden |
| Methoden ohne Rückgabetyp schreiben | Rückgabetyp gehört häufig dazu |
| Unterklasse enthält alle Oberklassenattribute doppelt | Gemeinsames gehört in die Oberklasse |
Prüfungs-Merksätze
Klasse = Bauplan für Objekte
Objekt = konkrete Instanz einer Klasse
Attribut = gespeicherte Eigenschaft
Methode = Verhalten / Funktion
+ = public
- = private
# = protected
Vererbungspfeil zeigt zur Oberklasse
Gemeinsame Attribute gehören in die Oberklasse
Spezielle Attribute gehören in die Unterklasse
ERM zeigt Daten, Klassendiagramm zeigt Programmstruktur
Mini-Beispiel 1
Aufgabe:
Ein Produkt hat eine Marke, ein Modell und einen Preis.
Lösung:
Produkt
--------------------------------
- marke: String
- modell: String
- preis: double
Begründung:
marke, modell und preis sind Eigenschaften eines Produkts.
Deshalb sind sie Attribute.
Mini-Beispiel 2
Aufgabe:
Ein Monitor ist ein Produkt und hat zusätzlich eine Größe in Zoll.
Lösung:
Monitor erbt von Produkt.
Monitor
--------------------------------
- groesseZoll: double
Begründung:
Monitor ist eine spezielle Produktart.
Deshalb ist Vererbung sinnvoll.
Mini-Beispiel 3
Aufgabe:
Ein Kunde kann mehrere Bestellungen haben.
Mögliches UML-Klassendiagramm:
Kunde 1 ───── 0..* Bestellung
Begründung:
Ein Kunde kann mehrere Bestellungen haben.
Eine Bestellung gehört zu einem Kunden.
Mini-Testfragen
1. Wofür wird ein UML-Klassendiagramm verwendet?
Ein UML-Klassendiagramm wird verwendet, um die Struktur eines objektorientierten Programms darzustellen.
Es zeigt:
Klassen
Attribute
Methoden
Beziehungen
Vererbung
2. Was ist eine Klasse?
Eine Klasse ist ein Bauplan für Objekte.
Beispiel:
Produkt
Monitor
Tastatur
3. Was ist ein Attribut?
Ein Attribut ist eine gespeicherte Eigenschaft einer Klasse.
Beispiel:
- marke: String
- preis: double
4. Was ist eine Methode?
Eine Methode beschreibt ein Verhalten oder eine Funktion einer Klasse.
Beispiel:
+ toString(): String
+ getPreis(): double
5. Was bedeutet `+` im UML-Klassendiagramm?
+ bedeutet:
public / öffentlich
Das Element ist von außen zugreifbar.
6. Was bedeutet `-` im UML-Klassendiagramm?
- bedeutet:
private / privat
Das Element ist nur innerhalb der Klasse direkt zugreifbar.
7. In welche Richtung zeigt der Vererbungspfeil?
Der Vererbungspfeil zeigt zur Oberklasse.
Beispiel:
Monitor ───▷ Produkt
8. Warum gehören marke, modell und preis in die Klasse Produkt?
Weil diese Attribute für mehrere Produktarten gemeinsam gelten können.
Beispiele:
Monitor
Tastatur
Maus
CPU
Alle können Marke, Modell und Preis haben.
9. Was ist der Unterschied zwischen Klasse und Objekt?
Eine Klasse ist der Bauplan.
Ein Objekt ist eine konkrete Instanz dieser Klasse.
Beispiel:
Klasse: Produkt
Objekt: monitor1
10. Was ist der Unterschied zwischen ERM und UML-Klassendiagramm?
ERM modelliert Daten fachlich.
UML-Klassendiagramm modelliert die Programmstruktur.
Wichtig:
Ein Klassendiagramm kann Methoden und Vererbung enthalten.
Ein ERM normalerweise nicht.
Nächste Seite
Danach kommt die eigene Trainer-Seite:
UML-Klassendiagramm-Trainer
Dort bauen wir den interaktiven Trainer mit Aufgaben zu:
Klassen erkennen
Attribute zuordnen
Methoden eintragen
Sichtbarkeit bestimmen
Vererbung erkennen
Beziehungen zwischen Klassen darstellen