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

Klassendiagramm

Objekte der Klasse Roboter verfügen also über die Attribute x, y und r. Zudem können sie die Methoden schritt(), links() und rechts() ausführen. Die Methode Roboter() ist eine besondere Methode, deren Bedeutung unten geklärt wird.

Beachte, dass im Klassendiagramm auch die Typen der Attribute und Parameter spezifiziert sind.

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 Roboter-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. rob1: Roboter). 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.

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

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

Suche

v
7.2.4.1.3
dev.inf-schule.de/oop/python/roboter/objekteklassen/konzept_klasse
dev.inf-schule.de/7.2.4.1.3
dev.inf-schule.de/@/page/8LRYpMZrfufwQ08D

Rückmeldung geben