Weiter: 11.4 Das Hauptprogramm
Hinauf: Programmstruktur und Übersetzungsvorgang
Zurück: Übersetzungs- und Bibliothekseinheiten
Ada bietet allerdings noch zusätzliche Unterstützung für getrennt übersetzbare
Untereinheiten von Übersetzungseinheiten.
Es ist beispielsweise erlaubt, anstelle der Implementation eines
Unterprogrammes, eines Paketes, eines Tasks oder eines geschützten Objektes
zu schreiben, und die tatsächliche Implementation erst in einer
Untereinheit zu realisieren. So eine Untereinheit sieht dann so
aus, daß man sie mit
separate (<Vater_Einheit>)
einleitet (wobei die entsprechende Vater-Einheit, wie Paket oder
Unterprogramm, anzuführen ist) und
danach eine korrekte Implementierung folgen läßt. Etwaig notwendige
With-Anweisungen sind nötigenfalls vor dem Schlüsselwort
separate anzugeben. Klarerweise kann auch innerhalb einer Untereinheit mit
is separate auf weitere Untereinheiten verwiesen werden. Dabei verlängert
sich der Name der Vater-Einheit entsprechend um die neu hinzugekommene
Untereinheit, die, mit einem Punkt getrennt, hinten anzuhängen ist, z.B.
(vgl. das Beispiel aus Kapitel 7):
separate (Datum_Manager.Setze)
falls wir ein in
Datum_Manger.Setze lokal definiertes Unterprogramm getrennt übersetzen wollen.
Die Implementierung unseres Paketes
Datum_Manager könnte also auch folgendermaßen lauten:
separate(Datum_Manager)
function Setze(
Tag: Tag_Typ;
Monat: Monatsname;
Jahr: Jahr_Typ)
return Datum
is
Dat: Datum := (Tag, Monat, Jahr);
-hierkannmanaufdieKomponentenvonDatumzugreifen
begin
case Monat is
when Jaenner Maerz Mai Juli August Oktober Dezember =>
null; -AnzahlderTagepasst
when Feber =>
if Jahr mod 4 = 0 and jahr mod 1000 ≠ 0 then
-Schaltjahr
if Tag not in 1 .. 29 then
raise falsches_Datum;
end if;
else
-keinSchaltjahr
if Tag not in 1 .. 28 then
raise falsches_Datum;
end if;
end if;
when others =>
-hierkommendieMonatemitTagen
if Tag not in 1 .. 30 then
raise falsches_Datum;
end if;
end case;
return Dat;
end Setze;
Dabei können der Body von Datum_Manager und der separate Teil getrennt
übersetzt werden.
Weiter: 11.4 Das Hauptprogramm
Hinauf: Programmstruktur und Übersetzungsvorgang
Zurück: Übersetzungs- und Bibliothekseinheiten
Johann Blieberger
Wed Feb 11 09:58:52 MET 1998