Home
Navigation
Impressum
Coder Welten - Programmierung und Optimierung
Coder Welten
 
 

 

 

OOP: Von Funktionen, Methoden, Objekten und Klassen

Objektorientierte Programmierung mit PHP

Übersicht / Seite:

  1. Einführung (in die objektorientierte Programmierung)
  2. Sichtbarkeit (und Kapselung von Eigenschaften und Methoden)
  3. Vererbung (von Eigenschaften und Methoden sowie Autoload von Klassen)
  4. Konstruktoren und Destruktoren (Methoden zum Erzeugen und Auflösen)
  5. Beispiele (eine simple Parserklasse, eine TCP/IP Socket Klasse und mehr ...)

Objekte im realen Leben

Objekte begegnen uns auf Schritt und Tritt im täglichen Leben, wobei besondere Objekte für den einzelnen zum Objekt der Begierde werden können. Einige Objekte nehmen wir bewusst wahr, einige unbewusst, andere übersehen wir gelegentlich. Doch was ist eigentlich ein Objekt?
Praktisch jeder Gegenstand und ebenso jede Sachlage, die eine objektive Betrachtung nicht ausschließt. Mit einem beliebigen Objekt sind Eigenschaften verbunden, die nur dieses Objekt besitzt, insofern es nicht in Serie gefertigt oder geklont wurde. Wobei die Serienfertigung noch kein Garant dafür ist, dass ein Objekt zu 100 Prozent die gleichen Eigenschaften besitzt, wie ein anderes Objekt aus derselben Produktreihe.
Oder einfacher, bei allem, was sich mit einem Objektiv einfangen lässt, handelt es sich um ein Objekt oder um die Eigenschaften eines Objektes. Bei einem freund­lichen Lächeln handelt es sich um eine vorübergehende, mit dem Wesen verknüpfte Eigenschaft des Objektes Mensch, bei einer spiegelnden Oberfläche um die Eigen­schaften der Oberfläche eines Objektes. Bei einer Sache oder Sachlage sind die Eigenschaften mitunter nicht so deutlich oder nur verzerrt wahrnehmbar, dennoch vorhanden.
Doch was haben nun Objekte aus dem realen Leben mit der objektorientierten Programmierung gemein?

Objekte in der Programmierung

Wie in der realen Welt, so lassen sich beim Programmieren ebenfalls Objekte über ihre Eigenschaften und Attribute definieren, mit dem Unterschied, dass diese Objekte nicht unbedingt einen Bezug zur realen Welt besitzen müssen. So kann zum Beispiel der Zugriff auf eine Datenbank im prozeduralen Stil wie im objekt­orientierten Stil erfolgen, wobei sich bei einfachen Anwendungen nicht immer die Vorteile der objekt­orientierten Programmierung zu erkennen geben.

Bei der Definition einer Klasse wird zuerst das Schlüsselwort class, gefolgt von einem Bezeichner für die Klasse, notiert. Für den zu wählenden Namen der Klasse gelten die allgemeinen Regeln für Bezeichner, wobei Bezeichner mit einem Unter­strich oder einem Buchstaben beginnen müssen, gefolgt von Ziffern, Buchstaben oder Unterstrichen.
Bezeichner für Klassen sollten ein Substantiv enthalten und in der "CamelCase" Schreibweise notiert werden, also mit einem Großbuchstaben beginnen. Bei einem zusammengesetzten Substantiv sollte jedes Einzelwort mit einem Großbuchstaben (z.B. wie bei BaumStamm) beginnen. Doch ist diese Schreibweise freiwillig und nicht zwingend.
Innerhalb von geschweiften Klammern folgt dann die eigentliche Definition der zur Klasse gehörenden Eigenschaften und Methoden, wobei es sich bei den Methoden um Funktionen handelt, die jedoch in der objektorientierten Programmierung im Zusammenhang mit Klassen und Objekte als Methoden bezeichnet werden. Methoden sollten in der "camelCase" Schreibweise notiert werden und auf die Funk­tio­nalität der Methode schließen lassen, wie z.B. bei "berechneUmfang". Auch diese Schreibweise ist freiwillig und nicht zwingend vorgeschrieben.
Um unerklärliche Fehler zu vermeiden, muss hingegen zwingend beachtet werden, dass PHP die Bezeichner von Klassen und Methoden "case insensitive" auswertet, also nicht zwischen Groß- und Kleinschreibung unterscheidet und wenn die Bezeichner von Klassen und Methoden sich nur in Groß- und Kleinschreibung unterscheiden, Verwechslungen vorprogrammiert sind. Mehr zum Thema Bezeichner unter: Schreibweise von Bezeichnern

