Fachkonzept - Modularisierung
Bausteinprinzip
Modularisierung ist ein Prinzip, nach dem viele Systeme entwickelt werden.
Die Idee besteht darin, das Gesamtsystem nach dem Bausteinprinzip aus wiederverwendbaren Einzelbausteinen
(den sogenannten Modulen
) zusammenzusetzen. Modularisierung erleichtert es,
komplexe Systeme zu entwickeln.
Quelle: Wikimedia Commons
Modularisierung wird nicht nur im täglichen Leben, sondern auch in vielen Bereichen der Informatik intensiv benutzt, so auch bei der Entwicklung von Programmen.
Funktionen können als einfache Umsetzungen des Modularisierungsprinzips angesehen werden. Wenn man Funktionen als eigenständige Verarbeitungseinheiten konzipiert, dann lassen sie sich bei der Entwicklung von Programmen nach dem Baukastenprinzip verwenden. Man muss bei der Verwendung als Baustein nur die Schnittstelle der Funktion genau kennen.
Schnittstelle einer Funktion
Die Schnittstelle einer Funktion legt sämtliche Informationen fest, die man wissen muss, um diese Verarbeitungseinheit benutzen zu können.
Man kann diese Informationen aus dem Quelltext der Funktion erschließen. Oft will man aber nicht alle Details des Quelltextes genau analysieren, um an die erforderlichen Informationen heranzukommen, 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 verschluesselterText
mit folgender Funktionsdefinition:
def verschluesselterText(klartext, schluessel): geheimtext = '' for zeichen in klartext: neuesZeichen = verschluesseltesZeichen(zeichen, schluessel) geheimtext = geheimtext + neuesZeichen return geheimtext
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.
Verhalten einer Funktion
Neben diesen formalen Aspekten muss man natürlich auch wissen, was die Funktion leistet und wofür die Parameter stehen (s. o.).
Oft ist es günstig, das Verhalten einer Funktion / Prozedur anhand eines oder mehrerer Beispiele zu verdeutlichen. Wir beschreiben solche Beispiele oft als erwartete Python-Dialoge.
>>> verschluesselterText('HUND', 'GKXCSLZUAHWDBMTYENJVPOIRFQ') 'UPMC'
Schnittstellenbeschreibung
Wir verwenden verschiedene Formen der Schnittstellenbeschreibung. Oft begnügen wir uns mit einem Black-Box-Diagramm.
Im Quelltext stellen wir die erforderlichen Informationen in der folgenden Weise dar:
def verschluesselterText(klartext, schluessel): # klartext: Zeichenkette aus Großbuchstaben # schluessel: Zuordnungstabelle in Form einer Zeichenkette # return: neue, mit der Zuordnungstabelle konstruierte Zeichenkette # Beispiel: """ >>> verschluesselterText('HUND', 'GKXCSLZUAHWDBMTYENJVPOIRFQ') 'UPMC' """ geheimtext = '' for zeichen in klartext: neuesZeichen = verschluesseltesZeichen(zeichen, schluessel) geheimtext = geheimtext + neuesZeichen return geheimtext
Quellen
Foto: Lego-Steine und -platten - Urheber: Priwo - Lizenz: public domain