Diferencia entre revisiones de «Programación en Ada/Tipos etiquetados»
Contenido eliminado Contenido añadido
Sin resumen de edición |
Tildes y correcciones menores |
||
Línea 7:
{{en desarrollo}}
Los cambios necesarios, fueron incorporados al nuevo
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 su estructura es pública, o puede ser un {{Ada:|Tipos / Privados|tipo privado|}}, aunque en la parte privada siempre se termina definiendo como un registro.
{{Ada/Reservada|type}} T_Base {{Ada/Reservada|is}} {{Ada/Reservada|tagged}}
Línea 33:
{{Ada/Reservada|type}} T_Derivado {{Ada/Reservada|is}} {{Ada/Reservada|new}} T_Base {{Ada/Reservada|with}} {{Ada/Reservada|private}};
El nuevo tipo hereda todos las {{Ada:|O|o|peraciones primitivas}} del tipo
Todo objeto de un tipo etiquetado contiene una etiqueta (''tag'') que permite reconocer su tipo en tiempo de ejecución.
== Tipos polimórficos (class-wide type) ==
En Ada el polimorfismo se consigue con un tipo especial que puede contener objetos de cualquier tipo derivado de uno dado. Estos tipos especiales se indican con el atributo
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, es decir, access all T_Base'Class).
== Llamadas que despachan ==
Línea 47:
El polimorfismo dinámico que proporciona la programación orientada a objetos permite que una operación sobre un objeto polimórfico se realice de distinto modo dependiendo del tipo concreto del objeto de que se trate en la ejecución. Otras formas de polimorfismo son el polimorfismo paramétrico que se implementa en Ada con las {{Ada:|U|u|nidades genéricas}} y el polimorfismo por {{Ada:|S|s|obrecarga}}.
En Ada este polimorfismo se consigue llamando a una operación primitiva de un objeto polimórfico. Cuando el objeto sobre el que se realiza la operación es polimórfico y el parámetro formal del subprograma llamado es concreto, el subprograma realmente llamado puede ser uno redefinido para el tipo concreto si se ha
Nota para programadores de C++: esto quiere decir que en Ada todos los "métodos" son virtuales, pero no todas las llamadas son virtuales, sólo las que llaman a un método de un objeto polimórfico (semejante a un puntero a clase base).
|