1 Rosalía Laza Fidalgo Reyes Pavón Rial Curso 2008-2009Prácticas A.E.D.I. Rosalía Laza Fidalgo Reyes Pavón Rial Curso
2 Índice Introducción Herencia Interfaces Genéricos ExcepcionesCurso 2008/2009
3 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesClase Java: es un tipo definido por el usuario que describe los atributos y los métodos de los objetos que se crearán a partir de la misma. Atributos: Definen el estado de un determinado objeto. Métodos: Son las operaciones que definen el comportamiento del objeto. Modificadores de acceso: public, private, protected o se puede omitir. Curso 2008/2009
4 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesConstructores: Método especial que permite crear un objeto. Método main: Toda aplicación Java contiene al menos una clase que define un método main. Tiene como misión inicializar y finalizar la ejecución de la aplicación. public static void main (String args[]) { System.out.println(“mensaje”); } Curso 2008/2009
5 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesLa herencia modela las relaciones ES-UN/A. Clase base: clase de la que deriva el resto de las clases. Clase derivada: Variación de la clase base de la que hereda métodos y atributos. Permite añadir atributos y métodos adicionales e incluso modificar el significado de los métodos heredados. clase padre clase hijoB clase hijoA clase base clase derivada Curso 2008/2009
6 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesEjemplo: class Persona{ … } class Estudiante extends Persona{ class Trabajador extends Persona{ Curso 2008/2009
7 ●Introducción ● Herencia ● Interfaces ● Genéricos ● Excepcionesclase final: no puede ser extendida (no se puede heredar de ella), todos sus métodos son también finales y no se pueden redefinir clase abstracta: la clase base únicamente define los métodos y atributos de la clase No se puede instanciar Tiene que existir una subclase que la implemente. Se pueden definir métodos abstractos y no abstractos (diferencia con interfaz donde todos los métodos son abstractos: no contienen implementación) Curso 2008/2009
8 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesEjemplo public abstract class Figura { // atributos private String nombre; // constructor public Figura( String nom ) nombre = nom; } // método abstracto abstract public double area(); public class Circulo extends Figura { // atributos private double radio; //constructor public Circulo (double r) super (“circulo”); radio = r; } // implementación del método area() public double area() return PI * radio * radio } public class Rectangulo extends Figura { //atributos private double base; private double alt; //constructor public Rectangulo (double largo, doble ancho) { super (“rectangulo”); base = largo; alt = ancho; } // implementación del método area() public double area() return base * alt Curso 2008/2009
9 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesUtilidades Mecanismo básico de reutilización de código Permite extender la funcionalidad de un objeto Permite definir nuevos tipos restringiendo o aumentando propiedades Genera una jerarquía de clases, que es usada para implementar métodos y clases genéricos: Estructura en forma de árbol de profundidad n. Recursividad de la herencia: cada clase hereda de su predecesor y así sucesivamente Curso 2008/2009
10 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesEs un conjunto de declaraciones de métodos (sin implementación) y atributos que son implícitamente public, static y final. Una clase implementa una interfaz si define todos los métodos abstractos de la interfaz. Una clase puede extender sólo a otra clase base. Sin embargo puede implementar una o varias interfaces. Una interfaz puede heredar de otra utilizando extends. Cuando una clase implementa una interfaz que hereda de otra, tiene que implementar todos los métodos definidos en la cadena de herencia de la interfaz Curso 2008/2009
11 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesEjemplo de Interfaz interface NombreInterface{ tipo_devuelto método1(lista de parámetros); ... tipo_devuelto métodoN(lista de parámetros); } Curso 2008/2009
12 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesEjemplo de Interfaz interface Comparacion{ boolean iguales(Comparacion c); void visualiza(); } class Racional implements Comparacion{ int num, den; Racional (int n, int d){ //código } int numerador(){ //código } ... boolean iguales(Comparacion c){ Racional ra = (Racional) c; return num == ra.num && den == ra.den; } void visualiza(){ System.out.println(“número racional”); }} class Prueba{ public static void main (String [] args){ Comparacion c = new Complejo(2,3); Racional r= new Racional(3,5); c. visualiza(); // número complejo c=r; c.visualiza(); //número racional } class Complejo implements Comparacion{ int pReal, pImaginaria; Complejo (int r, int i){ //código } int parteReal(){ //código } ... boolean iguales(Comparacion c){ Complejo com = (Complejo) c; return pReal ==com.pReal && pImaginaria == com.pImaginaria; } void visualiza(){ System.out.println(“número complejo”); }} Curso 2008/2009
13 Interfaz - Clase Abstracta●Introducción ● Herencia ● Interfaces ● Genéricos ● Excepciones Interfaz - Clase Abstracta Ambas tienen en común que pueden contener declaraciones de métodos sin implementar y no se pueden instanciar. Se diferencia en: Una clase no puede heredar de dos clases abstract, pero sí puede heredar de una clase abstract e implementar una o más interfaces Una clase no puede heredar métodos definidos de una interface Curso 2008/2009
14 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesEl casting entre objetos se puede realizar, de manera implícita, en los siguientes casos: T y U son dos clases y U es superclase de T T y U son interfaces y U es superinterfaz de T T es una clase que implementa la interfaz U Ejemplos: Persona p; Estudiante e = new Estudiante(); p = e; Comparacion c; Racional r= new Racional(3,5); c=r; Curso 2008/2009
15 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesEl casting entre objetos hay que realizarlo de manera explícita en los siguientes casos: T y S son dos clases y S es subclase de T T y S son interfaces y S es subinterfaz de T S es una clase que implementa la interfaz T Ejemplos: Persona p= new Estudiante(); Estudiante e; e= (Estudiante) p; Comparacion c = new Racional(3,5); Racional r; r = (Racional) c; boolean iguales (Comparacion c){ Racional ra = (Racional) c; return num == ra.num && den == ra.den; } Curso 2008/2009
16 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesJava permite definir una clase basada en un tipo genérico, es decir, un tipo no especificado hasta que se instancie la clase. La cabecera de la clase contendrá una referencia al tipo dentro de corchetes angulares: public class Caja
17 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesPara crear un objeto de tipo Caja, lo instanciaremos utilizando una clase específica en lugar de T. Caja
18 ●Introducción ● Herencia ● Interfaces ● Genéricos ● Excepcionespublic class Pair
19 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesUna excepción es un error o condición anormal surgida durante la ejecución de una secuencia de código. Java obliga a que el programador prevea este tipo de situaciones capturando el error producido. Cuando se produce una excepción se detiene la ejecución del programa, se crea un objeto que la representa y se envía al método que lo ha provocado. El método puede gestionar la excepción (capturarla), o dejar que el gestor del interprete Java lo trate, el cual mostrará un mensaje describiendo la excepción. Curso 2008/2009
20 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesEjemplo public class EjemploExcepcion { public static void calculo(int d){ int a = 10 / d; System.out.println(“no se visualiza si el parámetro es 0”); } Curso 2008/2009
21 ●Introducción ● Herencia ● Interfaces ● Genéricos ● ExcepcionesTipos Throwable Error RunTimeException Exception IOException AWTException … NullPointerException IndexOutOfBoundsException NegativeArraySizeEx. EOFException MalformedURLEx FileNotFoundEx ... Curso 2008/2009
22 Propagación de excepción●Introducción ● Herencia ● Interfaces ● Genéricos ● Excepciones Propagación de excepción public class EjemploExcepcion { static void calculo(int d) throws IllegalArgumentException { if (d == 0) throw new IllegalArgumentException(); int a = 10 / d; System.out.println(“Se visualiza el resultado”); } Curso 2008/2009
23 Creación de excepciones●Introducción ● Herencia ● Interfaces ● Genéricos ● Excepciones Creación de excepciones class ExcepcionDenominadorCero extends Exception{ ExcepcionDenominadorCero(){ super(); } ExcepcionDenominadorCero(String s){ super(s); public class EjemploExcepcion{ static void calculo(int d) throws ExcepcionDenominadorCero { if (d == 0) throw new ExcepcionDenominadorCero(); int a = 10 / d; Curso 2008/2009