Software-Engineering

Interface

 aufwärts

Ein Interface (Schnitt­stelle) definiert einen abstrakten Datentyp, indem es die Methoden angibt, die auf diesen Datentyp anwendbar sind. Die Methoden sind jedoch im Interface noch nicht implementiert. Sie werden erst in einer Klasse implementiert, die von diesem Interface abgeleitet ist, oder wie man sagt, die dieses Interface implementiert.

Unter­schiedliche Klassen, die das Interface implementieren, können diese Methoden durchaus unter­schiedlich implementieren. Wichtig ist nur, dass die vom Interface vor­geschriebenen Methoden überhaupt implementiert sind. So ist sicher­gestellt, dass diese Methoden auf jedes Objekt, das den Datentyp des Interfaces besitzt, angewendet werden können.

Beispiel:  Das Interface Sorter schreibt vor, dass jede Klasse, die dieses Interface implementiert, eine Methode sort(int[] a) enthalten muss, also in der Lage sein muss, ein Integer-Array zu sortieren.

public interface Sorter
{
    public void sort(int[] a);
}

Im Interface ist nur der Methodenkopf angegeben. Die Implementierung der Methode erfolgt erst in einer Klasse, die das Interface Sorter implementiert, wie etwa die folgende Klasse InsertionSorter. Dort ist die Methode sort mit der Annotation @Override gekenn­zeichnet.

public class InsertionSorter implements Sorter
{
    private int[] a;
    private int n;

    @Override
    public void sort(int[] a)
    {
        this.a=a;
        n=a.length;
        insertionsort();
    }

    private void insertionsort()
    {
        // Insertionsort-Algorithmus
    }
}

In ent­sprechender Weise lassen sich auch QuickSorter, MergeSorter usw. vom Interface Sorter ableiten.

Der Vorteil einer solchen Lösung mit einem Interface besteht darin, dass alle Sortier­algorithmen, die das Interface Sorter implementieren, als Objekte dieses gemeinsamen Typs ansprechbar sind. Nur so ist es möglich, etwa eine einheitliche Funktion zum Test von Sortier­verfahren zu schreiben.

public void testSorter(Sorter s)
{
    int[] a=descendingSequence();
    s.sort(a);
    checkIfSorted(a);
}

Die Methode testSorter funktioniert so mit jedem Sortier­verfahren s vom Typ Sorter, da sicher­gestellt ist, dass auf s die Methode sort anwendbar ist.

 

Weiter:   [Typ-Parameter]   oder   up

 

homeH.W. Lang   Hochschule Flensburg   lang@hs-flensburg.de   Impressum   ©   Created: 27.02.2012   Updated: 04.11.2016
Valid HTML 4.01 Transitional