interface Futbolista{
public Balon pasaBalon();
}
interface Bailarin{
public cambiaPareja(Bailarin nuevo);
}
interface Escalador{
public void cambiaRoca();
}
class Persona implements Futbolista, Bailarin, Escalador{
... implementar metodos
}
class Sevillano extends Persona{
... implementar metodos
}
class Suizo extends Persona{
... implementar metodos
}
- ¿para qué sirven o qué ventajas aportan?
- Para aplicar polimorfismo: es decir para que un determinado objeto, en una determinada situación pueda tratarse de una forma u otra. En el ejemplo anterior, si nuestro objeto persona se utiliza en un ámbito relacionado con el futbol, es mejor tratarlo a través de su interface de Futbolista, de esa forma en el ámbito o situación de un programa de futbol, nuestro objeto no mostrará a los otros objetos relacionados sus metodos relacionados con Bailarin o con Escalador.
- Esto lanzaría error: Futbolista f=new Persona(); f.cambiaPareja(parejaNueva);
- El polimorfismo se lleva a cabo a través del casting:
- Persona p=new Persona(); Futbolista f=(Futbolista)p;
- Para generar código robusto o lo que es lo mismo para proporcionar independencia a los objetos. Esto quiere decir que si cambiamos una clase de nuestro código, el código afectado por ese cambio en teoría debe corresponderse solo a esa clase (y su clase de prueba). Lo contrario a un programa robusto es un programa frágil, es decir aquel que sufre cualquier modificación realizada en alguna de sus partes como si se realizara en todo el sistema.
- falta incluir diagrama UML!!
No hay comentarios:
Publicar un comentario