Hauptmenü

Untermenü

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 TraummannHygiene
{
  ...
}

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