Also die Klassenvariablen haben schon einen Sinn: sie sind der 'globale' (für die gesamte Klasse geltende) Informationsspeicher, während innerhalb der Methoden lokale Variablen deklariert werden. Da man mit der return Anweisung nur eine Variable zurückgeben kann, kann man so die Ergebnisse von Berechnungen der ganzen Klasse zur Verfügung stellen.
Konstruktoren kann man zum Anlegen von Startwerten verwenden. Wenn man möchte, dass eine gewisse Klassenvariable per Default schon Werte zugewiesen bekommt, kann man das da machen. Ausserdem kann man ja einem Konstruktor auch Parameter übergeben.
ein Beispiel:
Was ich aber noch wichtiger finde, ist dass man das ganze überschreiben kann. Ich habe zum Beispiel eine Tabelle, in der Rubriken gespeichert werden. Jede Rubrik kann wieder Töchter haben usw. Meine Klasse nimmt nun alle Datensätze und geht sie durch, stellt eine Hierarchie auf und mit speziellen Methoden kann man dann den HierarchieBaum darstellen.
Nun lege ich in einem sehr einfachen Konstruktor fest, dass die Einrückungstiefe pro Hierarchielevel ein paar Pixel beträgt. Wenn ich das aber in einer anderen Situation nicht mehr so haben will, kann ich die Klasse ableiten, einen neuen Konstruktor hinzufügen und alles arbeitet mit der neuen Einrückungstiefe, ohne auch nur einmal die Basisklasse verändert zu haben. Im Beispiel könnte das so aussehen:
Wie gesagt: Konstruktoren sind zum setzen von Startwerten da.
Mit Krause und OOP hast du recht, daher hab ich den Dreh erst bei der Java Programmierung gefunden. Aber mittlerweile möchte ich es in bestimmten Situationen nicht mehr missen.
Ciao, F.o.G.
Konstruktoren kann man zum Anlegen von Startwerten verwenden. Wenn man möchte, dass eine gewisse Klassenvariable per Default schon Werte zugewiesen bekommt, kann man das da machen. Ausserdem kann man ja einem Konstruktor auch Parameter übergeben.
ein Beispiel:
PHP:
<?php
class Test {
function Test($startwert1, $startwert2) {
$this->wert1 = $startwert1;
$this->wert2 = $startwert2;
}
}
$myTest = new Test("1", "2");
?>
Nun lege ich in einem sehr einfachen Konstruktor fest, dass die Einrückungstiefe pro Hierarchielevel ein paar Pixel beträgt. Wenn ich das aber in einer anderen Situation nicht mehr so haben will, kann ich die Klasse ableiten, einen neuen Konstruktor hinzufügen und alles arbeitet mit der neuen Einrückungstiefe, ohne auch nur einmal die Basisklasse verändert zu haben. Im Beispiel könnte das so aussehen:
PHP:
<?php
class Test2 extends Test {
function Test($startwert1, $startwert2) {
$this->wert1 = $startwert1;
$this->wert2 = $startwert2 * 2;
}
}
$myTest = new Test2("1", "2");
?>
Wie gesagt: Konstruktoren sind zum setzen von Startwerten da.
Mit Krause und OOP hast du recht, daher hab ich den Dreh erst bei der Java Programmierung gefunden. Aber mittlerweile möchte ich es in bestimmten Situationen nicht mehr missen.
Ciao, F.o.G.