Home > Informatik > Stufe Q1

Klassendiagramme

Allgemeines - Klassendiagramme - Mehrfachvererbung

BlueJ

Kommen wir noch einmal auf das Dungeon-Beispiel zurück. Wir betrachten jetzt mal das BlueJ-Fenster:

Das Klassendiagramm im BlueJ-Fenster

Das Klassendiagramm im BlueJ-Fenster

Im BlueJ-Fenster wird das sogenannte Klassendiagramm des Projektes übersichtlich dargestellt. Man achte auf die unterschiedliche Form der Pfeile. Die Pfeile für eine Vererbungsbeziehung (IST-Beziehung) sehen anders aus als die Pfeile für eine HAT-Beziehung. Hier eine verbale Beschreibung des Klassendiagramms:

"Die Klasse Lebewesen hat zwei Tochterklassen, nämlich Held und Monster..."

Nein, diese Aussage könnte einige Menschen zu der falschen Annahme verleiten, dass es sich hier um eine HAT-Beziehung handelt. Formulieren wir anders:

"Die Klassen Held und Monster sind Tochterklassen der Klasse Lebewesen".

Ja, diese Formulierung ist besser, damit wird die IST-Beziehung deutlicher.

"Außerdem hat die Klasse Held ein oder mehrere Objekte der Klasse Gegenstand".

Diese Formulierung ist eindeutig, denn es handelt sich tatsächlich um eine HAT-Beziehung.

UML

In der "Unified Modeling Language" UML sieht ein Klassendiagramm etwas anders aus.

Das gleiche Diagramm in UML

UML-Klassendiagramm des Projektes

Eine Klasse wird in einem UML-Diagramm als dreigeteilter Kasten dargestellt. Oben kommt der Name der Klasse hin, in der zweiten Abteilung stehen die Attribute und in der dritten Abteilung die Methoden. Ein + vor einem Namen heißt "public", ein - "private". Ein C bedeutet "Constructor".

UML-Diagramme sind unabhängig von einer konkreten Programmiersprache. Daher ist die Syntax der Attribut- und Methodendeklarationen auch etwas anders als in Java. Die Datentypen der Attribute sowie die Rückgabewerte von Methoden werden immer als letztes genannt. Der Rückgabetyp "void" wird im UML-Diagramm nicht erwähnt, diesen Typ gibt es ja auch nur in wenigen Programmiersprachen.

Man muss auch nicht alle Attribute und Methoden aufführen, weil das Diagramm dann leicht unübersichtlich werden kann. Es reicht, die relevanten Attribute und Methoden zu nennen.

An die Pfeile der HAT-Beziehungen kann man noch die Anzahl der Objekte schreiben, die sich in der übergeordneten Klasse befinden. Wenn ein Held-Objekt maximal 12 Gegenstands-Objekte besitzen kann, schreibt man 0..12 an den Pfeil (optional).

Beispiel aus der Wikipedia
Ein Diagramm aus der Wikipedia (Konto, Kunde, Adresse)

Ein Beispiel aus der Wikipedia

Hier sehen wir noch ein Beispiel aus dem UML-Artikel der Wikipedia. Privatkunde und Geschäftskunde sind Tochterobjekte der Klasse Kunde. Die Klasse Konto hat mindestens 1 Objekt der Klasse Kunde (entweder Privat- oder Geschäftskunden), und umgekehrt haben Objekte der Klasse Kunde (bzw. Objekte der beiden Unterklassen) mindestens ein Objekt der Klasse Konto. Außerdem haben die Objekte der Klassen Privat- und Geschäftskunde genau ein Objekt der Klasse Adresse.

Die Bezeichnungen der untergeordneten Objekte stehen in diesem Beispiel nicht in den Kästen für die Klassen, sondern an den Pfeilen. Ein Objekt der Klasse Privatkunde hat zum Beispiel ein Objekt der Klasse Adresse mit der Bezeichnung postAdresse.

Beispiel aus den Abituraufgaben NRW

Der Umgang mit UML-Diagrammen ist wichtig für die Schüler, die im NRW-Abitur das Fach Informatik schriftlich belegt haben.

Implementationsdiagramm aus einer Abituraufgabe von 2015

Implementationsdiagramm aus einer Abituraufgabe von 2015 (NRW)

Hier sehen wir ein sogenanntes Implementationsdiagramm aus einer GK-Aufgabe von 2015. Bei der Beschreibung fängt man wohl am besten mit der Klasse EinsatzVerwaltung an. Diese Klasse besitzt zwei Attribute aktiveEinsaetze und archivierteEinsaetze. Da es sich um etwas komplexere Attribute handelt, stehen diese nicht in der zweiten Abteilung des Klassenkastens, sondern an dem Pfeil der HAT-Beziehung. Dann sieht man nämlich, dass beide Attribute Objekte der Klasse List sind. In diesen List-Objekten werden als "Inhaltsobjekte" Objekte der Klasse Einsatz verwaltet. Die Klasse Einsatz ist sehr groß, sie enthält u.a. drei Objekte der Klasse Zeitstempel. Außerdem gibt es noch eine Klasse EinsatzGeber, die ebenfalls über ein Attribut der Klasse List verfügt. Ein Objekt dieser Klasse EinsatzGeber befindet sich dann wieder in der Klasse EinsatzVerwaltung.

Ehrlich gesagt, beim ersten (und auch beim zweiten) Mal bin ich selbst nicht durch dieses Diagramm durchgestiegen. Ich verstehe auch nicht, wie man Schülern solch komplexes und umfangreiches Material (12 Seiten, nur für diese eine Aufgabe!) geben kann. Inzwischen rate ich meinen eigenen Schülern immer häufiger ab, Informatik als drittes Abiturfach zu wählen.

Beispiel aus der Java-Bibliothek
Ausschnitt aus der Java-Klassenhierarchie

Ausschnitt aus der Java-Klassenhierarchie

Hier sehen Sie einen winzigen Ausschnitt aus der Java-Klassenhierarchie. Die alleroberste Mutterklasse ist Object. Alle Java-Klassen, die wir verwenden, stammen von dieser Klasse ab. Wenn Sie einen Button verwenden, erzeugen Sie ein Objekt der Tochterklasse JButton, die Tochterklasse von JComponent ist, welche Tochterklasse von Container ist, welche Tochterklasse von Component ist, welche Tochterklasse von Object ist. Und wie gesagt, das ist nur ein winziger Ausschnitt aus der Klassenhierarchie von Java. Insgesamt gibt es über 600, ich glaube, inzwischen sogar über 1000 solcher Java-Klassen, die alle von Object abstammen.