PHP per OOP: Was ist ein Objekt in PHP?
Objekte sind der Schlüssel zum Verständnis der objektorientierten Programmierung in PHP. Aber was ist ein Objekt in PHP eigentlich? Fangen wir zunächst mit einem einfach Beispiel an. Schau dich einmal um, und du wirst jede Menge Beispiele für Objekte in der realen Welt finden: deinen Schreibtisch, deinen Fernseher, dein Fahrrad, deinen Hund, usw.
PHP Programmierer buchen!
Die Objekte der realen Welt haben allesamt zwei Eigenschaften gemeinsam: Sie haben alle einen Zustand und sie legen alle bestimmte Verhaltensweisen an den Tag. Hunde haben einen Zustand (z. B. Name, Farbe, Rasse, hungrig) und ein Verhalten (z. B. Bellen, Apportieren, Schwanzwedeln). Auch Fahrräder haben einen Zustand (z. B. aktuell eingelegter Gang, aktuelle Trittfrequenz, aktuelle Geschwindigkeit) und ein Verhalten (z. B. Gangwechsel, Änderung der Trittfrequenz, Bremsen). Zustände und Verhaltensweisen von Objekten aus der realen Welt zu betrachten, ist eine gute Möglichkeit, um in die objektorientierte Programmierung einzusteigen.
Nimm dir jetzt eine Minute Zeit, um die realen Objekte in deiner unmittelbaren Umgebung zu beobachten. Stelle dir für jedes Objekt, das du siehst, die folgenden zwei Fragen: „Welche möglichen Zustände kann dieses Objekt annehmen?“ und „Welches mögliche Verhalten kann dieses Objekt an den Tag legen?“. Schreibe deine Beobachtungen auf. Dabei wirst du schnell feststellen, dass Objekte in der realen Welt unterschiedlich komplex sind. Deine Schreibtischlampe hat vielleicht nur zwei mögliche Zustände (an und aus) und zwei mögliche Verhaltensweisen (einschalten, ausschalten), dein Radio hingegen hat vermutlich viele weitere Zustände (an, aus, aktuelle Lautstärke, aktueller Sender usw.) und Verhaltensweisen (einschalten, ausschalten, Lautstärke erhöhen, Lautstärke verringern, Sender suchen usw.). Du wirst auch feststellen, dass einige Objekte wiederum andere Objekte enthalten. Diese Beobachtungen aus der realen Welt lassen sich auf die Welt der objektorientierten Programmierung übertragen.
Software-Objekte ähneln konzeptionell den Objekten der realen Welt: Auch sie haben einen Zustand und ein damit verbundenes Verhalten. Ein Objekt speichert seinen Zustand in Variablen (man nennt diese in einigen Programmiersprachen auch „Felder“) und offenbart sein Verhalten durch Methoden (bzw. Funktionen). Methoden bearbeiten den internen Zustand eines Objekts und dienen als primärer Mechanismus für die Kommunikation von Objekt zu Objekt. Das Verstecken des internen Zustands und das Erfordernis, alle Interaktionen über die Methoden eines Objekts abzuwickeln, wird als Datenkapselung bezeichnet – ein Grundprinzip der objektorientierten Programmierung.
Durch die Zuweisung eines Zustands (aktuelle Geschwindigkeit, aktuelle Trittfrequenz und aktueller Gang) und die Bereitstellung von Methoden zur Änderung dieses Zustands behält das Objekt die Kontrolle darüber, wie die Außenwelt es nutzen darf. Wenn das Fahrrad zum Beispiel nur 6 Gänge hat, könnte eine Methode zum Wechseln der Gänge jeden Wert ablehnen, der kleiner als 1 oder größer als 6 ist.
Die Bündelung von Code in einzelnen Softwareobjekten bringt eine Reihe von Vorteilen mit sich, unter anderem:
PHP muss nicht nicht zwingend als objektorientierte Programmiersprache verwendet werden, da die meisten PHP-Funktionen nicht objektorientiert sind. Wie wir gesehen haben, bringt die objektorientierte Programmierung jedoch zahlreiche Vorteile mit sich.
In der objektorientierten Programmierung werden Objekte stets aus Klassen erstellt. Eine Klasse ist sozusagen die Definition eines Objekts, das einzelne Objekt ist eine Instanz einer Klasse, was bedeutet, dass man aus einer Klasse viele Objekte erstellen kann.
Lass uns also zunächst eine Klasse definieren, zum Beispiel die Klasse „Schüler“:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<!DOCTYPE html> <html> <body> <?php class Schüler { // Konstruktor public function __construct($vorname, $nachname) { $this->Vorname = $Vorname; $this->Nachname = $Nachname; } public function namen_sagen() { echo "Mein Name ist " . $this->Vorname . " " . $this->Nachname . ".\n"; } } ?> </body> </html> |
Beachte, dass die Klasse „Schüler“ über eine Konstruktorfunktion verfügt, die bei der Erstellung des Objekts ausgeführt wird. Der Konstruktor erhält Argumente, die bei der Konstruktion des Objekts angegeben werden.
Nun erstellen wir mit dem Schlüsselbegriff new ein neues Objekt aus unserer Schüler-Klasse:
$Alex = new Schüler(„Alex“, „Müller“);
Nachdem wir das Objekt in der Variablen $Alex konstruiert haben, können wir nun die Methoden des Objekts verwenden:
$Alex->namen_sagen();
Wir haben eine Objektmethode namen_sagen implementiert, die den Namen des Schülers ausgibt. Beachte, dass die Funktion namen_sagen keine Argumente erhält, sie hat jedoch Zugriff auf den Vor- und Nachnamen des Schülers, da diese zuvor im Konstruktor definiert wurden.
Überblick über die wichtigsten Definitionen im Zusammenhang mit Objekten:
Das wohl wichtigste Konzept in Bezug auf Objekte ist die Vererbung. Diese Funktion ermöglicht es uns, einmal geschriebenen Code wiederzuverwenden und ihn zu erweitern. Von Vererbung spricht man, wenn in der objektorientierten Programmierung eine Klasse von einer anderen Klasse abgeleitet wird. Die abgeleitete Klasse ist die Unterklasse, und die Klasse, von der sie abgeleitet wurde, ist die Oberklasse. (Manchmal werden sie auch Kind- und Elternklasse genannt). Anders ausgedrückt: Die untergeordnete Klasse erweitert die übergeordnete Klasse.
Wenn du zum Beispiel eine Oberklasse „Tiere“ hast, die die Eigenschaften und Methoden aller Tiere definiert, könntest du die Unterklassen „Hund“ und „Katze“ definieren. Objekte, die aus diesen Unterklassen erstellt werden, enthalten jeweils alle Eigenschaften der Tier-Klasse sowie ggf. zusätzliche hunde- bzw. katzenspezifische Eigenschaften und Methoden.