Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Cursos gratis / Curso de Ada - Paquetes

Curso de Ada - Paquetes

 ****- (10 opiniones)
GNU Free Documentation License Curso gratis de José Alfonso Malo Romero - 16 de Marzo de 2006
Temas Relacionados: Programación estructurada
33. Paquetes
Los paquetes exportan mediante una interfaz bien definida tipos, objetos y operaciones y permiten ocultar su implementación, lo que proporciona al programador tipos abstractos de datos y subprogramas de manera transparente.

Los paquetes de Ada proporcionan:


Especificación y cuerpo


El paquete consta de especificación (parte visible) y cuerpo (implementación que se oculta) y pueden compilarse por separado.

La sintaxis de su especificación es la siguiente:

especificación_paquete ::= package [ identificador_unidad_padre . ] identificador is { declaración_básica } [ private { declaración_básica } ] end [ [ identificador_unidad_padre . ] identificador ] ;

La sintaxis del cuerpo de un paquete es la siguiente:

cuerpo_paquete ::= package body [ identificador_unidad_padre . ] identificador is [ parte_declarativa ] [ begin secuencia_de_sentencias [ exception manejador_de_excepción { manejador_de_excepción } ] ] end [ [ identificador_unidad_padre . ] identificador ] ;

Un paquete permite agrupar declaraciones y subprogramas relacionados.

Ejemplos


Por ejemplo, para implementar una pila de enteros:

package Pila_Enteros is -- Especificación. procedure Poner (Elem: Integer); -- Interfaz. function Quitar return Integer; -- Interfaz. end Pila_Enteros; package body Pila_Enteros is -- Cuerpo. Max : constant := 100; -- Se ocultan las variables locales. Pila: array (1..Max) of Integer; -- Se ocultan las variables locales. Cima: Integer range 0..Max; -- Se ocultan las variables locales. procedure Poner (Elem: Integer) is -- Implementación. begin Cima := Cima + 1; Pila (Cima) := Elem; end Poner; function Quitar return Integer is -- Implementación. begin Cima := Cima - 1; return Pila(Cima + 1); end Quitar; begin Cima := 0; -- Inicialización. end Pila_Enteros;

En este caso, se tiene una interfaz que proporciona acceso a dos subprogramas para manejar la pila, aunque también se podrían haber exportado tanto tipos como objetos, constantes, tareas e incluso otros paquetes. Por ejemplo:

package Sobre_Días is type TDía is (LUN, MAR, MIE, JUE, VIE, SAB, DOM); subtype TDíaLaborable is TDía range LUN..VIE; SiguenteDía: constant array (TDía) of TDía := (MAR, MIE, JUE, VIE, SAB, DOM, LUN); end Sobre_Días;

En este caso, el paquete no necesitaría cuerpo.

Dependencia entre especificación y cuerpo


La especificación del paquete y el cuerpo pueden compilarse por separado. Mediante este encapsulamiento, ahora no es posible desde fuera modificar, por ejemplo, el valor de la cima de la pila, pues este objeto no es visible. Así se evita un mal empleo de la pila por alguien que pueda no conocer su implementación.

Si la especificación de un paquete contiene la especificación de un subprograma, entonces, el cuerpo del paquete debe contener el correspondiente cuerpo del subprograma. Sin embargo, pueden existir subprogramas dentro del cuerpo del paquete que no se declaren en su especificación, serían, por tanto, internos.

Destacar que dentro del cuerpo del paquete se inicializa el valor de la cima de la pila (después de begin). Esto sucede cuando se elabora el paquete. Si no necesita ninguna sentencia, se puede omitir el begin.

Declaración y visibilidad


Los paquetes se pueden declarar en cualquier parte declarativa, es decir, en un bloque, subprograma o dentro de otro paquete. En el caso del ejemplo, para utilizar la pila de números enteros, se podría hacer así:

declare N: Integer; package Pila_Enteros is -- ... end Pila_Enteros; begin Pila_Enteros.Poner (15); N := Pila_Enteros.Quitar; end;

Dentro del paquete se puede llamar a Poner o a Pila_Enteros.Poner, pero fuera del paquete únicamente se puede llamar a dicho procedimiento de la forma Pila_Enteros.Poner. Además, las variables Max, Pila y Cima no son visibles.

Importación de paquetes


Para la utilización de los paquetes desde otras unidades de compilación, se definen estas dos cláusulas:


Manual de referencia de Ada


