Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Fachkonzept - Klasse

Was ist 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, erstes Beispiel[1]
Schuhe, weiteres Beispiel[2]
Schuhe gezeichnet von vanGogh[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 Ampel, die als Bauplan für Ampelobjekte dienen soll.

Klassendiagramm

Objekte der Klasse Ampel verfügen also über die Attribute lampeRot, lampeGelb und lampeGruen. Zudem können sie die Methoden setLampen(...), getLampen() und schalten(). Die Methode Ampel() ist eine besondere Methode, deren Bedeutung unten geklärt wird.

Beachte, dass im Klassendiagramm auch die Typen der Attribute (und - sofern vorhanden - Parameter) spezifiziert werden.

Objekt als Exemplar einer Klasse

Ein Objekt (als Exemplar einer Klasse) ist eine Einheit, die nach dem Bauplan der zugeordneten 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. Ausgenommen bleibt hier nur die Methode, deren Name mit dem Klassennamen übereinstimmt (s. u.). 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 Ampel-Objekte erzeugt wurden.

Objekt- und Klassendiagramm

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.
Objektnamen werden unterstrichen und mit Doppelpunkt der zugehörige Klassennamen angegeben (z.B. ampel1: Ampel). Ist die zugehörige Klasse aus dem Kontext klar ersichtlich, kann der Klassennamen beim Objekt auch entfallen.

Erzeugung und Vernichtung von Objekten

Ein Software-Objekt hat - wie viele Objekte der realen Welt - eine bestimmte Lebensdauer. Es muss erzeugt werden, bevor es in Aktion treten kann, und kann auch wieder vernichtet werden.

Zur Erzeugung von Objekten verfügt eine Klasse über eine spezielle Methode, die sogenannte Konstruktormethode.

In einem Klassendiagramm wird eine Konstruktormethode dadurch gekennzeichnet, dass sie denselben Namen wie die Klasse selbst trägt. Oft wird diese spezielle Methode in Klassendiagrammen aber auch weggelassen. Beachte, dass ein Objekt eine Konstruktormethode nicht ausführen kann.

Die oben im Objekt- und Klassendiagramm gezeigte Situation lässt sich wie folgt herstellen. Eine Zuweisung der Gestalt ampel1 = Ampel() ruft den Konstruktor der Klasse Ampel auf und erzeugt so ein Objekt der Klasse Ampel. Zusätzlich bindet diese Zuweisung den Namen ampel1 an das neu erzeugte Objekt. Anschließend können die Attributwerte des Objekts ampel1 mit Hilfe der Operation setLampen(...) geeignet initialisiert werden. Entsprechend erzeugt eine Zuweisung ampel2 = Ampel() ein Objekt der Klasse Ampel und bindet es an den Namen ampel2.

Zur Vernichtung von Objekten verfügt eine Klasse über eine sogenannte Destruktormethode.

Moderne Programmiersysteme sorgen selbst für die Vernichtung nicht mehr benötigter Objekte, so dass man sich um diese Vernichtung in der Regel nicht kümmern muss.

Quellen

X

Fehler melden

X

Suche