i

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 Kartenhaufen, die als Bauplan für Kartenhaufen-Objekte dienen soll.

Klassendiagramm

Objekte der Klasse Kartenhaufen verfügen also über die Attribute kartenListe und wert. Zudem können sie die Methode hinzufuegen(...) ausführen. Die Methode Kartenhaufen() 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 Kartenhaufen-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. kartenhaufenSpieler1: Kartenhaufen). 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, den sogenannten Konstruktor.

In einem Klassendiagramm wird der Konstruktor dadurch gekennzeichnet, dass er 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 mit zwei Objekten der Klasse Kartenhaufen lässt sich wie folgt herstellen.

Objektdiagramm

Eine Zuweisung der Gestalt kartenstapelSpieler1 = Kartenstapel() ruft den Konstruktor der Klasse Kartenstapel auf und erzeugt so ein Objekt der Klasse Kartenstapel. Zusätzlich bindet diese Zuweisung den Namen kartenstapelSpieler1 an das neu erzeugte Objekt. Entsprechend erzeugt eine Zuweisung kartenstapelSpieler2 = Kartenstapel() ein Objekt der Klasse Kartenstapel und bindet es an den Namen kartenstapelSpieler2.

Zur Vernichtung von Objekten verfügt eine Klasse über einen sogenannten Destruktor.

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

Suche

v
7.2.2.1.3.2
dev.inf-schule.de/oop/python/spiele/objekteklassen/klassen/konzept_klasse
dev.inf-schule.de/7.2.2.1.3.2
dev.inf-schule.de/@/page/oQ4w10T82XWjSUAN

Rückmeldung geben