Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Seminario4 Curso0506
Seminario4 Curso0506
Interfaces
Herencia mltiple
Interfaces Comparable y Comparator
Patrn Observer:
clase Observable
interfaz Observer
Interfaces de marca:
Cloneable
Serializable (persistencia)
1
Interfaces
Permite SIMULAR la herencia mltiple.
La definicin de un interfaz no tiene constructor, por lo que no es
posible invocar el operador new sobre un tipo interfaz.
Declaracin:
Interface es el modo de declarar un tipo formado slo por mtodos
abstractos (abstract) y constantes (final), ambos public,
permitiendo que se escriba cualquier implementacin para estos mtodos.
Aunque un interfaz puede extender mltiples interfaces, no puede
extender clases.
[public] interface MiInterfaz [ extends otraI1,otraI2,... ] {
double PI = 3.14159;
}
Interfaces
Implementacin:
Un interfaz se utiliza definiendo una clase que implemente el interfaz a
travs de su nombre
La clase debe proporcionar la definicin completa de todos los mtodos
declarados en el interfaz y, tambin, la de todos los mtodos declarados en
todos los superinterfaces de ese interfaz.
Una clase puede implementar ms de un interfaz, incluyendo varios
nombre de interfaces separados por comas. En este caso, la clase debe
proporcionar la definicin completa de todos los mtodos declarados en
todos los interfaces de la lista y de todos los superinterfaces de esos
interfaces.
Class MiClase extends OtraClase
implements UnInterfaz, OtroInterfaz {
...
}
El lenguaje de progra
Colisin de nombres
public interface Interfaz1 {
int CTE = 1;
void met();
}
public interface Interfaz2 {
int CTE = 789;
void met();
}
public class Clase implements Interfaz1, Interfaz2{
public void met(){ //nica semntica del mtodo
System.out.println(nica implementacin de met");
System.out.println(El valor de la cte es + Interfaz1.CTE);
}
}
El lenguaje de progra
Interfaces
OtraClase
UnInterfaz
supertipos
MiClase
Recomendaciones:
clase parcialmente diferida clases abstractas
clase sin ninguna implementacin Interfaz
Clase Arrays
static void sort (Object [] a)
Aunque el parmetro es un array de Object presupone que es un
array de objetos comparables (Comparable[])
static void sort (Object [] a, Comparator c)
El lenguaje de progra
Ejemplo Comparable
Compara los empleados de una empresa por antigedad
public class Empleado implements Comparable{
Arrays.sort(plantilla);
El lenguaje de progra
Ejemplo Comparator
El criterio para ordenar los empleados atendiendo al orden
alfabtico de sus nombres:
public class ComparadorAlfabetico implements Comparator{
public int compare(Object o1, Object o2){
Empleado e1 = (Empleado)o1;
Empleado e2 = (Empleado)o2;
return e1.getNombre().compareTo(e2.getNombre());
}
}
El lenguaje de progra
10
Patrn Observer
java.util.Observable
observers
java.util.Observer
update(Observable obj, Object arg)
addObserver(Observer o)
deleteObserver(Observer o)
notifyObservers (Object arg)
ConcreteObserver
aQuienMiro update+
ConcreteObservable
El lenguaje de progra
11
Patrn Observer
Java.util.Observable
observers
addObserver(Observer o)
deleteObserver(Observer o)
notifyObservers (Object arg)
Java.util.Observer
update(Observable obj, Object arg)
observer.update
Empleado
descansar()
jefe
Jefe
update+()
notifyObservers
El lenguaje de progra
12
El lenguaje de progra
13
El lenguaje de progra
14
Clonacin de objetos
public class Pila implements Cloneable {
public Object clone() throws CloneNotSupportedException{
return super.clone();
}
...
}
buffer
tope
2973
buffer
tope
objPila1
objPila2
El lenguaje de progra
15
Clone en profundidad
Redefinir clone para que haga una copia en profundidad
public class Pila implements Cloneable{
...
public Object clone() throws CloneNotSupportedException
{
Pila nuevaPila = (Pila)super.clone();
nuevaPila.buffer = (int[])buffer.clone();
return nuevaPila;
}
}
buffer
tope
2973
2973
buffer
tope
objPila2
objPila1
El lenguaje de progra
16
Este proceso no solo salva una imagen del objeto sino que tambin, de
manera recursiva, guarda todas las referencias que contiene dicho
objeto.
El lenguaje de progra
17
Efecto de la serializacin
obj1
obj2
SE DUPLICA
obj2
El lenguaje de progra
18
Efecto de la serializacin
obj1
obj2
El lenguaje de progra
19
Interfaz Serializable
El lenguaje de progra
20
El lenguaje de progra
21
plantilla
Ana
objSecretaria
Kike
objJefe1
Pedro
objJefe2
El lenguaje de progra
22
23
El lenguaje de progra
24
El lenguaje de progra
25