Klassendiagramm
Ein Klassendiagramm ist ein UML-Strukturdiagramm, das Klassen, Attribute, Methoden und Beziehungen eines objektorientierten Systems darstellt.
Auf dieser Seite
Ein Klassendiagramm ist ein Diagramm der UML, mit dem du die statische Struktur eines objektorientierten Systems beschreibst. Es zeigt, welche Klassen es gibt, welche Daten und Operationen sie besitzen und wie diese Klassen miteinander verbunden sind.
In der IT-Ausbildung ist das Klassendiagramm besonders wichtig für Fachinformatiker Anwendungsentwicklung. Es taucht in Aufgaben zu Softwareentwurf, objektorientierter Programmierung, Datenmodellierung und Projektdokumentation auf. In der Prüfung musst du häufig ein vorhandenes Klassendiagramm lesen, ein kleines Modell aus einer Beschreibung ableiten oder Beziehungen fachlich begründen.
Wofür ein Klassendiagramm genutzt wird
Ein Klassendiagramm beantwortet nicht die Frage, in welcher Reihenfolge ein Programm abläuft. Dafür eignen sich zum Beispiel Aktivitätsdiagramme, Sequenzdiagramme oder Pseudocode. Das Klassendiagramm beschreibt die Struktur:
- Welche fachlichen Objekte gibt es?
- Welche Attribute speichern diese Objekte?
- Welche Methoden oder Operationen stellt eine Klasse bereit?
- Welche Klassen kennen oder besitzen andere Klassen?
- Gibt es Vererbung, Schnittstellen oder abstrakte Klassen?
- Wie viele Objekte dürfen miteinander verbunden sein?
Damit ist das Klassendiagramm ein Bindeglied zwischen fachlicher Analyse und Implementierung. Aus einem guten Klassendiagramm lässt sich oft erkennen, welche Klassen später im Code entstehen, welche Verantwortlichkeiten sie tragen und welche Beziehungen besonders wichtig sind.
Aufbau einer Klasse
Eine Klasse wird in UML als Rechteck dargestellt. Dieses Rechteck ist meistens in drei Bereiche unterteilt:
| Bereich | Inhalt | Beispiel |
|---|---|---|
| Klassenname | Name der Klasse | Kunde |
| Attribute | gespeicherte Eigenschaften | kundennummer: int, name: string |
| Methoden | Operationen oder Verhalten | bestellungAufgeben(): Bestellung |
Attribute und Methoden können mit Sichtbarkeiten gekennzeichnet werden:
| Zeichen | Bedeutung | Typische Verwendung |
|---|---|---|
+ | public | von außen sichtbar |
- | private | nur innerhalb der Klasse nutzbar |
# | protected | innerhalb der Klasse und ihrer Unterklassen nutzbar |
~ | package | innerhalb desselben Pakets sichtbar |
Ein einfaches Beispiel wäre eine Klasse Artikel mit den Attributen artikelnummer, name und preis. Eine Methode könnte preisBerechnen() sein, wenn Rabatte, Steuern oder Varianten berücksichtigt werden.
Beziehungen im Klassendiagramm
Die Beziehungen zwischen Klassen sind der wichtigste Teil eines Klassendiagramms. Sie zeigen, wie Objekte zusammenarbeiten oder voneinander abhängen.
| Beziehung | Bedeutung | Beispiel |
|---|---|---|
| Assoziation | Eine Klasse steht mit einer anderen in Verbindung | Kunde bestellt Bestellung |
| Aggregation | Schwache Ganzes-Teil-Beziehung | Team besteht aus Mitarbeiter, Mitarbeiter existieren auch ohne Team |
| Komposition | Starke Ganzes-Teil-Beziehung | Bestellung besteht aus Bestellposition, Positionen existieren nicht sinnvoll ohne Bestellung |
| Generalisierung | Vererbung zwischen Ober- und Unterklasse | Kunde und Lieferant erben von Person |
| Realisierung | Eine Klasse implementiert eine Schnittstelle | CsvExporter implementiert Exporter |
| Abhängigkeit | Eine Klasse nutzt eine andere nur punktuell | RechnungService nutzt PdfGenerator |
In Prüfungsaufgaben ist vor allem die Unterscheidung zwischen Assoziation, Aggregation und Komposition relevant. Eine Komposition ist nur dann sinnvoll, wenn das Teilobjekt ohne das Ganze nicht eigenständig bestehen soll. Wenn beide Objekte unabhängig existieren können, ist meist eine Assoziation oder Aggregation passender.
Multiplizitäten richtig lesen
Multiplizitäten beschreiben, wie viele Objekte einer Klasse mit Objekten einer anderen Klasse verbunden sein dürfen. Sie stehen an den Enden der Verbindungslinien.
| Multiplizität | Bedeutung |
|---|---|
1 | genau ein Objekt |
0..1 | kein oder ein Objekt |
* | beliebig viele Objekte |
0..* | kein, ein oder mehrere Objekte |
1..* | mindestens ein Objekt |
2..5 | mindestens zwei, höchstens fünf Objekte |
Beispiel: Ein Kunde kann 0..* Bestellungen haben. Eine Bestellung gehört zu genau 1 Kunde. Diese Aussage ähnelt einer Kardinalität im Entity-Relationship-Modell, ist aber im UML-Kontext objektorientiert zu lesen.
Beispiel: Online-Shop
Ein einfaches Klassendiagramm für einen Online-Shop könnte diese Klassen enthalten:
| Klasse | Attribute | Beziehungen |
|---|---|---|
Kunde | kundennummer, name, email | gibt Bestellungen auf |
Bestellung | bestellnummer, datum, status | besteht aus Bestellpositionen |
Bestellposition | menge, einzelpreis | verweist auf einen Artikel |
Artikel | artikelnummer, bezeichnung, preis | wird in Positionen verwendet |
Eine passende Modellierung wäre:
KundezuBestellung: Assoziation mit0..*Bestellungen pro Kunde und1Kunde pro BestellungBestellungzuBestellposition: Komposition, weil Positionen ohne Bestellung fachlich keinen Sinn ergebenBestellpositionzuArtikel: Assoziation, weil Artikel unabhängig von einer konkreten Position existieren
Damit erkennst du schon vor dem Programmieren, welche Objekte eigene Identität haben und welche eher Teil eines größeren Objekts sind.
Klassendiagramm vs. ER-Modell
Klassendiagramme und ER-Modelle sehen auf den ersten Blick ähnlich aus, haben aber unterschiedliche Schwerpunkte.
| Frage | Klassendiagramm | ER-Modell |
|---|---|---|
| Fokus | Objektorientierter Softwareentwurf | Konzeptioneller Datenbankentwurf |
| Elemente | Klassen, Attribute, Methoden, Beziehungen | Entitäten, Attribute, Beziehungen |
| Verhalten | Methoden können modelliert werden | Verhalten spielt keine Rolle |
| Ziel | Struktur des Codes und Domänenmodells | Struktur der Datenbank |
| Typische Umsetzung | Klassen in Programmiersprache | Tabellen, Primärschlüssel, Fremdschlüssel |
In der Praxis hängen beide Modelle oft zusammen. Ein Kunde kann sowohl Klasse im Code als auch Entität in einem Datenmodell sein. Trotzdem solltest du in der Prüfung sauber unterscheiden: Ein ER-Modell beschreibt Datenstrukturen, ein Klassendiagramm beschreibt objektorientierte Strukturen.
Typische Prüfungsaufgaben
In der AP Teil 1 und AP Teil 2 können Klassendiagramme auf verschiedene Arten vorkommen.
Typische Aufgaben sind:
- aus einer textuellen Beschreibung Klassen ableiten
- Attribute und Methoden passend zuordnen
- Multiplizitäten eintragen oder korrigieren
- Vererbung erkennen und modellieren
- Komposition von Aggregation unterscheiden
- ein Klassendiagramm in Programmcode übertragen
- Fehler in einem bestehenden Diagramm erklären
- ein Modell für die Projektdokumentation fachlich begründen
Besonders häufig wird nicht perfekte UML-Notation erwartet, sondern nachvollziehbares Modellieren. Die Prüfer wollen sehen, dass du Fachobjekte, Verantwortlichkeiten und Beziehungen sinnvoll strukturieren kannst.
Häufige Fehler
Viele Klassendiagramme werden unklar, weil zu viel oder zu wenig modelliert wird.
Häufige Fehler:
- Datenbanktabellen werden eins zu eins als Klassen übernommen, ohne objektorientierte Verantwortung zu prüfen.
- Jede Klasse bekommt nur Attribute, aber keine sinnvollen Methoden.
- Multiplizitäten fehlen oder stehen am falschen Linienende.
- Komposition wird verwendet, obwohl die Teilobjekte unabhängig existieren können.
- Vererbung wird genutzt, obwohl eine einfache Assoziation reichen würde.
- Klassen heißen wie technische Masken oder Seiten statt wie fachliche Objekte.
- Getter und Setter werden in Prüfungsdiagrammen unnötig breit ausgeschrieben.
Ein gutes Klassendiagramm ist nicht möglichst groß, sondern fachlich sauber. Für Prüfungen reicht oft ein reduziertes Modell, das die geforderten Beziehungen klar zeigt.
Checkliste für dein Klassendiagramm
Nutze diese Fragen, bevor du ein Klassendiagramm abgibst:
- Sind alle wichtigen Fachobjekte als Klassen vorhanden?
- Haben Klassen sprechende Namen im Singular?
- Sind Attribute mit sinnvollen Datentypen angegeben?
- Sind Methoden nur dort eingetragen, wo Verhalten relevant ist?
- Sind Beziehungen beschriftet, wenn die Bedeutung sonst unklar wäre?
- Stimmen die Multiplizitäten an beiden Enden?
- Ist Vererbung nur dort verwendet, wo eine echte “ist ein”-Beziehung besteht?
- Ist Komposition nur dort eingesetzt, wo Teilobjekte abhängig vom Ganzen sind?
- Kannst du jede Modellierungsentscheidung im Fachgespräch erklären?
Wenn du diese Fragen beantworten kannst, ist dein Klassendiagramm meist solide genug für Prüfung und Projektdokumentation.
Prüfungsbezug
Passt zu deiner Prüfungsvorbereitung
Wenn dir dieser Begriff in Aufgaben, Projektdokumentation oder Fachgespräch begegnet, ordne ihn direkt in den Prüfungsstoff ein.