7. Programmeinheiten | ||||||
|
||||||
7.11.2 Paketrumpf
Der Paketrumpf dient der Implementierung der in der Paketspezifikation vereinbarten Programmeinheiten. Ein Paketrumpf hat folgende Form:
Der Paketrumpf ist gegliedert in einen Vereinbarungs- und einen Anweisungsteil. Der Vereinbarungsteil eines Paketrumpfs muß zu jeder in der Paketspezifikation aufgeführten Spezifikation (Unterprogrammspezifiaktion, Prozeßspezifikation etc.) einen Rumpf enthalten. Zusätzlich kann der Vereinbarungsteil weitere lokale Vereinbarungen enthalten, die von diesen Rümpfen oder vom Anweisungsteil des Pakets verwendet werden. Auf diese lokalen Vereinbarungen kann von außen nicht zugegriffen werden. Sie sind wie der Anweisungsteil des Pakets Implementierungsdetails, die dem Nutzer eines Pakets verborgen bleiben sollen. Der Anweisungsteil eines Pakets ist optional. In ihn können Initialisierungsanweisungen aufgenommen werden, um z. B. Datenstrukturen mit Werten vorzubesetzen. Dieser Anweisungsteil wird abgearbeitet, bevor die erste Anweisung des Hauptprogramms ausgeführt wird. Beispiel 1: Im Paketrumpf dieses Beispiels befinden sich die Rümpfe der beiden spezifizierten Unterprogramme "=" und "/". Das Unterprogramm "Gleicher_Nenner" im Paketrumpf ist lokal und kann nur von Komponenten des Paketrumpfs selbst verwendet werden.
Beispiel 2: In diesem Beispiel wird ein neues Paket Schluessel_Manager vorgestellt. Es zeigt, wie im Paketrumpf private Typen verwendet werden können. Im Paketrumpf werden Objekte eines privaten Typs gehandhabt wie alle anderen Objekte. Es können Zuweisungen vorgenommen werden (siehe (a) und (b)).
Sind nur Typen, Untertypen, Variable und Konstante in einer Paketspezifikation aufgeführt, dann ist ein Paketrumpf nicht erlaubt, es sei denn, in der Paketspezifikation wird das Pragma "Elaborate_Body" verwendet. Eine Variable, die im Paketrumpf angelegt wird, ist nur hier sichtbar und kann auch nur im Paketrumpf geändert werden. Solange das Paket existiert, existiert diese Variable und kann somit Werte speichern. Sie kann von allen Unterprogrammrümpfen des Pakets als interner Speicher verwendet werden und unterscheidet sich damit von Variablen, die in den Unterprogrammen selbst deklariert sind. Diese behalten ihre Werte von einem Aufruf zum nächsten nicht bei. |
||||||
|