Mautic Pixel

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
Qué son las interfaces en C++

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.

Sigue aprendiendo a diseñar y asimilar patrones e interfaces para tus programas con este Curso de Patrones de diseño e interfaces en C++

curso-cpp-interfaces

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

Relacionado

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

Por qué aprender C++

Por qué aprender C++

Lenguajes de 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...

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