next up previous contents
Siguiente: Ajuste de la precisión Subir: Tipos Anterior: Subtipos   Índice General


Tipos derivados

Para prevenir la mezcla accidental de variables, Ada nos permite crear tipos derivados. A diferencia de los subtipos, los tipos derivados son nuevos tipos. Los tipos derivados se declaran utilizando la palabra reservada new seguida de un tipo existente (por ejemplo, Integer). El nuevo tipo hereda las operaciones del tipo base (suma, resta, etc.). Por ejemplo:

    1:  procedure Tipos_Derivados is 
    2:     type T_Numero_Manzanas is new Natural; 
    3:     type T_Numero_Naranjas is new Natural range 0 .. 100; 
    4:  
    5:     Num_Manzanas: T_Numero_Manzanas;
    6:     Num_Naranjas: T_Numero_Naranjas;
    7:     Total       : Integer; 
    8:  begin    
    9:     Num_Manzanas := Num_Naranjas;            -- Ilegal 
   10:     Num_Manzanas := Total;                   -- Ilegal 
   11:     Num_Manzanas := T_Numero_Manzanas(Total); 
   12:     Num_Manzanas := T_Numero_Manzanas(Num_Naranjas);
   13:  end Tipos_Derivados;

Como vemos en este ejemplo, el tipo derivado impide mezclar tipos accidentalmente (líneas 9 y 10). En el fondo, en este ejemplo todos los datos son números enteros, pero hemos dicho a Ada que queremos diferenciar conceptualmente unos de otros para no mezclar las manzanas con las naranjas. Si queremos mezclar variables de tipos derivados diferentes Ada hacerlo nos permite mezclarlos haciendo una conversión de tipo (líneas 11 y 12). Esta mezcla sólo es posible cuando ambos tipos han sido derivados de un mismo tipo (en este ejemplo todos provienen de Integer, ya que Natural es un subtipo de los enteros).

\fbox{
\begin{minipage}{12cm}
En resumen:
\begin{itemize}
\item Los subtipos se ...
...n para prevenir la
mezcla accidental de objetos.
\end{itemize}
\end{minipage}}


next up previous contents
Siguiente: Ajuste de la precisión Subir: Tipos Anterior: Subtipos   Índice General
Javier Miranda 2002-10-03