OOP PHP5 - Unterschiede - Schnittstellen
1. Erklärung
Schnittstellen, die auch Interfaces genannt werden, sind eine elegante Möglichkeit festzulegen, über welche Methoden eine Klasse verfügen muss. Dabei ist es diesen Interfaces völlig schnuppe, wie diese Methoden aussehen. Man gibt einfach etwas vor. Wenn es die Klasse nicht erfüllt, dann ist "hängen im Schacht", vulgo, es wird eine Fehlermeldung ausgegeben.
Kommen wir wieder zu "Dieter" und "Dörte" zurück. Also bevor sie sich mit einem Kerl verabredet, erwartet sie, dass der ein paar Dinge beherrscht. Gut, bei Frauen ist diese Liste meist recht lang, wir konzentrieren uns aber nur auf zwei. Er sollte erstens zumindest die elementaren Grundregeln des guten Benehmens beherrschen und zweitens ihr Blumen mitbringen.
2. Das Interface
Eine Schnittstelle wird, wie unten zu sehen, mit dem Schlüsselwort interface
definiert. Darin legt man die Methoden fest,
über die eine Klasse verfügen muss, um die Schnittstelle zu nutzen.
interface Traummann
{
public function zeigBenehmen($tuer_aufhalt, $dame_zuerst);
public function blumenMitbring($blumen);
}
3. Die Einbindung in eine Klasse
Dies geschieht mit der Anweisung implements
. Damit wird die entsprechende Schnittstelle in die Klasse eingebunden.
class Mann implements Traummann
{
public function zeigBenehmen($tuer_aufhalt, $dame_zuerst)
{
...
}
public function blumenMitbring($blumen)
{
...
}
private function seiWieDuBist($arschkratz, $ruelps)
{
...
}
}
4. Der Sinn
Nehmen wir mal an, dass die Klasse "Mann" von eben einem solchen programmiert worden ist. In diesem Fall handelt es sich um einen
richtigen Chauvinisten, der Frauen als "Mann 0.1 Beta" einstuft. Woher soll der nun wissen, dass bestimmte Methoden erwartet
werden, um sich mit einem Objekt der Klasse "Frau" zu verabreden. Nun, das erklärt ihm dann eine Frau, die die Schnittstelle
Traummann
entwickelt und sagt: "Die musst du nutzen, sonst geht gar nichts". So kann man sich in etwa die Funktionsweise
von Interfaces vorstellen.
5. Einbindung von mehreren Interfaces
Jetzt könnte unser oben beschriebener Neandertaler auch einen Kollegen haben, der ihm weitere Informationen liefern kann, damit sich Dörte mit Dieter verabredet. Zum Beispiel die Grundbegriffe der Hygiene:
interface Hygiene
{
public function rasieren($rasierer);
public function duschen($duschgel);
public function deoBenutzen($deo);
}
Um nun mehrere Interfaces zu nutzen, reiht man sie einfach hintereinander, durch ein Komma getrennt:
class Mann implements Traummann, Hygiene
{
...
}
6. Hinweise
Methoden
Alle Methoden, die in Interfaces eingebaut sind, müssen vom Typ public
sein! Das gilt auch für selbige in den entsprechenden
Klassen. Ansonsten gibt es eine Fehlermeldung. Wichtig ist auch, dass der Name der Methode identisch ist.
Parameter der Methoden
Wenn man in einem Interface eine Methode definiert, so muss in der Klasse mindestens die Anzahl der Parameter übereinstimmen. Die Benamung der Variablen selber kann abweichen.
Eigenschaften
Natürlich würde sich "Dörte" wünschen, dass "Dieter" auch noch sehr attraktiv ist. Das ist aber leider eine Eigenschaft, keine Methode und kann somit in Schnittstellen nicht vorgegeben werden.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt