Modularisierung von Programmen

Werbung
Modularisierung von Programmen
Der Quelltext des Betriebssystems Windows 2000® umfasst ca. 29.000.000 Quelltextzeilen...
Modernere Betriebssysteme (zumindest für PCs) sind sicher nicht simpler!
Komplexere Programme werden in einzelne Programmteile (Module) gegliedert. Diese
Modularisierung bietet eine Reihe von Vorteilen:
•
•
•
•
•
•
Die Programme werden übersichtlicher (Voraussetzung: Die Programmteile sind nicht willkürlich festgelegt, sondern jedes Modul realisiert einen bestimmten (relativ abgeschlossenen)
Teil des Programmes.)
Programme können effektiv von Teams entwickelt werden (Voraussetzung: Die Teammitglieder haben sich u.a. abgestimmt, welches Modul welche Funktionen realisiert und wie die
Schnittstellen zwischen den Programmteilen funktionieren.)
Die Wartung von Programmen wird einfacher (Ein Programm durchläuft einen sogenannten
Software-Lebenszyklus, d.h. es ist im allgemeinen nach seiner „Fertigstellung“ nicht völlig
fehlerfrei (man denke an ein bekanntes Betriebssystem ;-) und kann oft nicht längere Zeit ohne
Veränderungen/ Erweiterungen benutzt werden. Nachträgliche Veränderungen an einem
Programm werden als Wartung bezeichnet. Eine gute Modularisierung erleichtert diese
erheblich.)
Bestimmte Programmteile können mehrfach verwendet werden (Gemeint ist hier die
Verwendung von vordefinierten Programmbibliotheken (Units, Header-Dateien) und von selbst
definierten Funktionen bzw. Prozeduren.)
Mit modularen Programmen ist eine effektivere Nutzung des Arbeitsspeichers möglich
(z.Bsp. dynamic link libraries – DLL's)
Unabdingbare Vorrausetzung für objektorientierte Programmierung
Die einfachsten Arten von Unterprogrammen (Modulen) in Pascal sind die Prozeduren
(procedure) und Funktionen (function). Prozeduren besitzen in der Regel Eingabewerte (EingabeParameter) und Rückgabewerte (Rückgabe-Parameter). Funktionen besitzen eine spezielle Methode
der Rücgabe für genau einen Rückgabewert. Eine Prozedur/ Funktion kann mehrfach (mit
verschiedenen Eingabewerten) aufgerufen werden.
Syntax einer Prozedur in Pascal:
procedure Prozedurname ([para1:Typ1,][para2:Typ2,...,][paraN:TypN]);
[var: Deklaration lokaler Variablen]
begin
Anweisungen...
end;
Aufruf: Prozedurname ([para1,][para2,...,][paraN:]);
Syntax einer Funktion in Pascal:
function Funktionsname ([para1:Typ1,][para2:Typ2,...,][paraN:TypN]): Funktionstyp;
[var: Deklaration lokaler Variablen]
begin
Anweisungen...
end;
Aufruf: Ergebnisvariable := Funktionsname ([para1,][para2,...,][paraN:]);
Bemerkungen:
• Bei allgemeinen Syntaxbeschreibungen stehen fett geschriebene Wörter für Schlüsselwörter,
kursiv geschriebene Wörter sind „frei wählbare“ Bezeichner und in eckigen Klammern stehende
Ausdrücke können weggelassen werden (Wenn diese Ausdrücke verwendet werden, dann ohne
die eckigen Klammern!).
• para1, para2,..., paraN sind so genannte formale Parameter und stellen die Eingabewerte der
Prozedur/ Funktion dar.
• Rückgabeparameter müssen so genannte Variablenparameter (call by referenz – mit var vor der
Deklarationsanweisung) sein.
• Ereignisprozeduren (von Lazarus automatisch erzeugte „Prozedurrahmen“ wie Button1.Click)
besitzen eine spezielle vordefinierte Parameterangabe (Sender: TObject). Diese darf nicht
verändert werden.
Bsp.:
Prozedurdeklaration
Rückgabeparameter
...
procedure summe (a,b:Integer; var c:Integer);
begin
c := a + b;
end;
Übergabe der aktuellen
Parameterwerte an die
Prozeduraufruf
formalen Parameter *
(i.a. in einer
summe(s1,s2,s);
Ereignisprozedur)
...
Prozeduraufruf
*
Die hier verwendete Art der Übergabe der Werte der Variablen s1 und s2 (aktuelle Parameterwerte) an die formalen Parameter der Prozedur/ Funktion bezeichnet man auch als Wertparameterübergabe (call by value). Die Namen der aktuellen und der formalen Parameter müssen nicht
übereinstimmen – die Übergabe erfolgt in der Reihenfolge der Aufzählung. Die Anzahl der
aktuellen und der formalen Parameter stimmt überein. Eine Wertparameterübergabe ist auch mit
Konstanten oder Ausdrücken möglich, z.Bsp.:
summe(2,y*z,s);
Herunterladen