Objektorientierung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
Objektdaten = Eigenschaften, Werte oder Properties (Objekteigenschaft) | = Definitionen = | ||
Objektmethoden = Funktionen | Objektdaten = Eigenschaften, Werte oder Properties (Objekteigenschaft) | ||
Objektmethoden = Funktionen | |||
= Klassen = | |||
Klassen werden vor der Verwendung erstellt und mit include eingebunden. | |||
Da in den Funktionen der Klasse nur lokale oder per Parameter übergebene Variablen bekannt sind, müssen auch klasseninterne Variablen mit $this->variable angesprochen werden. | |||
Klasse -> Objekt: | <pre> | ||
class Rechteck { | Klasse -> Objekt: | ||
var Länge; | class Rechteck { | ||
var Breite; | var Länge; | ||
var Breite; | |||
function Fläche () { | |||
return $this->Länge * $this->Breite; | function Fläche () { | ||
} // end function Fläche | return $this->Länge * $this->Breite; | ||
} // end class Rechteck | } // end function Fläche | ||
} // end class Rechteck | |||
$testRechteck = new Rechteck; | |||
$testRechteck->Länge = 5; | $testRechteck = new Rechteck; | ||
$testRechteck->Breite = 4; | $testRechteck->Länge = 5; | ||
echo $testRechteck->Fläche(); // ergibt 20 | $testRechteck->Breite = 4; | ||
echo $testRechteck->Fläche(); // ergibt 20 | |||
<?php | <?php | ||
class KlassenName { | class KlassenName { | ||
Zeile 26: | Zeile 29: | ||
?> | ?> | ||
Vererbung: | Vererbung: | ||
class Quader extends Rechteck { | class Quader extends Rechteck { | ||
var Höhe; | var Höhe; | ||
function Volumen () { | function Volumen () { | ||
return $this->Höhe*Fläche(); | return $this->Höhe*Fläche(); | ||
} // end function Volumen | } // end function Volumen | ||
} // end class Quader | } // end class Quader | ||
</pre> | |||
Alle Funktionen und Werte werden vererbt und stehen zur Verfügung | |||
$testQuader = new Quader; | |||
$testQuader->Länge = 7; | <pre> | ||
$testQuader->Breite = 3; | $testQuader = new Quader; | ||
$testQuader->Höhe = 5; | $testQuader->Länge = 7; | ||
echo $testQuader->Volumen(); // ergibt 105 | $testQuader->Breite = 3; | ||
$testQuader->Höhe = 5; | |||
echo $testQuader->Volumen(); // ergibt 105 | |||
</pre> | |||
= Konstruktor = | |||
Funktion, welche beim Erstellen aufgerufen wird. Kann aber auch ganz normal aufgerufen werden. Name entspricht Klasse. Wird nach der Variablendefinition definiert, damit man diese Variablen | |||
auch gleich initialisieren kann. Will man in einer vererbten Klasse auch noch den Konstruktor der Oberklasse aufrufen, so geht dies mit $this->Oberkonstruktor(). Wird nicht aut. gemacht, da meist nicht nötig. | |||
class test { | <pre> | ||
var $miau; | class test { | ||
var $miau; | |||
function test() { | |||
$this->miau = true; | function test() { | ||
} // end function test | $this->miau = true; | ||
} // end class test | } // end function test | ||
} // end class test | |||
</pre> | |||
var $x_ok; | |||
var $y_ok; | Will man gleich Werte von ausserhalb übernehmen und testen im Konstruktor...\ | ||
function test ($x = "", $y = "") { | <pre> | ||
$this->testVar($x); | var $x_ok; | ||
$this->testVar($y); | var $y_ok; | ||
} // end function test | |||
function test ($x = "", $y = "") { | |||
function testVar($testvariable) { | $this->testVar($x); | ||
if ($testvariable == "muh") { $this->x_ok = $testvariable } | $this->testVar($y); | ||
} // end function testVar | } // end function test | ||
function testVar($testvariable) { | |||
if ($testvariable == "muh") { $this->x_ok = $testvariable } | |||
$x_ok = $this->testVar($x); | } // end function testVar | ||
</pre> | |||
function testVar($testvariable) { | |||
if ($testvariable == "muh") { | Falls die Methode mehrere unterschiedliche Variablen prüft, muss man halt mit einem Rückgabewert arbeiten und nicht direkt setzen. | ||
return $testvariable | |||
} | <pre> | ||
else { | $x_ok = $this->testVar($x); | ||
return ""; | |||
} | function testVar($testvariable) { | ||
} // end function testVar | if ($testvariable == "muh") { | ||
return $testvariable | |||
} | |||
else { | |||
$objekt = new Objekt("muh", "miau"); | return ""; | ||
$objekt2 = new Objekt("muh"); // Da die Parameter mit = "" drin sind, wird der zusätzliche Wert standardmässig gesetzt. | } | ||
} // end function testVar | |||
</pre> | |||
Mit Werten wird das Objekt folgendermassen erzeugt: | |||
<pre> | |||
$objekt = new Objekt("muh", "miau"); | |||
$objekt2 = new Objekt("muh"); // Da die Parameter mit = "" drin sind, wird der zusätzliche Wert standardmässig gesetzt. | |||
</pre> | |||
= Objekte kopieren / referenzieren = | |||
Beim Zuweisen an ein neues Objekt $new = $old werden sämtliche Werte kopiert. Will man eine Referenz, so wird mit & zugewiesen: $new = &$old -> beide verweisen auf das gleiche Objekt. |
Aktuelle Version vom 29. Februar 2020, 01:16 Uhr
Definitionen
Objektdaten = Eigenschaften, Werte oder Properties (Objekteigenschaft) Objektmethoden = Funktionen
Klassen
Klassen werden vor der Verwendung erstellt und mit include eingebunden. Da in den Funktionen der Klasse nur lokale oder per Parameter übergebene Variablen bekannt sind, müssen auch klasseninterne Variablen mit $this->variable angesprochen werden.
Klasse -> Objekt: class Rechteck { var Länge; var Breite; function Fläche () { return $this->Länge * $this->Breite; } // end function Fläche } // end class Rechteck $testRechteck = new Rechteck; $testRechteck->Länge = 5; $testRechteck->Breite = 4; echo $testRechteck->Fläche(); // ergibt 20 <?php class KlassenName { // ... } // end KlassenName ?> Vererbung: class Quader extends Rechteck { var Höhe; function Volumen () { return $this->Höhe*Fläche(); } // end function Volumen } // end class Quader
Alle Funktionen und Werte werden vererbt und stehen zur Verfügung
$testQuader = new Quader; $testQuader->Länge = 7; $testQuader->Breite = 3; $testQuader->Höhe = 5; echo $testQuader->Volumen(); // ergibt 105
Konstruktor
Funktion, welche beim Erstellen aufgerufen wird. Kann aber auch ganz normal aufgerufen werden. Name entspricht Klasse. Wird nach der Variablendefinition definiert, damit man diese Variablen auch gleich initialisieren kann. Will man in einer vererbten Klasse auch noch den Konstruktor der Oberklasse aufrufen, so geht dies mit $this->Oberkonstruktor(). Wird nicht aut. gemacht, da meist nicht nötig.
class test { var $miau; function test() { $this->miau = true; } // end function test } // end class test
Will man gleich Werte von ausserhalb übernehmen und testen im Konstruktor...\
var $x_ok; var $y_ok; function test ($x = "", $y = "") { $this->testVar($x); $this->testVar($y); } // end function test function testVar($testvariable) { if ($testvariable == "muh") { $this->x_ok = $testvariable } } // end function testVar
Falls die Methode mehrere unterschiedliche Variablen prüft, muss man halt mit einem Rückgabewert arbeiten und nicht direkt setzen.
$x_ok = $this->testVar($x); function testVar($testvariable) { if ($testvariable == "muh") { return $testvariable } else { return ""; } } // end function testVar
Mit Werten wird das Objekt folgendermassen erzeugt:
$objekt = new Objekt("muh", "miau"); $objekt2 = new Objekt("muh"); // Da die Parameter mit = "" drin sind, wird der zusätzliche Wert standardmässig gesetzt.
Objekte kopieren / referenzieren
Beim Zuweisen an ein neues Objekt $new = $old werden sämtliche Werte kopiert. Will man eine Referenz, so wird mit & zugewiesen: $new = &$old -> beide verweisen auf das gleiche Objekt.