Software Enginering

Interface

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 entsprechender 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]

 


H.W. Lang   mail@hwlang.de   Impressum   Datenschutz
Created: 27.02.2012   Updated: 18.02.2023
Diese Webseiten sind während meiner Lehrtätigkeit an der Hochschule Flensburg entstanden