viernes, 18 de enero de 2008

Interfaces e implementaciónes

En esta entrada se pretende introducir las interfaces desde los siguientes puntos de vista prácticos:


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
}



  1. ¿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: