[C con Clase] Por definicion...

Davidson, Steven srd4121 en njit.edu
Mie Oct 3 23:43:32 CEST 2012


Hola Ezequiel,

2012/10/3 Ezequiel Hernan Di Giorgi <hernan.digiorgi en gmail.com>:
> Una pregunta....
>
> Por definicion para que algo sea una interfase en c++. NO puede tener
> NINGUNA implementacion? O solo basta con que tenga un metodo virtual puro?
> Me estoy preguntanto esto.
>

En primer lugar, C++ no implementa el concepto de una clase interfaz,
como lo hace, por ejemplo, Java. Para implementar este concepto
nosotros mismos, efectivamente crearíamos una clase abstracta
definiendo funciones virtuales puras.

Conceptualmente, no tiene sentido que una clase interfaz tenga
implementaciones, sino solamente funciones miembro. La idea es que la
clase interfaz sirva de "contrato" para cualquier clase que herede de
ella y por tanto adopta su interfaz: su forma de comunicación con
cualquier objeto de esta clase. Por ejemplo,

class IO
{
public:
  virtual bool abrir() = 0;
  virtual bool cerrar() = 0;
  virtual bool enviar() = 0;
  virtual bool recibir() = 0;
};

class Red : public IO
{
...
};

class Fichero: public IO
{
...
};

class Cadena : public IO
{
...
};

class Consola : public IO
{
...
};

class Ventana : public IO
{
...
};

Así podemos usar cualquier objeto, seguramente polimórfico, como si se
tratare de un objeto de la clase 'IO' sin preocuparnos de la
implementación, porque esa parte pertenece a la clase original del
objeto, la cual se responsabiliza de ella.


Espero haber aclarado la duda.

Steven




Más información sobre la lista de distribución Cconclase