Die Konstruktor-Methode
Wiederholung - Was sind Klassen, was Objekte?
Eine sichere Quelle für Verwirrung stellt für den Einsteiger
in die OOP stets der Zusammenhang zwischen
Klassen und Objekten dar.
Das haben wir schon gelernt:
- Klassen sind das, was man im Programmcode findet.
- Mit ihnen werden neue Arten von Objekten beschrieben.
- Klassen stellen also eine Art Bauplan für Objekte dar.
- Sie sind vergleichbar mit dem selber definieren von neuen Datentypen, wie es in C mit structs möglich ist.
- Allerdings mit der Ergänzung, dass Klassen für die von ihnen beschriebenen Objekte auch zugehörige Methoden, also Funktionen, vorsehen können.
- Eine Klasse alleine kann noch kein lauffähiges Programm darstellen.
- Ganz ohne Prozeduren kommt eine objektorientierte Programmiersprache nicht aus.
- In der aus C bekannten main-Methode, die auch in C++ ausserhalb jeder Klasse steht, werden Befehle geschrieben, die veranlassen, dass auf Grundlage der einzelnen Klassen Objekte erzeugt werden und durch Aufruf der Objektmethoden ein Datenaustausch zwischen main-Methode und Objekten und den Objekten untereinander stattfindet.
|
Die Konstruktor Methode
- Bisher war es sehr umständlich die Attribute eines Objektes mit bestimmten Werten zu belegen.
- Wenn die Atrribute im public-Bereich standen, konnte man auf sie mit dem Punkt-Operator zugreifen (vergl. Beispiel in Kapitel 1.3).
- Wenn die Atrribute im private-Bereich standen, benötigte man im public-Bereich spezielle Setz-Funktionen (set-Methods), mit denen die Attribute verändert werden konnten (vergl. Beispiel in Kapitel 3.1).
- Nun werden wir eine Möglichkeit kennen lernen, mit der sich direkt bei der Erzeugung der Objekte die Belegung der Attribute einstellen läßt.
- Nun werden wir eine Möglichkeit kennen lernen, mit der sich direkt bei der Erzeugung der Objekte die Belegung der Attribute einstellen läßt.
- Wann werden die Objekte erzeugt?
- Nehmen wir das Beispiel hier in Kapitel 3.1:
- Das Zylinder-Objekt wird hier mit dem Befehl
Zylinder z1; innerhalb der main-Methode erzeugt.
- Bei Hinzufügen einer Konstruktor-Methode, könnten nun durch folgende Syntax in der main-Methode Radius und Höhe eines Zylinders direkt gesetzt werden:
Zylinder kleinerZylinder(0.1,0.2), grosserZylinder(1.0,2.0);
- So würde das komplette zugehörige Programm aussehen, dass dies ermöglicht:
|
Bild 0-1: Konstruktor-Methode und Aufruf der Konstruktor-Methode
Bild 0-2: Konsolen-Ausgabe nach Aufruf.
Beispiel konstruktor.cpp gezipt
Konstruktor Syntax
- Eine Konstruktor-Methode heißt genauso wie die Klasse in der sie steht.
- Eine Konstruktor-Methode hat keinen Rückgabetyp.
- Eine Konstruktor-Methode kann beliebige Übergabeparameter haben.
- Eine Konstruktor-Methode steht immer im public-Block.
- Eine Konstruktor-Methode kann auf alle Objekt-Methoden und Objekt-Attribute, die innerhalb der Klasse definiert sind zugreifen
- Eine Klasse kann beliebig viele Konstruktor-Methoden enthalten, die sich aber in ihren Übergabeparametern unterscheiden müssen.
|
Konstruktor im UML-Klassendiagramm
- Der Konstruktor ist verwendbar noch bevor ein Objekt der Klasse erzeugt worden ist.
- Somit ist er nicht den Objekten, sondern der Klasse zugehörend.
- Alle anderen Attribute und Methoden in obigem Beispiel heißen auch Objekt-Attribut bzw. Objekt-Methode.
- Der Konstruktor ist dagegen eine Klassen-Methode.
- Klassen-Methoden werden auch statische Methoden genannt.
- Statisch wird sie genannt, weil sie nicht erst verwendet werden kann, wenn ein Objekt "dynamisch" erzeugt wurde.
- Statische Attribute und Methoden werden in UML mit einem Unterstrich dargestellt.
|
Bild 0-2: UML-KLassendiagramm der Klasse Zylinder mit Konstruktor.