Fachkonzept - Schnittstelle
Schnittstelle einer Funktion
Die Schnittstelle einer Funktion legt sämtliche Informationen fest, die man kennen muss, um die Funktion benutzen zu können.
Man kann diese Informationen natürlich der Funktionsdefinition entnehmen. Oft will man aber nicht alle Details der Funktionsdefinition genau analysieren, um die erforderlichen Informationen zu gewinnen, sondern die Funktion direkt nutzen. Es reicht dann, Antworten auf die folgenden Fragen zu haben:
- Welchen Namen hat die Funktion?
- Wie viele Parameter gibt es?
- Welche Werte darf man für sie einsetzen?
- In welcher Reihenfolge treten sie auf?
- Wofür stehen sie?
- Welche Werte werden als Rückgaben erzeugt?
- Wie verhält sich die Funktion?
Antworten auf diese Fragen liefern die Signatur der Funktion und eine Verhaltensbeschreibung.
Signatur einer Funktion
Die Signatur einer Funktion legt den Namen der Funktion fest sowie die Anzahl, Reihenfolge und Typen ihrer Parameter. Bei Funktionen mit Rückgaben wird zusätzlich der Typ des Rückgabewerts festgelegt.
Als Beispiel betrachten wir
die Funktion anzahlTageImMonat
mit folgender Funktionsdefinition:
def anzahlTageImMonat(monat, jahr):
if monat in [1, 3, 5, 7, 8, 10, 12]:
anzahl = 31
elif monat in [4, 6, 9, 11]:
anzahl = 30
elif schaltjahr(jahr):
anzahl = 29
else:
anzahl = 28
return anzahl
Die Signatur wird im wesentlichen durch den Funktionskopf beschrieben. Zu einer vollständigen Signatur fehlen noch Angaben über die Datentypen, die bei der Aktualisierung der Parameter zu beachten sind und der Datentyp, der beim zurückgegebenen Funktionswert zu erwarten ist. Wie ergänzen diese Angaben oft mit einem sogenannten Documentation String (als eine Art Kommentar) direkt unter dem Funktionskopf.
def anzahlTageImMonat(monat, jahr):
# monat: natürliche Zahl aus dem Bereich 1..12
# jahr: natürliche Zahl
# return: natürliche Zahl aus dem Bereich 1..31
...
Verhalten einer Funktion
Neben diesen formalen Aspekten muss man natürlich auch wissen, was die Funktion leistet. Man kann das durch eine informelle Beschreibung wie die folgende klären.
Die Funktion anzahlTageImMonat(monat, jahr)
bestimmt für die übergebenen Werte für monat
und jahr
die Anzahl der Tage in diesem Monat im betreffenden Jahr.
Oft ist es günstig, das Verhalten einer Funktion anhand eines oder mehrerer Beispiele zu verdeutlichen, z.B. so:
>>> anzahlTageImMonat(2, 2012) 29
Auch diese Informationen lassen sich gut als Kommentar in eine Funktionsdefinition integrieren.
def anzahlTageImMonat(monat, jahr):
# monat: natürliche Zahl aus dem Bereich 1..12
# jahr: natürliche Zahl
# return: natürliche Zahl aus dem Bereich 1..31
# Beispiele:
"""
>>> anzahlTageImMonat(2, 2012)
29
>>> anzahlTageImMonat(3, 2012)
31
"""
...
In Kurzform kann man alle diese Informationen auch mit einen Black-Box-Diagramm verdeutlichen.