Schnittstelle
Eine Schnittstelle (Interface) ist ein Teil eines Systems, das dem Austausch von Informationen, Energie oder Materie mit anderen Systemen dient. Eine Schnittstelle wird durch eine Menge von Regeln beschrieben, der Schnittstellenbeschreibung.Die Implementierung dieser Regeln in ein System ermöglicht diesem den Austausch mit allen Systemen, die diese Schnittstelle zur Verfügung stellen. Bei asymmetrischem Austausch können sich die Schnittstellenbeschreibungen der beteiligten Systeme voneinander unterscheiden, müssen aber untereinander kompatibel sein, also zueinander passen (z. B. Stecker und Buchse).
Beispiele für Schnittstellen sind API, MIDI und RS-232. Computer-Benutzeroberflächen wie die GUI werden auch als Mensch-Maschine-Schnittstelle bezeichnet.
Schnittstellen dienen in der Programmierung oft zur Beschreibung der von einem Programm oder einer Bibliothek (.dll unter Windows, .so unter Unix) angebotenen Funktionen oder Methoden. Man spricht in diesem Zusammenhang auch von Application Programming Interface (API) oder Framework (Rahmenwerk).
Über diese Schnittstellenbeschreibung ist es anderen Anwendungen möglich, auf Funktionalitäten eines anderen Programms oder eines Betriebssystems zugreifen zu können, ohne dessen Implementierung kennen zu müssen. Es müssen nur die Vor- und Nachbedingungen bekannt sein (Übergabeparameter- und typ, Rückgabewert- und typ, mögliche Ausnahmen, etc.).
In der objektorientierten Programmierung (OOP) vereinbaren Schnittstellen gemeinsame Signaturen von Klassen. Das heißt, eine Schnittstelle (engl. interface) vereinbart die Signatur einer Klasse, die diese Schnittstelle implementiert.
Existiert beispielsweise eine Schnittstelle Konto (am besten mit IKonto bezeichnet, damit die Schnittstelle über den Namen identifiziert werden kann), müssen alle Klassen die dieses Interface implementieren, auch die Methoden bereitstellen, die das interface definiert hat. Existieren beispielsweise die Klassen SparKonto, GiroKonto und DepotKonto, und definiert das Interface Konto die Methode getKontostand, so müssen alle Klassen diese Methode bereitstellen.
Später kann man dann durch Zugriff über diese Schnittstelle sicherstellen bzw. garantieren, dass die Methode existiert. Neben der Implementation in Klassen, kann eine Schnittstelle auch in abstrakte Klassen implementiert werden (somit besitzen alle Unterklassen der abstrakten Klasse die durch das Interface definierten Methoden). Weiterhin kann ein Interface ein anderes beerben. Das entstehende Interface enthält die Signaturen des beerbten Interfaces und kann weitere definieren.
Werden in eine Klasse mehrere Interfaces implementiert und besitzen diese Methoden-Signaturen gleichen Namens und mit der gleichen Signatur (Parametertyp und Rückgabetyp), so muss der Zugriff und die Implementierung in einer Klasse mit einem qualifizierten Namen erfolgen, d. h. durch Voranstellen das Package-Namens (Java) oder des Namespace (.NET). Ein Beispiel in Java:
Hinweis: Unter Java ist es weiterhin möglich, Konstanten innerhalb einer Interface-Definition zu deklarieren. Alle implementierenden Klassen stehen dann diese Konstanten zur Verfügung. Da Java, und auch Sprachen wie C#, keine Mehrfachvererbung unterstützt, werden Interfaces oft auch als Brücke benutzt, um eine 'virtuelle' Mehrfachvererbung zu implementieren, bei der eine Klasse bzw. deren Instanz über verschiedene Schnittstellen/Signaturen ansprechbar ist.
Schnittstellen in der Programmierung
public interface IKonto
{
int getKontostand(); // abstrakte Signatur-Definition
}
public class SparKonto implements IKonto
{
protected int kontoStand;
// Implementierung der durch IKonto definierten Methode
public int getKontostand()
{
return kontoStand;
}
...
}
Siehe auch
ASPI, Benutzerschnittstelle, GUI, Parallele Schnittstelle, Serielle Schnittstelle