Tema 1. Conceptos de Java para Estructuras de Datos: interfaces y programación genérica Duración: 3 semanas aprox. Índice General: 1. Clases y objetos en Java: el modelo TIENE UN(A) 2. El principio POO de la Herencia y su soporte Java: el modelo ES UN(A) 3. El principio POO del Polimorfismo en Java 4. Más Herencia en Java: métodos y clases finales y abstractos 5. Herencia múltiple e interfaces Java: el interfaz Comparable 6. Programación genérica a partir de la Herencia 7. Modelización Java de la Jerarquía de Errores y Excepciones EDA. Curso 2004/2005. I. Galiano y N.Prieto 1
OBJETIVOS Insistir en los conceptos básicos de la POO y cómo son soportados por el lenguaje Java; i.e. preconizar el diseño orientado a los datos para conseguir un Software de calidad Profundizar en el concepto de Herencia en Java (con la sintaxis pertinente) para afrontar el desarrollo de estructuras de datos y algoritmos que se realiza en temas posteriores Alcanzar estos objetivos supone: - Avanzar en la descripción del propio lenguaje - Señalar el concepto de Polimorfismo y sus ventajas - Profundizar en el uso de clases Envoltorio, armonizando el diseño orientado a objetos con la existencia de tipos primitivos - Iniciar el desarrollo de librerías y excepciones propias EDA. Curso 2004/2005. I. Galiano y N.Prieto 2
1.-Clases y objetos en Java: el modelo TIENE UN(A): en este apartado se realiza una revisión de los conceptos de Clase y Objeto en Java estudiados en PRG. En particular, se incidirá en los siguientes aspectos: - Componentes de una Clase Java: atributos y métodos; sus tipos y visibilidad; el modelo TIENE UN(A); la referencia this - Objetos de una Clase Java y su manipulación - Organización de Clases relacionadas: Paquetes Java y reglas de visibilidad dentro y fuera de un Paquete Ejemplos: diseño de la clase Circulo y uso de uno ómás Objetos de dicha Clase; diseño de la clase GrupoDeCirculos EDA. Curso 2004/2005. I. Galiano y N.Prieto 3
2.-El principio POO de la Herencia y su soporte Java: el modelo ES UN(A): en este apartado se realiza la Introducción al concepto de Herencia: por qué es necesaria, qué modela y cómo lo soporta Java. En particular, se incidirá en los siguientes aspectos: - Características y sintaxis de la Herencia en Java - La clase Object y el modelo de jerarquía de Clases Java - Extensión del comportamiento de una clase vía Herencia: características de una clase derivada (el modificador de visibilidad protected, constructores de la derivada, super VS this y sobre-escritura) Ejemplos: diseño de la clase Figura y reformulación de Circulo para que sea una de sus derivadas. Diseño de la clase GrupoFiguras EDA. Curso 2004/2005. I. Galiano y N.Prieto 4
3.-El principio POO del Polimorfismo en Java: en este apartado se introduce el concepto de Polimorfismo que deriva de la Herencia y sus ventajas. En particular, se incidirá en los siguientes aspectos: - Variables Polimórficas - Diferencias entre Referencia y Objeto - Tipo estático y Tipo dinámico de una variable - Comprobación de tipos: operador instanceof - Enlace Dinámico Ejemplos: ampliación de la clase GrupoFiguras EDA. Curso 2004/2005. I. Galiano y N.Prieto 5
4.-Más Herencia en Java: métodos y clases finales y abstractos en este apartado se presentan dos mecanismos para potenciar la Herencia, bien evitando la sobre-escritura (clases y métodos finales), bien compaginándola (clases y métodos abstractos). Para cada uno de ellos se introduce la necesidad de su uso y las ventajas e inconvenientes que aporta Ejemplos: - las clases Envoltorio estándar de Java; - la clase abstracta estándar de Java Number y sus clases Envoltorio derivadas; - reformulación de Figura como clase abstracta y uso de GrupoFiguras para manejar Figura s abstractas. EDA. Curso 2004/2005. I. Galiano y N.Prieto 6
5.-Herencia múltiple e interfaces Java: interfaz Comparable: en este apartado se introducen las clases interfaz Java como soporte de la Herencia Múltiple. Se estudia la definición (especificación) e implementación de una interfaz y se presenta como ejemplo el interfaz estándar de Java Comparable Ejemplos: - diseño de un método de ordenación de objetos Integer; - diseño de un método de ordenación de un GrupoFiguras. EDA. Curso 2004/2005. I. Galiano y N.Prieto 7
6.-Programación genérica a partir de la Herencia: en este apartado se introduce el concepto de genericidad y su soporte Java: la jerarquía de Herencia con raíz en Object y el mecanismo de casting para instanciar clases genéricas. En particular, se tratará el problema de la ordenación genérica. Ejemplos: - diseño de la clase genérica Ordenacion; - ordenación de Integer utilizando la clase Ordenacion y reformulando el método existente; - ordenación de un GrupoFiguras utilizando la clase Ordenacion y reformulando el método existente. EDA. Curso 2004/2005. I. Galiano y N.Prieto 8
7.-Modelización Java de la Jerarquía de Errores y Excepciones: en este apartado se estudia el tratamiento que se da en Java a los errores que se producen al programar. En particular, se tratarán los siguientes aspectos: - Errores como Objetos Trowable del package java.lang - Las sub-clases de Trowable: Error y Exception. Las sub-clases de Exception más importantes: RuntimeException, IOException, etc. - Lanzamiento y Propagación de Excepciones: excepciones capturadas (checked) y no capturadas (unchecked); cláusulas throw y throws - Captura de Excepciones: instrucción try-catch-finally - Excepciones de usuario como sub-clases de Exception Ejemplos: reformulación del tratamiento de errores realizado en Figura y GrupoFiguras EDA. Curso 2004/2005. I. Galiano y N.Prieto 9