abstract (tipos y subprogramas abstractos)

Explicación

Un tipo abstract es un tipo tagged diseñado para servir exclusivamente como cabecera de una jerarquía de tipos, sin que se puedan declarar objetos con ese tipo. Se declara usando la palabra reservada abstract.

 

Un subprograma abstract es uno sin cuerpo, declarado usando la palabra reservada abstract con la intención de que sea sustituido más tarde por un heredero. Si el subprograma abstract es una operación primitiva de un tipo tagged, éste también debe ser abstract.

 

Cuando se extiende un tipo de un tipo abstract, si el tipo extendido también es abstract (lo que hay que explicitar, ya que la condición de abstract no se hereda) el subprograma heredado también es abstract. Si, por el contrario, el tipo derivado no es abstract, los subprogramas abstract de su padre deben ser sustituidos por versiones no abstract.

Sintaxis

Sintaxis de declaración de un subprograma abstracto:

abstract_subprogram_declaration ::= [overriding_indicator] subprogram_specification is abstract;

Ejemplo

Declaración de tipo abstracto:

type TA is abstract tagged private;

type TA is abstract tagged record
   ...
end record;

Declaración de subprograma abstracto:

procedure P (...) is abstract;