7. Programmeinheiten
 
zurück
7.13 Generische Einheiten


Die beiden folgenden Prozeduren zeigen, daß die Logik des Vertauschens von zwei Elementen nicht vom Typ der zu vertauschenden Elemente abhängt.

procedure Vertausche_Gleitpunktzahl (U, V : IN OUT Float) is
   T : Float;
begin
   T := U;
   U := V;
   V := T;
end Vertausche_Gleitpunktzahl;

procedure Vertausche_Ganzzahl (U, V : IN OUT Integer) is
   T : Integer;
begin
   T := U;
   U := V;
   V := T;
end Vertausche_Ganzzahl;

Es ist daher sinnvoll, ein Ausdrucksmittel in einer Programmiersprache zu haben, das unabhängig vom Typ der Elemente mit ihnen operieren und so die Logik umsetzen kann.

Dieses Mittel sind die generischen Einheiten.

Die folgende Prozedur "Vertausche" ist ein generisches Unterprogramm und kann mit einer Schablone verglichen werden.

generic
   type Element is private;
procedure Vertausche (U, V : IN OUT Element);

procedure Vertausche (U, V : IN OUT Element) is
   T : Element; -- der generische formale Typ
begin
   T := U;
   U := V;
   V := T;
end Vertausche;

Von dieser Schablone können nun Unterprogramme abgeleitet werden, die für verschiedene Typen ausgeprägt werden können. Dieser Vorgang wird Instantiierung genannt.

procedure Vertausche_Ganzzahl is new Vertausche (Element => Integer);

procedure Vertausche_Gleitpunktzahl is new Vertausche (Element => Float);

Bei generischen Einheiten können neben Typen auch Objekte, Unterprogramme und Pakete generische Parameter sein. Damit stehen dem Programmierer eine Vielzahl an Ausdrucksmöglichkeiten zur Verfügung.

Generische Einheiten haben eine besondere Bedeutung für die Wiederverwendbarkeit :

  • Die generische Einheit kann in einer bestimmten Ausprägung (Instanz) auf korrektes
    Verhalten getestet werden. Für weitere Ausprägungen mit anderen Parametern kann das
    korrekte Verhalten vorausgesetzt werden.
  • Die Wiederverwendung ist nicht mit Kopieren von Ada-Quelltext verbunden, sondern aus
    der vorgegebenen Schablone, der generischen Einheit, können durch Instantiierung immer
    wieder neue Programmeinheiten erzeugt werden.
  • Eventuell spätere Änderungen/Ergänzungen sind nur an einer Stelle erforderlich und gelten
    für alle Instanzen der generischen Einheit.



 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.