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

Curso de Ada - Tipos derivados

 ****- (11 opiniones)
GNU Free Documentation License Curso gratis de José Alfonso Malo Romero - 16 de Marzo de 2006
Temas Relacionados: Programación estructurada
19. Tipos derivados
Hay ocasiones en las que es útil introducir un tipo nuevo que es similar en la mayoría de los aspectos a uno ya existente, pero que es un tipo distinto. Con la siguiente sentencia, se dice que S es un tipo derivado de T:

type S is new T; ||

||

Características


Los aspectos que definen a un tipo son su conjunto de valores y su conjunto de operaciones. El conjunto de valores de un tipo derivado es una copia del conjunto de valores del progenitor y, al ser copia, no pueden asignarse entre ambos. El conjunto de operaciones aplicables a un tipo derivado son:


  • A no ser que el tipo progenitor sea limitado, posee la asignación, igualdad y desigualdad predefinidas.

  • El tipo derivado heredará los subprogramas primitivos del tipo progenitor, es decir, los subprogramas que tengan algún parámetro o un resultado de dicho tipo, y bien sean predefinidos o estén definidos en el mismo paquete que el tipo progenitor.

Estas operaciones heredadas, a efectos de uso, es como si estuvieran definidas en la misma región declarativa que el tipo derivado.

Ejemplo


Por ejemplo, si se tiene type TEnteroNuevo is new Integer, entonces el tipo derivado TEnteroNuevo heredará los subprogramas predefinidos como "+", "-", "abs", etc. y los atributos como First o Last.

Así, por ejemplo, se puede escribir:

type TNumManzanas is new Integer; NumManzanas: TNumManzanas; -- ... NumManzanas := NumManzanas + 1;

Como puede observarse, se hace uso del operador "+" predefinido para el tipo Integer.

Tipos derivados frente a subtipos


¿Cuándo crear un tipo derivado en vez de un subtipo? Cuando queremos tener un nuevo tipo cuyos valores no deseamos que se confundan con los del tipo original pero queremos que posea las mismas operaciones y la misma representación que el tipo base. Por ejemplo:

-- Supongamos que tenemos cajas en las que caben 20 piezas de frutas subtype TNumFrutas is Natural range 1 .. 20; type TNumManzanas is new TNumFrutas; type TNumPeras is new TNumFrutas; NumManzanas: TNumManzanas; NumPeras: TNumPeras; NumFrutas: TNumFrutas; -- ... -- Error de compilación, no podemos juntar peras con manzanas: NumManzanas := NumManzanas + NumPeras; -- Ilegal -- Pero siempre podemos contabilizarlos como frutas convirtiendo al tipo -- base: NumFrutas := TNumFrutas (NumManzanas) + TNumFrutas (NumPeras);

Nota para programadores de C/C++: typedef realmente no define un tipo, sino que define un nuevo nombre para un mismo tipo, algo parecido al subtype, pero nada que ver con el type S is new T.
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 - Tipos derivados'
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 - Tipos derivados'

En la actualidad el mundo de los negocios se desenvuelve no solo dentro de los... Más »
PHP es un lenguaje en que usualmente el tipo de dato de una variable no... Más »
Excelente curso de iniciación a la astronomía para aquellos que quieran aprender sobre esta apasionante... Más »
Este es un curso tremendamente completo, guiado y con ejemplos y prácticas pensadas para convertirlo... Más »
La idea de este curso surgió de varias conversaciones entre amig@s de la cuadrilla y... Más »
Gente Wiki
Alejandra
Amo la aeronáutica y me gusta investigar el funcionamiento de las aerolíneas, sus aeronaves y el trabajo a nivel humano....
Líneas aéreas, Aeropuertos,...
Edgardo Lürig
Analista programador, diplomado en docencia y docencia con tics por la universidad de cambridge. Especialista en elearning. Especialista en el...
Alexander
Soy profesor de inglés, me gusta la informática, las fotografías y textos relacionados con pedagogia actual.
Franco
Docente del curso de auditoria informaticaen launiversidad. Auditor de sistemas de información.
Jairo Javier Blanco Galindo
Consultor de 19 empresas en barranquilla, colombia, creativo, innovador, organizado, profesional de mercadeo, ayudo a crear empresas en todas las...
Susana Z Reynoso
Soy psicologa doy terapia de manera independiente ademas estoy estructurando un proyecto para poder trabajar directamente con empresas dando
Suscribirse
¿Estás seguro de que deseas eliminar este capítulo?