next up previous contents
Siguiente: Uso de paquetes (with) Subir: Paquetes Anterior: Especificación   Índice General

Cuerpo

El cuerpo del paquete debe contener el código de todos los procedimientos y funciones declarados en la especificación del paquete. Además puede opcionalmente tener más declaraciones de constantes, tipos, variables y subprogramas y un código de inicialización (que se coloca justo al final del paquete dentro de un bloque begin-end). Por ejemplo:

       package body Calculo is 
          Tabla: array(1..100) of Integer;

          procedure Duplicar(Numero   : in Integer; 
                             Respuesta: out Integer) is 
          begin 
             Respuesta := 2 * Numero;
          end Duplicar; 
 
          function Doble(Numero : in Integer) 
                            return Integer is 
          begin 
             return Tabla(Numero); 
          end Doble; 

       begin  
          -- Codigo de inicializacion del paquete
          for i in 1..10 loop
              Tabla(I):=2*I;
          end loop;
       end Calculo;

Las declaraciones hechas dentro del cuerpo del paquete (por ejemplo Tabla) sólamente están disponibles dentro del cuerpo del paquete (mientras que las declaraciones hechas en la especificación del paquete pueden utilizarse desde todos los programas que lo utilicen). Esta característica nos permite modificar la implementación de una aplicación sin modificar su interfaz. Por ejemplo, podría ocurrirsenos otro algorítmo para estos subprogramas que no utilizase ninguna tabla. Con sólo cambiar el cuerpo del paquete, conseguimos cambiar la biblioteca sin que afecte a sus usuarios.

En GNAT los cuerpos de los paquetes se colocan en ficheros con extensión .adb. Por tanto, este ejemplo debe estar en el fichero calculo.adb.


next up previous contents
Siguiente: Uso de paquetes (with) Subir: Paquetes Anterior: Especificación   Índice General
Javier Miranda 2002-10-03