7. Programmeinheiten
 
zurück
7.13.2 Generischer formaler Teil


Der generische formale Teil (generic_formal_part <BNF>) ist die Parametervereinbarung (generic_formal_parameter_declaration <BNF>) einer generischen Einheit. Generische formale Parameter können sein:


1. generische formale Objekte

Generische formale Objekte sind Konstante oder Variable. Sie werden anhand des Parametermodus unterschieden. "in"-Parameter sind Konstante, "in out" -Parameter sind Variable.

Eine Konstante wird wie folgt vereinbart:

<objekt> : IN <Typ_Name>

Bei der Instantiierung kann für eine Konstante ein beliebiger Ausdruck vom Typ <Typ_Name> eingesetzt werden. Die Instanz arbeitet nur mit der Kopie des Wertes dieses Ausdrucks. Generisch formale Konstante sollen nach Möglichkeit vorbesetzt werden.

Eine Variable wird wie folgt vereinbart:

<objekt> : IN OUT <Typ_Name>

Eine Variable als generisches formales Objekt erfordert bei der Instantiierung eine Variable als Aktualparameter. Eine Variable wird dann verwendet, wenn die Instanzen den Wert des Objekts ändern sollen.

Achtung: Bei der Verwendung von solchen Variablen ist Vorsicht geboten. Sie verhalten sich wie globale Variable und können somit zu Seiteneffekten führen.


2. generische formale Typen

Das Konzept der generischen formalen Typen folgt der strengen Typisierung in Ada.

Generische formale Typen (formal_type_declaration <BNF>) werden verwendet, um der generischen Einheit einen Typ übergeben zu können, der einer bestimmten Typklasse zugehört. Während der generische formale Typ die Typklasse definiert, muß bei einer Instantiierung als Aktualparameter ein Typ dieser Typklasse verwendet werden. Es gibt die Möglichkeiten, eine Typklasse anzugeben, die alle Typen als Aktualparameter zuläßt oder aber auch eine Typklasse
festzulegen, die z. B. nur modulare Integer zuläßt.

Typklasse Syntax

formaler privater Typ   type <Typ_Name> is [[abstract] tagged][limited] private;
formaler abgeleiteter Typ   type <Typ_Name> is [abstract] new <Vater_Typ> [with private];
formaler skalarer Typ    
- diskreter Typ   type <Typ_Name> is (<>);
- ganzahliger Typ   type <Typ_Name> is range <>;
- modularer Typ   type <Typ_Name> is mod <>;
- Gleitpunkttyp   type <Typ_Name> is digits <>;
- Festpunkttyp   type <Typ_Name> is delta <>;
- dezimaler Festpunkttyp   type <Typ_Name> is delta <> digits <>;
formaler erweiterbarer Typ   type <Typ_Name> [(<>)] is tagged [limited] private;
formaler Reihungstyp   type <Typ_Name> is array ...
formaler Zugriffstyp   type <Typ_Name> is access ...


Mit den Typklassen wird also festgelegt, welche Voraussetzungen ein Aktualparameter bei der Instantiierung erfüllen muß. Diese Festlegung ist wesentlich, um die generische Einheit implementieren zu können. Mit der Festlegung der Typklasse wird der Umgang der formalen Typen, insbesondere der Umgang mit Objekten dieser formalen Typen festgelegt.


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