Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Qué son las interfaces en C++

Antonio José Checa Bustos
  • Escrito por Antonio José Checa Bustos el 31 de Octubre de 2018
  • 1 min de lectura | Programación
Qué son las interfaces en C++
El reproductor de video será cargado en breves instantes.

Qué es una clase abstracta en C++

Una clase abstracta en C++ es aquella que tiene alguno de sus métodos virtuales puro.

Un método virtual puro es un método que se define en la clase padre, y además obliga a las clases hijas a que se definan o lo declaren como virtual puro, para que sus clases hijas a su vez lo definan.

¿Para qué sirve una clase abstracta?

Una interfaz sirve para desacoplar y crear un entorno conjunto, con el que podamos comunicarnos y sepamos que no cambia, y que además, la implementación de abajo pueda tener sus clases derivadas, o sus objetos, pero nosotros, como cliente de esa intefaz, no controlamos.

Por ejemplo, si tenemos un motor gráfico que utiliza DirectX en Windows y utiliza OpenGL en Linux, o Vulkan, que es el nuevo estándar. Como cliente no nos tiene que importar si hay que llamar a uno u otro, sino que tenemos que tener nuestra interfaz, llamarla e indicarle, por ejemplo, que queremos pintar un círculo, sin importarnos que lo pinte en DirectX o en OpenGL.

Tipos de clases abstractas

Hay dos formas de clases abstractas:

  • Puras: Son aquellas en las que todos sus métodos son virtuales puros y que no tienen ninguna variable definida que no sea constante.
  • Mixtas: Son que aquellas que definen una parte de funcionalidad y pueden tener variables.

Ejemplo práctico

#include <iostream>

class Base
{
    public:
    virtual void foo() = 0;
};

class Hija : public Base
{
};

int main()
{
    Hija h;

    return 0;
}

En este ejemplo vemos que el compilador nos indica un error. Es debido a que una de las peculiaridades de las clases abstractas o clases interfaces es que no se puede crear una instancia de ellas. Por lo tanto, al no estar definido foo, provoca el error.

Para corregirlo, hemos de hacerlo de la siguiente forma:

#include <iostream>

class Base
{
    public:
    virtual void foo() = 0;
};

class Hija : public Base
{
    public:
    void foo() override
    {
        std::cout << “Estoy en la clase hija del canal Openwebinars”;
    }
};

int main()
{
    Hija h;
    h.foo();
    getchar();

    return 0;
}

Si compilamos y ejecutamos lo anterior, nos muestra la clase Hija.

Usos de las clases abstractas

Esto se puede combinar con todo tipo de patrones diseño, con lo que se pueden hacer multitud de interfaces que nos permitan desacoplar nuestra librería o nuestro programa, de otras personas o clientes que lo utilicen, incluso si nosotros somos los mismos clientes.

Cuántas menos dependencias conjuntas haya, siempre habrá más posibilidades de cortar y modificar una parte.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Por qué aprender C++

Por qué aprender C++

Programación

06 de Septiembre de 2018

Si están pensando en aprender a programar en C++,  te contamos los motivos por los que aprender C++ como lenguaje de programación. En este artículo vemos las ventajas y desventajas de est...

Qué son las interfaces en C++

Qué son las interfaces en C++

Programación

31 de Octubre de 2018

Aprende de forma rápida y con un caso práctico qué son las clases abstractas o interfaces en C++.

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars