Schnittstelle

Klippstein IT Service

Aus 4webmaster.de

Wechseln zu: Navigation, Suche

Eine Schnittstelle ist das nach außen Sichtbare einer Komponente. Oft wird für ähnliche Klassen eine gemeinsame Schnittstelle angelegt. Dazu gibt es in Java zwei Möglichkeiten:

Abstrakte Klasse: Die ähnlichen Klassen erben Methoden von einer abstrakten Klasse
Interface: Die ähnlichen Klassen implementieren das gleiche interface



Abstrakte Klasse

Eine abstrakte Klasse dient nur zur Vererbung ihres Inhaltes. Sie kann keine eigenen Instanzen haben. So wird sie deklariert:

abstract class MeineSchnittstelle {
 
  // diese Methode ist direkt für alle Instanzen der Subklassen einsatzfähig
  public void nutzeMichSofort() {
    ..
    .. 
  }
 
  // diese Methode ist abstrakt, d.h. sie ist nicht implementiert,
  // sondern existiert nur als Methodenkopf.
  // Abstrakte Methoden *müssen* von allen Subklassen implementiert werden.
  public abstract void implementiereMichErst();
 
}

Da in Java eine Klasse nur von einer einzigen Superklasse erben kann, ist die Nutzbarbeit abstrakter Klassen recht beschränkt. Aber so wird sie eingesetzt:

class MeineKlasse extends MeineSchnittstelle {
 
  // Implementierung der geforderten Methode
  public void implementiereMichErst() {
    ..
    ..        
 }
 
}



Interface

Ein Interface erzwingt die Implementierung bestimmter Methoden in einer Klasse. Interfaces haben natürlich auch keine Instanzen. Beispiel einer Schnittstellendeklaration:

interface IMeineSchnittstelle {
 
  // Alle hier deklarierten Methoden sind public und abstract, 
  // daher können die Schlüsselwörter weggelassen werden. 
  void implementiereMichErst();
 
}


class MeineKlasse extends WhatEver implements IMeineSchnittstelle {
 
  // Implementierung der geforderten Methode
  public void implementiereMichErst() {
    ..
    ..        
 }
 
}



Verwendung von Schnittstellen

Schlecht: Auf eine Implementierung programmieren:

Pferd ferdi = new Pferd();
ferdi.reiten();

Besser: Auf eine Schnittstelle programmieren:

Tier tirtir = new Pferd();
tirtir.fortbewegen();

Noch besser: Das Factory-Muster zur Objekterzeugung nutzen:

tirtir = getTier();
tirtir.fortbewegen();




Darstellung von Schnittstellen in UML

Abstrakte Klassen und Interfaces werden in UML wie Klassen dargestellt, nur sind die Namen kursiv. Abstrakte Methoden werden ebenfalls kursiv dargestellt. Interfaces werden zusätzlich mit dem Stereotyp «Interface» gekennzeichnet, außerdem werden die Generalisierungspfeile unterbrochen dargestellt.

Mit dem hier verwendeten Tool (Graphviz) ist eine genau standardkonforme Darstellung nicht möglich. Das folgende Diagramm zeigt die wesentlichen Merkmale der UML-Darstellung:


Abstrakte Klasse
Abstrakte Klasse

Interface
Interface