Skip to main content

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

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

UML-Klassendiagramm – 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