Eine Klasse kann eine oder mehre Eigenschaften, Methoden und Konstanten ent­halten, doch ebenso nur Eigenschaften oder nur Methoden. Nachfolgend ein Beispiel von einer einfachen Klasse, die nur Eigenschaften enthält.

Eine einfache Klasse, die noch über keine Methoden verfügt (klasse-01.php):

<?php

/*-- Erstellung und Definition der Klasse Mensch --------*/

class Mensch {

    public  $teilordg = "Altweltaffen";
    public  $ueberfam = "Menschenartigen";
    public  $familie  = "Menschenaffen";
    public  $tribus   = "Hominini";
    public  $gattung  = "Homo";
    public  $spezies  = "Mensch";	
}


/*-- Erzeugen und Instanziieren eines Objektes ----------*/

$ausgabe = new Mensch();


/*-- Zugriff auf die Eigenschaften und Ausgabe ----------*/

echo  "Der ".$ausgabe->spezies." gehört zur Familie der ".
      $ausgabe->familie.".\n";
?>

Um ein Objekt der Klasse Mensch oder einer anderen Klasse zu erzeugen, muss das Schlüsselwort new verwendet werden. Die Erzeugung eines Objektes wird als instanziieren bezeichnet, da, wie im Beispiel, das Objekt Mensch einer Instanz der Klasse Mensch entspricht. Bei der Weiterverarbeitung oder Ausgabe kann dann mit dem Pfeiloperator -> auf die öffentlichen Eigenschaften und Methoden zugegriffen werden.

Im nächsten Beispiel wird der Klasse Mensch ein wenig Funktionalität durch die Methode getArt() hinzugefügt. Um innerhalb einer Methode auf die Eigenschaften, auf vorhandene Konstanten oder auf weitere Methoden einer Klasse zuzugreifen, kann $this benutzt werden, zumindest insofern es sich um keinen Zugriff auf statische Eigenschaften oder Methoden handelt. Es sei angemerkt, bei $this handelt es sich in PHP nicht um ein Schlüsselwort wie in JavaScript, sondern um eine Pseudo-Variable, die eine Referenz auf das aktuelle Objekt enthält.

Die Klasse Mensch mit einer einfachen Methode (klasse-02.php):

<?php

/*-- Die Klasse Mensch mit der Methode getArt -----------*/

class Mensch {

    private  $teilordg = "Altweltaffen";
    private  $ueberfam = "Menschenartigen";
    private  $familie  = "Menschenaffen";
    private  $tribus   = "Hominini";
    private  $gattung  = "Homo";
    private  $spezies  = "Mensch";	
    
    public function getArt() {

        $art = "Der ".$this->spezies." gehört zur Familie ".
               "der ".$this->familie.".\n";

        return $art;
    }
}


/*-- Erzeugen und Instanziieren eines Objektes ----------*/

$ausgabe = new Mensch();


/*-- Zugriff auf die Methode getArt und Ausgabe ---------*/

echo htmlspecialchars($ausgabe->getArt());

?>

Beide Code-Listings bewirken folgende Ausgabe:

Der Mensch gehört zur Familie der Menschenaffen.

Mehr zum Thema objektorientierte Programmierung mit PHP auf den nachfolgenden Seiten.

weiterlesen » Sichtbarkeit | Beispiele

 

Copyright © Verlag Horst Müller - Stendal - 2006 - Impressum - Datenschutz - Nutzungsbedingungen