![]() |
![]() |
![]() | |
![]() |
Automatische Initialisierung mit dem KonstruktorEine weitere Problematik besteht in der Informatik ja immer darin, welche Werte eine Variable nach der Deklaration hat. Sinnvollerweise sollten Variablen nie undefiniert sein, dies ist quasi eine goldende Regel, die jeder Programmierer eingehämmert bekommt bzw. Folgen bei Mißachtung schmerzvoll erlernen muß. Nun stellt sich an der Stelle die Frage, welche Werte die Variablen bzw. Elemente unseres Objektes direkt nach der Instanzierung haben. Undefiniert ? In unserem Beispiel ja. Dem könnte man natürlich Abhilfe schaffen, indem man nach der Instanzierung alle Variablen manuell mit irgendwelchen Werten definiert. Aus Sicht des Programmierers des Objektes ist dies aber eine höchst unsichere Variante. Was, wenn es mal vergessen wird usw. Aus diesem Grunde gibt es eine Art „Autoexec“, eine Initialisierungsfunktion, die automatisch bei Instanzierung einer Klasse zu einem Objekt ausgeführt wird. Diese Funktion bezeichnet man in der objektorientierten Welt auch als Konstruktor. In PHP hat die Konstruktorfunktion immer den gleichen Namen wie die Klasse, d.h. eine entsprechende Funktion wird folgendermaßen definiert: Class Adresse { var $Name; var $Strasse; var $PLZ; var $Ort; var $Land; function Adresse () { $this->Name = ""; $this->Strasse = ""; $this->PLZ = 0; $this->Ort = ""; $this->Land = "Germany"; } // ...... weitere Funktionen hier nur weggelassen } $MeineAdresse = new Adresse; echo ($MeineAdresse->Land); Bereits bei der Instanzierung eines Objektes der Klasse „Adresse“ wird nun automatisch von PHP der Konstruktor ausgeführt, also die Funktion „Adresse“, welche in unserem Beispiel sämtliche internen Variablen initialisiert und mit sinnvollen Werten definiert. Im Beispiel oben wird beim „echo“-Aufruf also bereits „Germany“ ausgeben. Natürlich können in der Konstruktor-Funktion weitere Dinge erledigt werden, z.B. könnten die Daten auch aus einer Datenbank oder einer Datendatei gelesen werden o.ä. Einem Konstruktor können auch Parameter übergeben werden, wie folgendes Beispiel zeigt: Class Adresse { function Adresse ($Name,$Land="Germany") { $this->Name = $Name; $this->Strasse = ""; $this->PLZ = 0; $this->Ort = ""; $this->Land = $Land; } // ...... weitere Funktionen hier nur weggelassen } $MeineAdresse = new Adresse ("Hugo"); $DeineAdresse = new Adresse ("Peter","Italy");
Ein Konstruktor ist also eine sehr sinnvolle und vor allem bequeme Einrichtung und erlaubt uns als Objektprogrammierer sinnvolle Initialisierungen vorzunehmen ohne uns auf den Programmierer, der das Objekt lediglich anwendet, verlassen zu müssen. [zurück] - [bookmarken] - [Druckversion] - [Weiterempfehlen] - [Kontakt] - [Impressum]
Copyright © 2000-2012 by Portunity GmbH - Alle Rechte vorbehalten. |
![]() ![]() Providing unter:
http://portunity.net
![]()
|
|||||||||