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.
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.
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.
Objekte der Klasse Hase
verfügen also z.B. über das Attribut schritte
.
Zudem können sie u.a. die Methoden laufe()
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:
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.
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.
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.
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.
In Greenfoot und BlueJ werden Vererbungsbeziehungen analog dargestellt.
Zusammenfassung
Der folgende Screencast fasst einige der wichtigsten Punkte dieses Kapitels noch einmal zusammen (Ton erforderlich).Quellen
- [1]: Chuck Taylors - Urheber: Kris - Lizenz: Creative Commons BY-SA 2.0
- [2]: Puma Schuhe - Urheber: Thomas Steiner - Lizenz: CreativeCommons BY-SA 3.0
- [3]: Van Gogh - Ein Paar Schuhe - Urheber: van Gogh (Maler) / Fotograf unbekannt - Lizenz: Public Domain