Anders als in der prozeduralen Programmierung werden bei der objektorientierten Programmierung (OOP) Daten und die dazugehrigen Funktionen zusammengefasst. Bei der OOP spricht man dann on Eigenschaften und Methoden, die gemeinsam ein Objekt bilden. Die Objekte werden abstrakt definiert. Es wird also eine Art Prototyp für ein Objekt angelegt, dass Klasse genannt wird. KLASSE Fahrzeug -------------------------------- | EIGENSCHAFT Geschwindigkeit | -------------------------------- | | | METHODE beschleunigen() | | | | | | | | | | | -------------------------------- Der Code sieht das dann so aus: class Fahrzeug { var $geschwindigkeit; function beschleunigen() { ... } } Um diese Klasse verwenden zu können muss eine Kopie der abstrakten Klassendefinition - in der OOP Terminologie eine Instanz - gebildet werden, die dann mit konkreten Daten belegt wird. KLASSE Fahrzeug INSTANZ meinAuto -------------------------------- -------------------------------- | EIGENSCHAFT geschwindigkeit | | EIGENSCHAFT 50 Km/h | -------------------------------- -------------------------------- | | | | | METHODE beschleunigen() | | METHODE beschleunigen() | | | ==>> | | | | | | | | | | | | | | | | | | -------------------------------- --------------------------------Es können beliebig viele Insatnzen einer Klasse gebildet werden. Die Klasse bleibt davon unberührt. Um die Instanzen unterscheiden und mit ihnen arbeiten zu können werden Sie durch einen Handler (Variable) repräsaentiert. Im Programm sieht das dann so aus: $meinAuto = new Fahrzeug(); Über diesen Handler können nun die Eigenschaften der Instanz gelesen und belegt, sowie deren methoden aufgerufen werden. $meinAuto->beschleunigen(); echo $meinAuto.geschwindigkeit; Innerhalb eines Objektes greifen die Methoden mit "this->" auf die Klassen-Variablen und -Methoden zu. class Fahrzeug { var $geschwindigkeit; function beschleunigen() { $this->geschwindigkeit++; ... } function ueberholen() { $this->beschleunigen(); ... } } Vererbung Es ist möglich eine Klassenhierarchie aufzubauen, d.h. das eine Klasse (Laster) eine bereits bestehende (Fahrzeug) erweitert. Die Klasse Laster erbt dann alle Eigenschaften und Methoden der Eltern-Klasse (Parent-Klasse). Die Methoden der Paraentklasse können auch überschrieben werden.class Laster extends Fahrzeug{ var $ladegewicht; function anfahren() { partent::beschleunigen(); ... } } Kapselung Eigenschaften und Methoden von Klassen können versteckt werden. Dafür gibt es drei Schlüsselwörter:
class Laster extends Fahrzeug { public $ladegewicht; public function anfahren() { partent::beschleunigen(); ... } } Statische Methoden oder Attribute sind an die Klasse, nicht an die Instanz der Klasse gebunden. Diese dürfen nicht mit $this-> aufgeruden werden sondern nur über Classenname::Methode() class Mitarbeiter { public static $mitarbeiterid = 0; public $id; public Vorname; public nachname; public function _construc() { $this->id = $mitarbeiterid++; ... } } Sondermethoden
|