Title: Prcticas A'E'D'I'
1Prácticas A.E.D.I.
- Rosalía Laza Fidalgo
- Reyes Pavón Rial
- Curso 2008-2009
2Índice
- Introducción
- Herencia
- Interfaces
- Genéricos
- Excepciones
3Introducción
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- Clase 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.
4Introducción
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- Constructores 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)
-
5Herencia
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- La 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.
6Herencia
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- Ejemplo
- class Persona
-
-
- class Estudiante extends Persona
-
-
- class Trabajador extends Persona
-
7Herencia
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- clase 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)
8Ejemplo
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- 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 p
ublic 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
9Utilidades
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- 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
10Interfaces
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- Es 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
11Ejemplo de Interfaz
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
interface NombreInterface tipo_devuelto
método1(lista de parámetros) ...
tipo_devuelto métodoN(lista de parámetros)
12Ejemplo de Interfaz
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- 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.prin
tln(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)
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 cr c.visualiza() //número
racional
13Interfaz - Clase Abstracta
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- 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
14Genéricos
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- El 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)
- cr
15Genéricos
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- El 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
-
16Genéricos
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- Java 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 CajaltTgt
- // declaraciones y código para gestionar los
- objetos de tipo T
-
- Podemos utilizar cualquier identificador para el
tipo genérico, pero el convenio consiste en
utilizar una letra mayúscula.
17Genéricos
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- Para crear un objeto de tipo Caja, lo
instanciaremos utilizando una clase específica en
lugar de T. - CajaltPapelgt caja1 new CajaltPapelgt()
- //crea una caja de objetos Papel(se supone
- //implementada)
-
- CajaltJuguetegt caja2 new CajaltJuguetegt()
- //crea una caja de objetos Juguete (se supone
- //implementada)
- Con la misma definición de la clase Caja, se
pueden almacenar diferentes tipos de objetos, los
cuales se indican al instanciarlo.
18Genéricos
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- public class PairltK,Vgt
- private K clave
- private V valor
- public Pair(K c, V v) clave c valor v
- public K getClave() return clave
-
- public V getValor()return valor
- public String toString()return ""
getClave() "," getValor() "" -
- public static void main (String args)
- Pair ltString,Integergt par1 new Pair
ltString,Integergt(new String("Pedro"),33) - // No necesario hacer cast
- System.out.println(par1.getClave().charAt(0
)) - System.out.println(par1)
-
- Pair ltPersona,Doublegt par2 new Pair
ltPersona,Doublegt(new Persona("Maria",11), 9.5)
19Excepciones
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- Una 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.
20Ejemplo
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- 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) -
-
21Tipos
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
22Propagación de excepción
?Introducción ? Herencia ? Interfaces ? Genéricos
? Excepciones
- 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) -
-
-
23Creación de excepciones
?Introducción ? Herencia ? Interfaces ? Genéricos
? 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
-
-