Читать книгу Prinzipien des Softwaredesigns - John Ousterhout - Страница 22

Was ist eine Schnittstelle?

Оглавление

Die Schnittstelle eines Moduls enthält zwei Arten von Informationen: formale und informelle. Die formalen Teile einer Schnittstelle werden explizit im Code spezifiziert und und einige davon können von der Programmiersprache auf Korrektheit überprüft werden. So ist beispielsweise die formale Schnittstelle einer Methode deren Signatur, zu der die Namen und Typen der Parameter gehören, der Typ des Rückgabewerts und Informationen über Exceptions, die von der Methode geworfen werden. Die meisten Programmiersprachen stellen sicher, dass jeder Aufruf einer Methode die richtige Anzahl und den richtigen Typ von Argumenten bereitstellt, die zu ihrer Signatur passen. Die formale Schnittstelle einer Klasse besteht aus den Signaturen aller öffentlichen Methoden, dazu aus den Namen und Typen aller öffentlichen Variablen.

Jede Schnittstelle enthält auch informelle Elemente. Diese werden nicht so spezifiziert, dass sie von der Programmiersprache verstanden oder durch sie sichergestellt werden können. Zu den informellen Teilen einer Schnittstelle gehört ihr High-Level-Verhalten, etwa dass eine Funktion die Datei löscht, deren Name durch eines der Argumente angegeben wurde. Gibt es Einschränkungen bezüglich des Einsatzes einer Klasse (zum Beispiel muss eine Methode aufgerufen werden, bevor eine andere aufgerufen werden kann), sind diese ebenfalls Teil der Klassenschnittstelle. Ganz allgemein gilt: Muss man eine bestimmte Information kennen, um ein Modul nutzen zu können, ist diese Information Teil der Modulschnittstelle. Die informellen Aspekte einer Schnittstelle können nur durch Kommentare beschrieben werden, und die Programmiersprache kann nicht sicherstellen, dass die Beschreibung vollständig oder exakt ist.1 Bei den meisten Schnittstellen sind die informellen Aspekte größer und komplexer als die formellen Anteile.

Einer der Vorteile einer sauber spezifizierten Schnittstelle ist, dass sie genau angibt, was die Entwicklung wissen muss, um das entsprechende Modul nutzen zu können. Das hilft dabei, das im Abschnitt »Symptome der Komplexität« auf Seite 21 beschriebene Problem der »unbekannten Unbekannten« auszumerzen.

Prinzipien des Softwaredesigns

Подняться наверх