Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Fachkonzept - Modularisierung

Baukastenprinzip

Modularisierung ist ein Prinzip, nach dem viele Systeme entwickelt werden. Die Idee besteht darin, das Gesamtsystem nach dem Baukastenprinzip aus wiederverwendbaren Einzelbausteinen (den sogenannten Modulen) zusammenzusetzen. Modularisierung erleichtert es, komplexe Systeme zu entwickeln.

Bausteine
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 als Bausteine

Funktionen können als einfache Umsetzungen des Modularisierungsprinzips angesehen werden. Wenn man Funktionen als eigenständige Verarbeitungseinheiten konzipiert, dann lassen sie sich als Bausteine bei der Entwicklung von Programmen verwenden.

Im folgenden Quelltext sind Funktionsdefinitionen zusammengefasst, man deren Hilfe man Zählprobleme bei Datumsangaben bearbeiten kann.

def schaltjahr(jahr):
    if (jahr % 400 == 0) or ((jahr % 4 == 0) and not (jahr % 100 == 0)):
        return True
    else:
        return False

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

def naechstesDatum(datum):
    (tag, monat, jahr) = datum
    if tag < anzahlTageImMonat(monat, jahr):
        tag = tag + 1
    elif monat < 12:
        tag = 1
        monat = monat + 1
    else:
        tag = 1
        monat = 1
        jahr = jahr + 1
    return (tag, monat, jahr)

def anzahlTageZwischenDatumUndDatum(datumStart, datumZiel):
    anzahlTage = 0
    datum = datumStart
    while datum != datumZiel:
        datum = naechstesDatum(datum)
        anzahlTage = anzahlTage + 1
    return anzahlTage

def datumTageNachDatum(datumStart, anzahlTage):
    zaehler = 0
    datum = datumStart
    while zaehler < anzahlTage:
        datum = naechstesDatum(datum)
        zaehler = zaehler + 1
    return datum

Wenn man diese Bausteine in einer Datei tagezaehlen.py abspeichert, dann kann man die Bausteine wie folgt in Programmen verwenden.

# Import von Bausteinen
from tagezaehlen import *

# Verwendung von Bausteinen
# Initialisierung
datumGeburt = (11, 11, 1996)
datumHeute = (16, 1, 2012)
# Verarbeitung
anzahlTage = anzahlTageZwischenDatumUndDatum(datumGeburt, datumHeute)
halbeAnzahlTage = anzahlTage // 2
datumHalbzeit = datumTageNachDatum(datumGeburt, halbeAnzahlTage)
# Ausgabe
print("Geburtsdatum:", datumGeburt)
print("aktuelles Datum:", datumHeute)
print("halb-so-alt-Datum:", datumHalbzeit)

Vorteile von Modularisierung

Strukturierung von Programmen: Bausteine helfen, Programme klar zu strukturieren. Programme, die aus gut dokumentierten Bausteinen aufgebaut sind, können schneller verstanden und infolgedessen auch leichter überarbeitet werden.

Vermeidung von Codeduplizierung: Bausteine helfen, unnötige Codeduplizierungen in Programmen zu vermeiden. Der gleiche Programmcode muss nicht mehrfach geschrieben werden. Stattdessen kann man mit einem Funktionsaufruf einen vorher als Baustein ausgelagerten Programmcode aktivieren.

Wiederverwendung von Programmteilen: Programmteile, die als unabhängige Bausteine konzipiert sind, können in verschiedenen Programmen verwendet werden. Wenn gut getestete Bausteine bereits vorliegen, dann können Programme schneller und zuverlässiger entwickelt werden.

Quellen

X

Fehler melden

X

Suche