Objektorientierung

Die objektorientierte Programmierung (kurz: OOP) ist ein Ansatz, der die rein imperative Programmierung erweitert oder sogar ersetzt.

Zu Beginn der Programmierung wurden sämtliche Programmanweisungen in einem Hauptprogramm untergebracht, welches von vorne bis hinten durchlaufen wurde. Nachdem Rechenmaschinen zuvor fest verdrahtet waren, war dies eine Revolution, dass Programme in den Speicher hinein programmiert werden konnten und nicht mehr gesteckt oder verdrahtet werden mussten. In dieser Zeit kamen die ersten Compiler auf, die ein Programm aus einer Hochsprache in die Maschinensprache übersetzt haben. Nach einiger Zeit stellt man fest, dass Teile des Programmes immer wieder mit unterschiedlichen Eingabeparametern durchlaufen werden mussten. Man erkannte, dass man diese in Funktionen (auch Prozeduren, Methoden, Unterprogramm und anders genannt) ausgelagert werden können. Diese Erweiterung, wie sie auch die Sprache PHP umfasst, wurde in dem Kapitel über Funktionen und ihre Aufrufe besprochen.

Allerdings ging die Kapselung der Funktionalität noch nicht weit genug. Man stellte fest, dass bestimmter Programmcode mit bestimmten Daten im Einklang steht, das bedeutet dass zu einer Menge von Funktionen auch immer eine Menge an Daten gehören. Die Idee entwickelte sich, dass man Daten und Programmteile, die zueinander gehören, von dem übrigen Programm abkapselt und auslagert. Diese Auslagerung nannte man Klasse. Aus dieser Klasse heraus lässt sich zur Laufzeit des Programmes ein Objekt, eine Instanz der Klasse, ableiten. Die Klasse kann man sich hierbei als Schablone für das Objekt vorstellen. Dabei wird der Programmcode der Klasse übernommen und die darin definierten Variablen mit Werten belegt. Die objektorientierte Programmierung war auf diese Weise geboren.

Es ist möglich, aus einem noch etwas anderen Blickwinkel auf die objektorientierte Programmierung zu schauen. In der alltäglichen Welt ist es so, dass Menschen Aktionen mit Dingen oder Lebewesen eng verknüpfen. Irgendjemand führt eine Aktion aus; die Aktion wird an irgendetwas ausgeführt. Gleichzeitig sind Dinge oder Lebewesen in einem Zustand. Als Beispiel soll eine Mineralwasserflasche dienen: An der Flasche lassen sich die Aktionen ,,Öffnen“, ,,Schließen“, ,,Ausgießen“, ,,Befüllen“ ausüben. Gleichzeitig existiert ein Füllstand sowie einen Offen/Geschlossen-Status, von denen manche Aktionen abhängig sind. Beispielsweise lässt sich aus einer leeren oder einer geschlossene Flasche nichts ausgießen. Eine geöffnete Flasche kann man nicht nochmals öffnen. Ein ganz anderes ,,Objekt“, eine Person, hat als Eigenschaft neben vielen anderen beispielsweise einen Namen. Gleichzeitig kann sie ,,gehen“, ,,protokollieren“, ,,arbeiten“ und vieles mehr. Diese Sichtweise ist aus der realen Welt durch die objektorientierte Programmierung in die Softwarewelt übertragen worden. Programmierer mögen die Vorstellung, dass auf Objekten Aktionen ausgeführt werden, die deren Zustand und den Zustand anderer Objekte ändern. Diese Sichtweise ist kompatibel zu der realen Welt. Deshalb ist die objektorientierte Programmierung eine natürliche Programmierweise.

Auch PHP entwickelte sich nach und nach zur objektorientierten Sprache. Schon in PHP 4 gab es eine Objektorientierung. Seit PHP 5 haben die Entwickler der Sprache nachgelegt und sie zu einer voll objektorientierten Sprache ausgebaut. Ein Entwickler kann nun mit PHP alle diejenigen Features aufrufen, die von einer modernen objektorientierten Programmiersprache erwartet werden. PHP muss sich damit nicht mehr hinter anderen Programmiersprachen wie Java verstecken und Gerüchte, dass man mit PHP nicht gut objektorientiert programmieren kann, sollten eigentlich, da die Zeit von PHP 4 lange vorbei ist, langsam verblassen. Leider halten sich diese aber dennoch noch immer.

Der Einfachheit halber wird im Folgenden nicht mehr auf das veraltete PHP 4 vorgestellt. Alle Angaben in diesem Kapitel beziehen sich auf PHP 5 und höher.

Eine Klasse kann in PHP 5 und höheren Versionen wie folgt definiert werden:

Es handelt sich dabei um einerecht einfache Klasse, die den Namen Auto trägt, wie aus der Zeile class Auto zu entnehmen ist. Natürlich kann diese noch beliebig erweitert werden, indem zum Beispiel den Spritverbrauch Fahrzeug-spezifisch festgelegt wird. Dieses kleine Beispiel soll jedoch zunächst genügen.

Die folgenden, mit geschweiften Klammern { } eingeschlossenen, im Klassenrumpf definierten Variablen, wie hier $name und $tank stellen Klassenvariablen da. Diese Variablen können von überall innerhalb der Funktionen des Objektes mit $this->Variablename ausgelesen und gesetzt werden und gehören fest zu dem Objekt. Unterschiedliche Objekte haben unterschiedliche Variablenplätze. In unserem Beispiel würde dies bedeuten, dass wenn ein Auto fährt, der Tank des anderen sich nicht leert oder das jedes Auto seinen eigenen Tank hat. Variablen können vorbelegt werden. In unserem Beispiel ist jedes neue Auto nach seiner Erzeugung mit 100 Einheiten betankt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert