 
  
  
  
 
 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)
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;
 
 
  
  
  
 
 Weiter: 11.4 Das Hauptprogramm 
Hinauf: Programmstruktur und Übersetzungsvorgang
 Zurück: Übersetzungs- und Bibliothekseinheiten
 
 
Johann Blieberger
Wed Feb 11 09:58:52 MET 1998