Prácticas A.E.D.I. Rosalía Laza Fidalgo Reyes Pavón Rial Curso 2008-2009 Índice • • • • • Introducción Herencia Interfaces Genéricos Excepciones Curso 2008/2009 ●Introducción ● Herencia ● Interfaces ● Genéricos ● Excepciones Introducción • Clase Java: es.
Download ReportTranscript Prácticas A.E.D.I. Rosalía Laza Fidalgo Reyes Pavón Rial Curso 2008-2009 Índice • • • • • Introducción Herencia Interfaces Genéricos Excepciones Curso 2008/2009 ●Introducción ● Herencia ● Interfaces ● Genéricos ● Excepciones Introducción • Clase Java: es.
Slide 1
Prácticas A.E.D.I.
Rosalía Laza Fidalgo
Reyes Pavón Rial
Curso 2008-2009
Slide 2
Índice
•
•
•
•
•
Introducción
Herencia
Interfaces
Genéricos
Excepciones
Curso 2008/2009
2
Slide 3
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Introducción
• 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.
Curso 2008/2009
3
Slide 4
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Introducción
• 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”);
}
Curso 2008/2009
4
Slide 5
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Herencia
• La herencia modela las relaciones ES-UN/A.
clase padre
clase hijoA
clase base
clase hijoB
clase derivada
• 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.
Curso 2008/2009
5
Slide 6
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Herencia
• Ejemplo:
class Persona{
…
}
class Estudiante extends Persona{
…
}
class Trabajador extends Persona{
…
}
Curso 2008/2009
6
Slide 7
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Herencia
• 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)
Curso 2008/2009
7
Slide 8
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Ejemplo
public abstract class Figura
extends
Figura
public class
class Circulo
Rectangulo
extends
Figura
{public
{
{ //atributos
//
atributos
//
atributos
private
double base;
private
Stringradio;
nombre;
private double
private double alt;
//constructor
//constructor
//
constructor
public
(double
r) largo, doble ancho)
public Circulo
Rectangulo
(double
public
Figura( String nom )
{
{
super
{
super (“circulo”);
(“rectangulo”);
r;
nombre radio
= nom;
base
==largo;
alt = ancho;
}}
//
} implementación del método area()
public
double area()
// método
implementación
del método area()
//
abstracto
{
public double area()
abstract
public
double
area();
return
PI
*
radio
*
radio
{
}}
return base * alt
Curso 2008/2009
}
}
8
Slide 9
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Utilidades
• 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
9
Slide 10
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Interfaces
• 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
Curso 2008/2009
10
Slide 11
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Ejemplo de Interfaz
interface NombreInterface{
tipo_devuelto método1(lista de parámetros);
...
tipo_devuelto métodoN(lista de parámetros);
}
Curso 2008/2009
11
Slide 12
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Ejemplo de Interfaz
class
Racional
implements
class Prueba{
Complejo
implementsComparacion{
Comparacion{
class
interface
Comparacion{
int
den;
int num,
pReal,
pImaginaria;
public
static
void main (String [] args){
Racional
(int
//código}}
boolean
iguales(Comparacion
c);
Complejo
(intn,r, int
int d){
i){ //código
Comparacion
c = new Complejo(2,3);
int parteReal(){ //código }
Racional
r= new
Racional(3,5);
void
visualiza();
int
numerador(){
//código
}
...
c. visualiza(); // número complejo
...
}
boolean iguales(Comparacion c){
}
boolean iguales(Comparacion
c){
Complejo com = (Complejo)
c;
c=r;
Racional
ra ===com.pReal
(Racional) c; &&
return pReal
return num ==//número
ra.num
&&racional
den ==
c.visualiza();
pImaginaria
== ra.den;
com.pImaginaria;
}}}
void
void visualiza(){
visualiza(){
System.out.println(“número
System.out.println(“número racional”);
complejo”);
}}
}}
Curso 2008/2009
12
Slide 13
●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
13
Slide 14
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
• 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);
c=r;
Curso 2008/2009
14
Slide 15
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
• 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;
}
Curso 2008/2009
15
Slide 16
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
• 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 Caja{
//
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.
Curso 2008/2009
16
Slide 17
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
• Para crear un objeto de tipo Caja, lo instanciaremos
utilizando una clase específica en lugar de T.
Caja caja1 = new Caja();
//crea una caja de objetos Papel(se supone
//implementada)
Caja caja2 = new Caja();
//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.
Curso 2008/2009
17
Slide 18
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
public class Pair {
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 par1 = new Pair (new String("Pedro"),33);
// No necesario hacer cast
System.out.println(par1.getClave().charAt(0));
System.out.println(par1);
Pair par2 = new Pair (new Persona("Maria",11), 9.5);
// No necesario hacer cast
System.out.println(par2.getClave().getEdad());
// se supone implementado el método getEdad() en la clase Persona
System.out.println(par2);
}
}
Curso 2008/2009
18
Slide 19
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
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.
Curso 2008/2009
19
Slide 20
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Ejemplo
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
20
Slide 21
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Tipos
Throwable
Error
Exception
...
RunTimeException
IOException
NullPointerException
EOFException
IndexOutOfBoundsException
FileNotFoundEx
NegativeArraySizeEx.
MalformedURLEx
AWTException
…
…
Curso 2008/2009
21
Slide 22
●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
22
Slide 23
●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
23
}
Prácticas A.E.D.I.
Rosalía Laza Fidalgo
Reyes Pavón Rial
Curso 2008-2009
Slide 2
Índice
•
•
•
•
•
Introducción
Herencia
Interfaces
Genéricos
Excepciones
Curso 2008/2009
2
Slide 3
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Introducción
• 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.
Curso 2008/2009
3
Slide 4
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Introducción
• 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”);
}
Curso 2008/2009
4
Slide 5
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Herencia
• La herencia modela las relaciones ES-UN/A.
clase padre
clase hijoA
clase base
clase hijoB
clase derivada
• 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.
Curso 2008/2009
5
Slide 6
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Herencia
• Ejemplo:
class Persona{
…
}
class Estudiante extends Persona{
…
}
class Trabajador extends Persona{
…
}
Curso 2008/2009
6
Slide 7
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Herencia
• 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)
Curso 2008/2009
7
Slide 8
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Ejemplo
public abstract class Figura
extends
Figura
public class
class Circulo
Rectangulo
extends
Figura
{public
{
{ //atributos
//
atributos
//
atributos
private
double base;
private
Stringradio;
nombre;
private double
private double alt;
//constructor
//constructor
//
constructor
public
(double
r) largo, doble ancho)
public Circulo
Rectangulo
(double
public
Figura( String nom )
{
{
super
{
super (“circulo”);
(“rectangulo”);
r;
nombre radio
= nom;
base
==largo;
alt = ancho;
}}
//
} implementación del método area()
public
double area()
// método
implementación
del método area()
//
abstracto
{
public double area()
abstract
public
double
area();
return
PI
*
radio
*
radio
{
}}
return base * alt
Curso 2008/2009
}
}
8
Slide 9
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Utilidades
• 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
9
Slide 10
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Interfaces
• 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
Curso 2008/2009
10
Slide 11
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Ejemplo de Interfaz
interface NombreInterface{
tipo_devuelto método1(lista de parámetros);
...
tipo_devuelto métodoN(lista de parámetros);
}
Curso 2008/2009
11
Slide 12
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Ejemplo de Interfaz
class
Racional
implements
class Prueba{
Complejo
implementsComparacion{
Comparacion{
class
interface
Comparacion{
int
den;
int num,
pReal,
pImaginaria;
public
static
void main (String [] args){
Racional
(int
//código}}
boolean
iguales(Comparacion
c);
Complejo
(intn,r, int
int d){
i){ //código
Comparacion
c = new Complejo(2,3);
int parteReal(){ //código }
Racional
r= new
Racional(3,5);
void
visualiza();
int
numerador(){
//código
}
...
c. visualiza(); // número complejo
...
}
boolean iguales(Comparacion c){
}
boolean iguales(Comparacion
c){
Complejo com = (Complejo)
c;
c=r;
Racional
ra ===com.pReal
(Racional) c; &&
return pReal
return num ==//número
ra.num
&&racional
den ==
c.visualiza();
pImaginaria
== ra.den;
com.pImaginaria;
}}}
void
void visualiza(){
visualiza(){
System.out.println(“número
System.out.println(“número racional”);
complejo”);
}}
}}
Curso 2008/2009
12
Slide 13
●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
13
Slide 14
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
• 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);
c=r;
Curso 2008/2009
14
Slide 15
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
• 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;
}
Curso 2008/2009
15
Slide 16
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
• 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 Caja
//
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.
Curso 2008/2009
16
Slide 17
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
• Para crear un objeto de tipo Caja, lo instanciaremos
utilizando una clase específica en lugar de T.
Caja
//crea una caja de objetos Papel(se supone
//implementada)
Caja
//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.
Curso 2008/2009
17
Slide 18
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Genéricos
public class Pair
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
// No necesario hacer cast
System.out.println(par1.getClave().charAt(0));
System.out.println(par1);
Pair
// No necesario hacer cast
System.out.println(par2.getClave().getEdad());
// se supone implementado el método getEdad() en la clase Persona
System.out.println(par2);
}
}
Curso 2008/2009
18
Slide 19
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
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.
Curso 2008/2009
19
Slide 20
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Ejemplo
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
20
Slide 21
●Introducción
● Herencia ● Interfaces ● Genéricos ● Excepciones
Tipos
Throwable
Error
Exception
...
RunTimeException
IOException
NullPointerException
EOFException
IndexOutOfBoundsException
FileNotFoundEx
NegativeArraySizeEx.
MalformedURLEx
AWTException
…
…
Curso 2008/2009
21
Slide 22
●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
22
Slide 23
●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
23
}