Die folgenden Beispiele für UML-Klassendiagramme stammen aus dem Zentralabitur Informatik des Landes NRW. Mithilfe dieser Beispiele können Sie Ihre Kenntnisse zu diesem Thema vertiefen.
Beispiel 1 (Abitur 2012)
Hier sehen wir ein auf den ersten Blick recht einfaches UML-Klassendiagramm, das aber bei näherer Betrachtung doch etwas komplexer erscheint.
Klasse Titel
Eine Klasse Titel hat mehrere Instanzvariablen, von denen offensichtlich liedname und interpret, beide vom Typ String, die wichtigsten für die Aufgabenstellung sind. Weitere Instanzvariablen sind möglicherweise vorhanden, werden in diesem Diagramm aber vernachlässigt.
Die Klasse Titel besitzt einen Konstruktor, dem der Liedname und der Interpret übergeben werden. Außerdem sehen wir zwei Getter-Methoden gibLiedname() und gibInterpret(). Weitere Methoden sind durch ... an gedeutet.
Klasse Wiedergabeliste
Die Klasse besitzt eine Instanzvariable titelliste, die aber nicht in dem zweiten Abschnitt des Klassenkastens aufgeführt ist. Diese titelliste ist ein Objekt einer Klasse List, bei der es sich offensichtlich um eine Sammlungsklasse wie ArrayList oder LinkedList handelt. Die Elemente dieser Sammlungsklasse - hier als Inhaltsobjekte bezeichnet - sind Verweise auf Objekte der Klasse Titel.
Beispiel 2 (Abitur 2015)
Dieses UML-Diagramm aus dem Jahre 2015 sieht schon komplexer aus.
Klasse Einsatz
Diese Klasse ist die elementare Klasse der Einsatzverwaltung einer Polizeistation. Auf die Instanzvariablen sowie die vielen Methoden gehen wir jetzt nicht im Einzelnen ein. Nicht direkt im Klassenkasten stehen hier drei private Instanzvariablen notrufZeitstempel, ankunftZeitstempel und abschlussZeitstempel, bei denen es sich um Objekte der Klasse Zeitstempel handelt.
Klasse Einsatzverwaltung
Auch hier vernachlässigen wir die Instanzvariablen und Methoden im Klassenkasten und schauen uns lieber die Instanzvariablen aktivierteEinsaetze und archivierteEinsaetze an, die nicht direkt im Klassenkasten vermerkt sind. Bei beiden Instanzvariable handelt es sich um Objekte einer Sammlungsklasse List, deren Elemente Verweise auf Objekte der Klasse Einsatz sind.
Eine dritte Instanzvariable von Einsatzverwaltung heißt wartendeEinsaetze und ist ein Objekt der Klasse EinsatzGeber. Eine Instanzvariable dieser Klasse heißt liste und ist ebenfalls ein Objekt der Klasse List.
Beispiel 3 (Abitur 2017)
Dieses dritte UML-Diagramm aus einer Abituraufgabe des Jahres 2017 beschreibt ein kleines Programm zur Verwaltung einer Fähre mit Fahrzeugen und Wartespuren.
Klasse Fahrzeug
Die zentrale Klasse ist Fahrzeug. Ein Fahrzeug besitzt die beiden Instanzvariable laenge und gewicht. Außerdem kann ein Fahrzeug in eine Spur einfahren oder diese wieder verlassen. Dazu besitzt die Klasse unter anderem die Methoden fahreInSpur() und verlasseSpur(). Über die Methode gibSpur() kann abgefragt werden, in welcher Spur sich das Fahrzeug gerade befindet.
Klasse Spur
Die Klasse Spur verwaltet mehrere Fahrzeuge. Intern verwendet sie dazu ein Objekt der Klasse Queue, also eine Warteschlange. Die Elemente dieser Warteschlange sind Referenzen auf Objekte der Klasse Fahrzeug. Eine Spur besitzt außerdem eine maximale Länge, die im Attribut maxLaenge gespeichert wird.
Mit den Methoden gibErstesFahrzeug() und entferneErstesFahrzeug() kann auf das erste Fahrzeug der Warteschlange zugegriffen werden. Die Methode kannAufnehmen() überprüft, ob noch genügend Platz für ein weiteres Fahrzeug vorhanden ist. Mit nimmAuf() wird ein Fahrzeug schließlich in die Spur eingefügt.
Klasse Faehre
Diese Klasse besitzt mehrere Ladespuren, die in einem Array vom Typ Spur[] gespeichert werden. Über die Methode gibLadespurMitNr() kann auf eine bestimmte Spur zugegriffen werden.
Klasse Verlademanager
Die Klasse Verlademanager schließlich verwaltet die Wartespuren vor der Fähre. Auch diese Wartespuren werden in einem Array vom Typ Spur[] gespeichert. Zusätzlich besitzt der Verlademanager eine Instanzvariable, die ein Objekt der Klasse Faehre ist.
Beispiel 4 (Abitur 2024)
Dieses UML-Diagramm aus einer Abituraufgabe des Jahres 2024 beschreibt ein kleines Programm zur Verwaltung eines Goldabbaugebiets. Das Gebiet besteht aus mehreren Parzellen, in denen verschiedene Erdschichten mit unterschiedlichem Goldanteil abgebaut werden können.
Klasse Erdschicht
Die Klasse Erdschicht beschreibt eine einzelne Schicht im Boden. Jede Erdschicht besitzt die drei Instanzvariablen sorte, dicke und goldanteil. Die Dicke gibt an, wie mächtig die Schicht ist, während der Goldanteil beschreibt, wie viel Gold in dieser Schicht enthalten ist.
Über die Getter-Methoden gibSorte(), gibDicke() und gibGoldanteil() können die Eigenschaften einer Erdschicht abgefragt werden. Mit der Methode wascheAus() wird vermutlich die Menge des gewonnenen Goldes berechnet. Die Methode trageAb() entfernt einen Teil der Erdschicht und liefert anschließend eine neue Erdschicht zurück.
Klasse Parzelle
Eine Parzelle verwaltet mehrere Erdschichten. Intern verwendet sie dazu ein Objekt der Klasse Stack. Die Elemente dieses Stapels sind Referenzen auf Objekte der Klasse Erdschicht. Dadurch können Erdschichten nach dem Last-In-First-Out-Prinzip verwaltet werden.
Zusätzlich besitzt eine Parzelle die beiden Instanzvariablen aktAbbautiefe und maxAbbautiefe. Über die Methode gibAktuelleAbbautiefe() kann die aktuelle Abbautiefe abgefragt werden. Mit der Methode baueAb() wird eine bestimmte Dicke an Erdschichten abgetragen.
Klasse Claim
Die Klasse Claim verwaltet mehrere Parzellen. Diese werden in einem zweidimensionalen Array vom Typ Parzelle[][] gespeichert. Dadurch können die Parzellen zeilen- und spaltenweise angeordnet werden.
Über die Methode gibParzelle() kann auf eine bestimmte Parzelle zugegriffen werden. Die Methode istStabil() überprüft vermutlich, ob die Tiefenunterschiede zwischen benachbarten Parzellen einen bestimmten Grenzwert nicht überschreiten. Dazu verwendet die Klasse die private Hilfsmethode berechneTiefendifferenz().