Ein Modul besteht aus zwei Teilen:
Ein Modul kann Ressourcen aus anderen Modulen importieren.
Standard Pascal
Standard Pascal sieht keine Module vor.
Dies ist ein erheblicher Mangel von Standard Pascal und hat zu vielen, oft
nicht miteinander verträglichen Spracherweiterungen bei Pascal-Systemen
geführt.
Der neue Sprachstandard Extended Pascal sieht Module vor.
Turbo Pascal
Turbo Pascal realisiert Module in einer einfachen Form.
Der in dieser Sprachversion eingeführte Begriff dafür lautet
UNIT. Eine Unit vereint Interface- und Implementationsteil in einer
Übersetzungseinheit.
+------------------------------+ | UNIT name; | Unit-Kopf +------------------------------+ | INTERFACE | Interface-Teil | USES ...; | Import von Ressourcen aus ... | PROCEDURE name(...); | } | FUNCTION name(...); | } | TYPE ...; | } zu exportierende Ressourcen | CONST ...; | } | VAR ...; | } +------------------------------+ | IMPLEMENTATION | Implementationsteil | USES ...; | Import von Ressourcen aus ... | PROCEDURE name(...); | } | FUNCTION name(...); | } dem Nutzer des Moduls | TYPE ...; | } nicht zugängliche | CONST ...; | } Implementationsdetails | VAR ...; | } +------------------------------+ | BEGIN | | Ausführbare Anweisungen | Initialisierungsteil | END. | +------------------------------+Der Unit-Kopf legt den Namen des Moduls fest.
Der Interface-Teil deklariert die Ressourcen (Datentypen, symbolische
Konstanten, Variablen, Prozeduren und Funktionen), die exportiert werden,
d.h. auf die in anderen Programmeinheiten (im Hauptprogramm oder in anderen
Modulen) zugegriffen werden kann.
Die Bezeichner dieser Ressourcen sind öffentlich (public).
Prozeduren und Funktionen werden nur als Kopfzeile im aufgeführt, die
eigentliche Deklaration im Implementationsteil.
Der Implementationsteil definiert den Rumpf aller öffentlichen (zu
exportierenden) Prozeduren und Funktionen.
Innerhalb des Implementationsteils können auch weitere Typen, Konstanten,
Variablen, Prozeduren und Funktionen deklariert werden. Diese Resourcen
sind privat, d.h. sie sind nach außen hin nicht sichtbar und können vom
Benutzer der Unit nicht verwendet werden.
Für den Aufbau des Initialisierungsteils gibt es folgende Möglichkeiten:
Es ist möglich, dynamische Linkbibliotheken (DLL) zu erstellen.
Der Aufbau der entsprechenden Programmeinheit entspricht dem eines Programms,
anstelle des Schlüsselworts PROGRAM beginnt sie jedoch mit
LIBRARY.
Delphi
Gegenüber Turbo Pascal gibt es erweiterte Möglichkeiten:
+------------------------------+ | UNIT name; | Unit-Kopf +------------------------------+ | INTERFACE | Interface-Teil | deklarationen | +------------------------------+ | IMPLEMENTATION | Implementationsteil | deklarationen | +------------------------------+ | INITIALIZATION | Initialisierungsteil - wahlweise | Ausführbare Anweisungen | +------------------------------+ | FINALIZATION | Abschlußteil - wahlweise | Ausführbare Anweisungen | | END. | +------------------------------+Initialisierungs- und Abschlußteil sind optional.
Der Initialisierungsteil wird beim Programmstart, der Abschlußteil
beim Programmabschluß ausgeführt.
Nutzt ein Programm mehrere Units, so entscheidet die Reihenfolge der
Namensangabe in den USES-Anweisungen darüber, in welcher
Reihenfolge die Units initialisiert werden.
Beim Programmabschluß werden die Abschlußteile in der
umgekehrten Reihenfolge wie bei der Initialisierung ausgeführt.
Extended Pascal
In Extended Pascal kann ein Modul (ähnlich wie in Modula) aus zwei Teilen bestehen:
+------------------------------+ | MODULE name INTERFACE; | Modul-Kopf +------------------------------+ | EXPORT name = ( liste ); | zu exportierende Ressourcen +------------------------------+ | IMPORT ... ; | Moduln, von denen importiert wird +------------------------------+ | Deklarationen | Interface der Export-Ressourcen +------------------------------+ | END. | +------------------------------+Implementationsteil
+------------------------------+ | MODULE name IMPLEMENTATION; | Modul-Kopf +------------------------------+ | Deklarationen | Realisierung der Export-Ressourcen +------------------------------+ | TO BEGIN DO BEGIN | | ausführbare Anweisungen | Initialisierungsteil - wahlweise | END; | +------------------------------+ | TO END DO BEGIN | | ausführbare Anweisungen | Abschlußteil - wahlweise | END; | +------------------------------+ | END. | +------------------------------+