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.
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
- Foto: Legobausteine - Urheber: Priwo - Lizenz: Public Domain