Permite que una clase exponga sus servicios y datos por medio de un conjunto de definiciones de QUE es lo que proporciona.
Se tiene un sistema en el cual se procesa la informacion, se captura y se imprime. Se tiene 3 sistemas de computo que procesan, capturan e imprimen respectivamente. Se necesita establecer una relacion cliente-proveedor entre distintos modulos de software. Dicha relacion se establece por medio de interfases.
Definir una interfase. Codificar todos los modulos relacionados (clientes) alrededor de la interfase (NUNCA con una implementacion) Construir los modulos que cumplen el contrato de la interfase.
Permite comunicar varios modulos entre si a traves de un contrato, que es la interfase. Tecnicas de encapsulamiento se ven beneficiadas. Permite implantar herencia multiple en lenguajes que carecen de ella o es muy caro y/o confuso hacerlo, usando delegacion
Se usa en ambientes como CORBA, J2EE y todo lo que este relacionado con frameworks Se necesita representar en un sistema de computo el concepto de una Cohete, Auto y la combinacion de ambos. El Auto se representa como una interfase, que solo corre
public interface AutoIF { .... }See the complete code for AutoIF here.
public void correr();
El Cohete se representa como una interfase, que solo vuela
public interface CoheteIF { .... }See the complete code for CoheteIF here.
public void volar();
Y para unir ambas interfases, se define la interfase CoheteAutoIF
public interface CoheteAutoIF extends CoheteIF,AutoIF { .... }See the complete code for CoheteAutoIF here.
Por cada interfase, se proporciona una implementacion
public class Cohete implements CoheteIF { .... }See the complete code for Cohete here.
public void volar() { System.out.println("V"); }
public class Auto implements AutoIF { .... }See the complete code for Auto here.
public void correr() { System.out.println("C"); }
La clase CoheteAuto implementa al CoheteAutoIF, pero utiliza delegacion para implementar los metodos de las interfases CoheteIF y AutoIF
public class CoheteAuto implements CoheteAutoIF { .... }See the complete code for CoheteAuto here.
private Cohete _coh= new Cohete(); private Auto _aut = new Auto(); public void correr() { _aut.correr(); } public void volar() { _coh.volar();}
Las clases que usan estos modulos, se comunican via las interfases
public class EstacionEspacial { .... }See the complete code for EstacionEspacial here.
public void lanzar(CoheteIF ch) { ch.volar(); }
public class Carretera { .... }See the complete code for Carretera here.
public void alojar(AutoIF carro) { carro.correr(); }
El diagrama UML es el siguiente: