Diferencia entre revisiones de «Programación en Ada/Tipos etiquetados»

Contenido eliminado Contenido añadido
m Corrección de enlaces
m plantillas
Línea 7:
{{en desarrollo}}
 
Los '''tipos etiquetados''' de Ada 95 son los que permiten realizar el [[w:Polimorfismo en programación orientada a objetos|polimorfismo]]. A menudo se asimila la combinación de un tipo etiquetado y el paquete que lo contiene a una clase en otros lenguajes de programación también orientados a objetos. Sin embargo hay algunas diferencias de sintaxis, que no de filosofía general, que veremos en este apartado.
 
Un tipo etiquetado puede ser un registro de modo que sussu estructura es pública, o puede ser un {{Ada:|Tipos / Privados|tipo privado|}}
 
{{Ada/Reservada|type}} TInstanciaT_Base {{Ada/Reservada|is}} {{Ada/Reservada|tagged}}
{{Ada/Reservada|record}}
...
{{Ada/Reservada|end}} {{Ada/Reservada|record}};
 
{{Ada/Reservada|type}} TInstanciaT_Base {{Ada/Reservada|is}} {{Ada/Reservada|tagged}} {{Ada/Reservada|private}};
 
Un tipo etiquetado se puede extender.
 
{{Ada/Reservada|type}} T_Derivado {{Ada/Reservada|is}} {{Ada/Reservada|new}} T_Base {{Ada/Reservada|with}}
type TDerivado is new TInstancia with
{{Ada/Reservada|record}}
...
{{Ada/Reservada|end}} {{Ada/Reservada|record}};
 
{{Ada/Reservada|type}} TDerivadoT_Derivado {{Ada/Reservada|is}} {{Ada/Reservada|new}} TInstanciaT_Base {{Ada/Reservada|with}} {{Ada/Reservada|private}};
 
El nuevo tipo hereda todos las {{Ada:|O|o|peraciones primitivas}} del tipo base y las puede redefinir por sobrecarga{{Ada:|S|s|obrecarga}}.
 
Todo objeto de un tipo etiquetado contiene una etiqueta (''tag'') que permite reconocer su tipo en tiempo de ejecución.
Línea 34:
En Ada el polimorfismo se consigue con un tipo especial que puede contener objetos de cualquier tipo derivado de uno dado.
 
TInstanciaT_Base'Class; -- Puede almacenar cualquier objeto derivado del tipo TInstanciaT_Base.
 
Este tipo de la clase es un {{Ada:|T|t|ipo irrestringido}}, es decir, para declarar un objeto de este tipo tenemos que inicializarlo llamando a una función, asignándole otro objeto o con un ''new'' (si es un puntero a tipo polimórfico).
Línea 48:
 
== Manual de referencia de Ada ==
* [http:{{Ada//www.adaic.org/standards/95lrm/html/RM-RM2|3-|9.html 3.9 |Tagged Types and Type Extensions]}}
* [http:{{Ada//www.adaic.org/standards/95lrm/html/RM-RM3|3-|9-|1.html 3.9.1 |Type Extensions]}}
* [http:{{Ada//www.adaic.org/standards/95lrm/html/RM-RM3|3-|9-|2.html 3.9.2 |Dispatching Operations of Tagged Types]}}
 
[[en:Programming:Ada:OO]]