Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/03/2016, 05:11
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Interface c++ (clases abstractas)

Una interfaz especifica qué puntos de entrada ha de tener un sistema determinado. Una interfaz es independiente del código que haya por debajo, de tal forma que se puede cambiar toda la implementación que hay por debajo y sin embargo los clientes podrán seguir conectados.

Una interfaz es una especie de contrato, de tal forma que tanto el módulo que implementa la interfaz como el módulo que la usa pueden saber de antemano qué funcionalidad está disponible.

En C++ no existe el concepto de interfaz como tal. Lo más parecido es una clase virtual pura:

Código C++:
Ver original
  1. struct Interfaz
  2. {
  3.   // Destructor virtual para evitar problemas en la herencia
  4.   virtual ~Interfaz();
  5.  
  6.   virtual void Func1() = 0;
  7.  
  8.   virtual int Func2(int) = 0;
  9. };

Ya que en C++ no existe el concepto de interfaz hay que intentar ser muy cuidadoso a la hora de diseñar las interfaces. Una interfaz no ha de tener código. Si a una interfaz le añades código deja de ser una interfaz.

Como ves una interfaz no se diferencia demasiado de una clase cualquiera. Lo único que identifica en C++ una interfaz como tal es que todos sus miembros son abstractos.

¿Por qué usar interfaces? La utilidad de las interfaces es que no exponen la implementación... no hay código de por medio. Esta tontería permite desacoplar el código y reducir las dependencias.

Los servicios Web, por ejemplo, suelen exponer su funcionalidad pública mediante interfaces. Esto permite que cualquiera pueda diseñar un cliente que sea capaz de consumir información mediante dicha interfaz... si la implementación del servicio web cambia, al no verse modificada su interfaz, los clientes no notarán diferencia salvo quizás en los tiempos de respuesta o en la estabilidad.

Otro elemento software susceptible de ser diseñado mediante interfaces son los plugins de las aplicaciones. Al obligar a que un plugin implemente una interfaz determinada permites que la aplicación pueda saber desde el principio cómo va a poder manejar los plugin independientemente de su naturaleza.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.