Departamento de Lenguajes y Sistemas Informáticos

________

Universidad de Granada

PROGRAMACION DIRIGIDA A OBJETOS

Versión: 1

Tema 4.- Polimorfismo, TAD y clases

Fecha:16/01/2008

Guía de estudio

Autores: José Parets, M. José Rodríguez, Nuria Medina, M. del Mar Abad


 LECCION 1.- Polimorfismo

DURACION: 1 h.

Preguntas:   - ¿Qué es el polimorfismo?

                        - ¿Qué consideraciones sobre el polimorfismo son útiles en el diseño e implementación de programas orientados a objetos?

  PUNTOS A TRATAR

1.- La clasificación en la orientación a objetos

2.- Concepto de polimorfismo

3.- El polimorfismo en los LOO

4.- Ventajas del polimorfismo  

4.1.- Tipos genéricos

4.2.- Sobrecarga

4.3.- Polimorfismo de mensajes

5.- Heurísticas de diseño para el polimorfismo

INDICACIONES

Hay mucha litaratura sobre el polimorfismo y cada autor propone su propia definición. En el material complementario hemos tratado de prorporcionar una visión del polimorfismo que permita comprender su uso práctico en los LOO. Puede estudiarse esta lección siguiendo este material. 

EJERCICIOS

        1.- ¿Por qué Smalltalk no tiene tipos genéricos? ¿Cómo se suple esta ausencia? ¿Constituye esto una ventaja o un inconveniente?

        2.- Las mismas cuestiones anteriores para JAVA

 

Lección 2.- TAD y clases

DURACION: 1 h.

Preguntas:   - ¿Qué relación existe entre los conceptos de TAD y clase?

                        - ¿Cómo se plasma el concepto de TAD en los lenguajes orientados a objetos?  

PUNTOS A TRATAR

1.- Tipos Abstractos de Datos

1.1.- Concepto de TAD

1.2.- Criterios para la especificación  

1.3.- Propiedades de la representación: FA e IR

1.4.- Consecuencias de diseño de la FA y el IR  

2.- Clases e interfaces 

2.1.- Las clases como TAD: especificación, representación e implementación

2.2.- Las interfaces en JAVA como TAD: especificación pura de comportamiento

2.2.1.- Concepto de interface

Froufe, 121-122 o Arnold, 99-102

2.2.2.- Utilidad de las interfaces

INDICACIONES

Punto 1.- Este punto puede estudiarse siguiendo el material complementario.

Punto 2.1.- Este punto es una reflexión sobre los contenidos de temas anteriores que ya se conocen. Como recapitulación de estos contenidos debería saber realizar los ejercicios 1 a 5.

Punto 2.2.- Las interfaces en JAVA constituyen una forma de abstracción muy potente. La interfaces están mejor explicadas en Arnold que en Froufe. En el MC hay un ejemplo de interface. La interfaces se ampliarán tras estudiar la herencia. Para comprender la utilidad de las interfaces realiza los ejercicios 6 y 7. 

EJERCICIOS

1.- Dentro de la definición de una clase en Smalltalk y en JAVA, ¿qué partes se pueden considerar especificación, cuáles representación y cuáles implementación?

2.- ¿En qué parte de las anteriores se definen el IR y la FA?

3.- Señale algunas clases en Smalltalk y JAVA cuyos objetos sean inmutables. ¿Por qué son inmutables? Señale otras cuyos objetos sean mutables.

4.- Pruebe el siguiente mensaje en las versiones 2.5 y 7.1 de VisualWorks: 'hola' at:1 put:$a. Saque sus propias conclusiones.

5.- ¿Deben garantizarse el cumplimiento de las precondiciones en la implementación de un método?¿Cuándo?¿Por qué? Ventajas e inconvenientes.

6.-  Busca en la WEB: "JAVA interface", ¿qué diferentes sentidos tiene este término?

7.- Visita la siguiente página: http://java.sun.com/docs/books/tutorial/collections/