kramann.info
© Guido Kramann

Login: Passwort:










3.3 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:
C++ Beispiel mit Konstruktor

Bild 3.3-1: Konstruktor-Methode und Aufruf der Konstruktor-Methode

Konsolenausgabe

Bild 3.3-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.
UML-Klassendiagramm

Bild 3.3-2: UML-KLassendiagramm der Klasse Zylinder mit Konstruktor.