Fachkonzept - Klasse

Was ist eigentlich eine Klasse?

Der Begriff "Klasse" wird hier im Sinne von Klassifizieren benutzt. Du weißt sicher, was das heißt: Wenn man klassifiziert, dann versucht man, Gemeinsamkeiten von Objekten herauszustellen.

Schuhe[1]
Schuhe[2]
Schuhe[3]

Die Klasse "Schuh" beschreibt Objekte, die man als Fußbekleidung nutzt - und somit an- und ausziehen sowie tragen kann - und die bestimmte Eigenschaften (wie Modell, Größe, Farbe und Verschluss) aufweisen.

Klassendiagramm

Wer Schuhe herstellen will, muss sich (mehr oder weniger) an der Klassenbeschreibung für Schuhe orientieren, damit das, was hergestellt wird, auch wirklich Schuhe sind. Es macht sicher keinen Sinn, sich an der Klassenbeschreibung für Hosen oder Pullover zu orientieren. Eine Klassenbeschreibung für Schuhe kann somit als eine Art Bauplan für Schuhe aufgefasst werden.

Diese Sichtweise können wir verallgemeinern und auf Software-Objekte übertragen. Damit (Software-) Objekte einer bestimmten Sorte erzeugt werden können, benötigt man eine passende Klassenbeschreibung in Form eines Bauplans.

Fachkonzept Klasse

Eine Klasse ist ein Bauplan für Objekte. Dieser Bauplan legt genau fest, welche Attribute die zu konstruierenden Objekte haben sollen und welche Methoden sie ausführen können sollen.

Das folgende Klassendiagramm zeigt die Struktur der Klasse Hase, die als Bauplan für Hase-Objekte dienen soll.

Klassendiagramm

Objekte der Klasse Hase verfügen also z.B. über das Attribut gegesseneKarotten. Zudem können sie u.a. die Methoden laufen() und esseKarotte() ausführen.

Beachte, dass im Klassendiagramm auch die Typen der Attribute und Parameter sowie die Rückgabetypen der Methoden spezifiziert sind. Die Datentypen werden jeweils durch Doppelpunkt getrennt nach dem Namen der Variable bzw. Methode angegeben. Näheres zu den Datentypen erfährst Du unten.

In Java werden Datentypen links vom Variablen- bzw. Methodennamen angegeben. Man kann deshalb auch folgende Schreibweise wählen:

Klassendiagramm - Java Variante

Die im UML-Standard definierte Variante hat den Vorteil, dass sie sprachunabhängig ist. Die Java-Variante hat den Vorteil, dass sie näher an der Implementierung ist. Im Folgenden wird die im UML-Standard definierte Variante gewählt.

Objekt als Exemplar einer Klasse

Ein Objekt (als Exemplar einer Klasse) ist eine Einheit, die nach dem Bauplan der zugehörigen Klasse erzeugt wurde. Ein Objekt verfügt somit über die Attribute, die in der Klasse festgelegt sind. Diesen Attributen können - im Unterschied zur Klasse - Attributwerte zugewiesen werden. Ein Objekt kann zudem sämtliche Methoden der Klasse ausführen. Objekte können mit Namen versehen werden, über die sie dann gezielt angesprochen werden können.

Das folgende Objekt- und Klassendiagramm zeigt eine Situation, in der zwei verschiedene Hase-Objekte erzeugt wurden.

Klassen- und Objektdiagramm

Beachte, dass man bei der Darstellung der Objekte die aktuellen Attributwerte angibt. Beachte auch, dass man die von den Objekten ausführbaren Methoden weglässt, da sie durch die Zuordnung zur Klasse klar sind.

Datentypen

Im Computer werden Daten auf unterschiedliche Art gespeichert. Die Art wie diese gespeichert werden, wird durch den Datentyp bestimmt. Wichtige Datentypen sind z.B. int für ganze Zahlen, double für Kommazahlen oder boolean für die Wahrheitswerte true und false. Ebenso ist jede Klasse ein Datentyp. Eine wichtige Klasse ist die automatisch mit Java mitgelieferte Klasse String für Zeichenketten. Aber auch Hase ist ein Datentyp.

Für Attribute kann man im Klassen- und Objektdiagramm die Datentypen angeben. Manchmal lässt man sie aber auch -vor allem im Objektdiagramm- weg, wenn diese für die momentane Überlegung nicht so wichtig sind. Bei der späteren Programmierung einer Klasse müssen sie (in Java) aber angegeben werden.

Besonders aufschlussreich sind die Datentypen bei der Signatur einer Methode. Diese besteht aus

Rückgabetyp methodenname(Datentyp parameter1, Datentyp parameter2, ...)

Die formalen Parameter parameter1 und parameter2 werden in der Klasse definiert. Wird eine Methode an einem Objekt aufgerufen, müssen die formalen Parameter durch aktuelle Parameter, also Werte von entsprechenden Datentypen ersetzt werden.

Formaler und aktueller Parameter

Der Rückgabetyp gibt an, welchen Typ das Ergebnis der Methode besitzt. Den Fall, dass eine Methode keine Rückgabe liefert kann man am Schlüsselwort void erkennen.

Keine Rückgabe

Vererbung

Da ein Schlittschuh alle Eigenschaften und Methoden eines gewöhnlichen Schuhs erbt, muss diese Beziehung sich auch auf Klassenebene auswirken. Man sagt: Schlittschuh ist Unterklasse von Schuh, oder umgekehrt: Schuh ist Oberklasse von Schlittschuh. Im Klassendiagramm wird diese Vererbungsbeziehung durch einen speziellen Pfeil ausgedrückt. Dieser muss genau so gezeichnet werden, da es verschiedene Arten von Beziehungen gibt und bspw. ein normaler Pfeil eine andere Art von Beziehung zwischen Klassen ausdrückt.

Vererbung Schuh-Schlittschuh

In Greenfoot und BlueJ werden Vererbungsbeziehungen analog dargestellt.

Vererbung in Greenfoot

Zusammenfassung

Der folgende Screencast fasst einige der wichtigsten Punkte dieses Kapitels noch einmal zusammen (Ton erforderlich).

Quellen

X

Fehler melden

X

Suche