Tabla de contenidos
  1. 1 - Introducción
  2. 2 - Historia
  3. 3 - Manual de referencia
  4. 4 - Instalación
  5. 5 - Hola Mundo
  6. 6 - Elementos del lenguaje
  7. 7 - Tipos
  8. 8 - Enteros
  9. 9 - Enumeraciones
  10. 10 - Coma flotante
  11. 11 - Coma fija
  12. 12 - Arrays
  13. 13 - Strings
  14. 14 - Registros
  15. 15 - Registros discriminados
  16. 16 - Registros variantes
  17. 17 - Punteros a objetos
  18. 18 - Punteros a subprogramas
  19. 19 - Tipos derivados
  20. 20 - Tipos etiquetados (orientación a objetos)
  21. 21 - Subtipos
  22. 22 - Objetos (variables y constantes)
  23. 23 - Atributos
  24. 24 - Expresiones
  25. 25 - Operadores
  26. 26 - Sentencias y estructuras de control
  27. 27 - Subprogramas
  28. 28 - Sobrecarga
  29. 29 - Entrada/salida
  30. 30 - Pragmas
  31. 31 - Interfaz con otros lenguajes
  32. 32 - Diseño y programación de sistemas grandes
  33. 33 - Paquetes
  34. 34 - Clausula use
  35. 35 - Clausula with
  36. 36 - Paquete Standard
  1. 37 - Declaraciones
  2. 38 - Ámbito
  3. 39 - Visibilidad
  4. 40 - Renombrado
  5. 41 - La biblioteca Ada (unidades y subunidades)
  6. 42 - Unidades de biblioteca
  7. 43 - Unidades hijas
  8. 44 - Subunidades
  9. 45 - Compilación separada y dependiente
  10. 46 - Tipos abstractos de datos
  11. 47 - Tipos limitados
  12. 48 - Unidades genéricas
  13. 49 - Excepciones
  14. 50 - Paquete Ada.Exceptions
  15. 51 - Concurrencia
  16. 52 - Tareas
  17. 53 - Sincronización de tareas mediante puntos de entrada o citas (entry)
  18. 54 - Aceptación de citas (accept)
  19. 55 - Selección de citas (select)
  20. 56 - Llamadas a punto de entrada complejas
  21. 57 - Tareas dinamicas: creación dinamica de tareas (tipos t
  22. 58 - Dependencia de tareas
  23. 59 - Ejemplos de tareas
  24. 60 - Programación distribuida con GLADE
  25. 61 - Novedades de Ada 2005
  26. 62 - Unidades predefinidas
  27. 63 - Paquete Ada.Strings.Fixed
  28. 64 - Paquete Ada.Strings.Unbounded
  29. 65 - Paquete Ada.Text_IO
  30. 66 - Paquete Ada.Text_IO.Editing
  31. 67 - Paquete Ada.Float_Text_IO
  32. 68 - Paquete Ada.Sequential_IO
  33. 69 - Paquete Ada.Command_Line
  34. 70 - Paquete Interfaces
  35. 71 - Recursos en la Web
Autor y licencia de 'Curso de Ada - Paquetes'
José Alfonso Malo Romero Extraído de: http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Ada_/_Introducci%C3%B3n GNU Free Documentation License
El contenido está disponible bajo los términos de GNU Free Documentation License
Licencia GNU Free Documentation License: http://www.gnu.org/copyleft/fdl.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Curso de Ada - Paquetes'

Excelente curso de iniciación a la astronomía para aquellos que quieran aprender sobre esta apasionante... Más »
La idea de este curso surgió de varias conversaciones entre amig@s de la cuadrilla y... Más »
Este es un curso tremendamente completo, guiado y con ejemplos y prácticas pensadas para convertirlo... Más »
Publicidad, término utilizado para referirse a cualquier anuncio destinado al público y cuyo objetivo es... Más »
Este tutorial presenta los conceptos básicos de líneas de transmisión (Transmission lines), así como una... Más »
Gente Wiki
Ruben Roa
Magister en epidemiologia y salud publica. Magister en economia de la salud. Magister en sociologia. Maestrando en farmacoeconomia y evaluación...
Carlos Monsalvo
Soy profesor enel componete Formación Ciudadna en III etapa es decir bacillerato. Soy facilitador de formación de docentes el...
Cine
Cesare
Hola soy ingeniero fisico y estoy estudiando un doctorado en fisica. M eencanta viajar.
Williams Solorzano
* Graduado Universitario en: - Administración de Recursos Humanos y Ciencias Policiales. * Experto en Seguridad, Proteccón Integral y Control de Pérdidas. *...
Escolta y protección personal, Herramientas de gestión,...
Sergio Guerra S
Saludos, soy profesor en la facultad de ingeniería mecánica, mi proposito es actualizar mis conocimientos en la electricidad del...
Alberto G. Saldívar Lugo
Estoy trabajando actualmente en la implementación de un crm para la empresa en la que laboro. Gusto de la lectura...
Suscribirse
¿Estás seguro de que deseas eliminar este capítulo?