Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Programacion: Análisis Semántico y Chequeo de Tipos (página 3)




Enviado por Pablo Turmero



Partes: 1, 2, 3

Monografias.com

Herencia
Herencia Sencilla
Cuando cada clase está restringida a tener una sola superclase inmediata (máximo)

Herencia Múltiple
Cuando cada clase puede tener más de una superclase inmediata

Monografias.com

Jerarquía de Herencia
La relación subclase/superclase
Definida por los “extends”
Puede ser modelada mediante un grafo acíclico dirigido (DAG)

Monografias.com

Jerarquía de Herencia
Car es un hijo de vehicle (subclase inmediata)
Vehicle es un padre de SUV (superclase inmediata)
4wd es un descendiente de vehicle (subclase)
Vehicle es un ancestro de 2-door (superclase)
vehicle
SUV
car
motorbike
4wd
2wd
4-door
2-door
5-door

Monografias.com

Reglas de Control de Acceso
Conjunto de tipos de control de acceso usados por un lenguaje OO genérico (e.d. Espresso)
Visibilidad en scope
Acceso a datos
Acceso a métodos públicos
Acceso a métodos privados

Muchos lenguajes OO tienen controles de acceso más complicados

Monografias.com

Visibilidad en Scope
Las variables y los campos de una clase pueden ser declarados en cualquier parte en el programa en la que se permita una declaración y la definición de la clase esté visible

Si un campo en una subclase y superclase usa el mismo nombre
La resolución de nombres se hace usando reglas de scope
Se trata el scope de la subclase dentro del scope de la superclase

Monografias.com

Acceso a Datos
Los campos de datos de una clase sólo pueden ser accesados por los métodos definidos en esa clase
Una variación más permisiva:
Todos los métodos de las subclases pueden accesar los campos en la superclase

Monografias.com

Acceso a métodos públicos
Todos los métodos públicos de una clase pueden ser invocados por cualquier método que pueda declarar una variable o un campo del tipo de la clase

Monografias.com

Acceso a métodos privados
Los métodos privados de una clase sólo pueden ser invocados por:
Los métodos de esa clase
Los métodos de cualquier clase que sea descendiente de la clase

Monografias.com

Ejemplo: control de acceso de C++
Una clase puede ser friend de otra clase
Los métodos y campos pueden ser
private: visibles a funciones miembro y friends
protected: visibles a funciones miembro, friends, y clases derivadas (y sus friends)
public: pueden ser usados por cualquier función

Monografias.com

Conversión automática de tipos
Una expresión de una clase es coercionada a una clase ancestro cuando se requiera
Pero no al revés
Llamado “up-casting”
Siempre legal porque la subclase contiene todos los campos de la superclase
Down-casting
Esto es más permisivo
Conversión explícita de una clase ancestro a una clase descendiente
Sólo tiene sentido si el objeto fue creado inicialmente como en la subclase, pero después convertido a la superclase
No puede chequearse en tiempo de compilación

Monografias.com

Métodos Estáticos vs. Dinámicos
Consecuencia de up-casting
Implementación del método declarado en una superclase puede ser desconocida al momento de compilar
El método es sobreescrito en una subclase
Variaciones de Lenguajes
Todos los métodos no declarados estáticos pueden ser up-casted
Sólo los métodos declarados virtuales pueden ser up-casted
Análisis e implementación de métodos dinámicos
No se puede efectuar ningún chequeo semántico
Necesitamos soporte en tiempo de corrida (runtime) al generar el código

Monografias.com

Herencia vs. Agregación
Una clase T2 es una agregación de una clase T1 si T2 contiene uno o más campos de tipo T1
A diferencia de la herencia, T2 no puede accesar campos o métodos privados en T1

¿Cuándo heredear y cuándo agregar?
heredar: T2 es un T1
agregar: T2 tiene un T1

Monografias.com

Ejemplo: Herencia vs. Agregación

SUV es un vehículo
SUV tiene un motor

class vehiculo {

}

class SUV extends vehiculo {
motor power_plant;

}

Monografias.com

Herencia múltiple
Permite que una clase sea una extensión de múltiples clases
Lleva a semánticas más complicadas para subtipos

Monografias.com

Ejemplo de Herencia Múltiple
class vehicle {

}

class yuppie_toys {

}

class SUV extends vehicle, yuppie_toys {

}

Monografias.com

Jerarquía de Herencia Múltiple
Jerarquía de Herencia Múltiple es un DAG
Pregunta: ¿Sí tanto yuppie_toys como vehicle tienen un método price() cuándo SUV invoque a price, qué método se invoca?
vehicle
SUV
car
motorbike
4wd
2wd
4-door
2-door
5-door
toys
yuppie_toy
teen_toy

Monografias.com

Jerarquía de Herencia Múltiple
Es todavía más complicado cuándo hay un ancestro común
Pregunta: ¿Cuántas instancias de bti van a ser incluidas en la clase SUV?
vehicle
SUV
car
motorbike
4wd
2wd
4-door
2-door
5-door
toys
yuppie_toy
teen_toy
big_ticket_items

Monografias.com

¿Qué es un tipo polimórfico?
Procedimientos ordinarios permiten que el cuerpo sea ejecutado con argumentos de tipo fijo
Cada llamada a un procedimiento polimórfico ejecuta el cuerpo con el tipo de los argumentos
Beneficios del polimorfismo
Reuso de Código
Ejemplo
El mismo procedimiento puede aplicarse a una lista de enteros o a una lista de strings

Monografias.com

Polimorfismo Paramétrico
Los procedimientos tienen tipos paramétrizados
Instanciamos el procedimiento con un tipo determinado de datos
Templates en C++
Ejemplo:
template class linked_list_elem {
T elem; linked_list_elem * next;

}
lined_list_elem integer_list;
lined_list_elem foo_list;

Monografias.com

Lecturas
Tigre
6.1, Capítulos 7 y 8
Ballena
4.1, 4.2, 4.3, 4.4, 4.5
Dragón
Capítulo 8

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter