Saludos, la verdad es que con este post he comenzado a comprender muchas cosas que creeía saber pero que ahora veo que no.
Siempre he sabido que la interfaces son fundamentales en la programación para llegar al máximo nivel de abstracción y tener una especie de plantilla para que las clases que la implementan sepan que deben hacer por default, pero pues veo que esto tiene una importancia mayor y la aplicación en el filtrado de objetos que has hecho me parece genial, así que decidí hacer un código en java para probar cada cosa que decías ya que desde mi punto de vista es un lenguaje que exige programación orientada a objetos.
Cita:
Iniciado por enriqueplace Estimado Acoevil:
Bien, aquí es donde se necesitan las interfaces. Creas una interfaz Imprimible que tiene solo la firma del método getContendioImprimible y defines que la Impresora solo acepta objetos "imprimibles".
Lo que sucede es lo siguiente:
- Si modificas la clase para que valide la interfaz, cualquier objeto que quiera pasar por el método este le dirá que tiene que cumplir la interfaz Imprimible
- Cuando a la clase le agregas "implements Imprimible", automáticamente el sistema que dirá que te falta la implementación del método getContenidoImprimible
- Una vez que lo implementes, recién ahí podrás acceder al método "imprimir".
A eso se le llama "contrato de implementación", necesitas "firmar" un contrato para poder obtener un "servicio", lo cual esto asegura una serie de condiciones para poder usarlo.
Código PHP:
public interface Imprimible {
public void getContenidoImprimible();
}
public class Hoja implements Imprimible {
public void getContenidoImprimible(){
System.out.println("Soy una hoja");
}
}
public class Carro {
}
public class Impresora {
public void imprimir(Imprimible objetoImprimible){
objetoImprimible.getContenidoImprimible();
}
public static void main(String args[]){
Impresora impresora = new Impresora();
Hoja hoja = new Hoja();
Carro carro = new Carro();
impresora.imprimir(hoja);
impresora.imprimir(carro); // Produce error
}
}
]