Diferencias programación orientada a objetos y programación funcional
Analizamos las diferencias entre la programamación orientada a objetos y la programación funcional, dos de los paradigmas más utilizados a la hora...
Aprende de forma rápida y con un caso práctico qué son las clases abstractas o interfaces en C++.
Tabla de contenidos
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.
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.
Hay dos formas de clases abstractas:
#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.
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++
Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.
También te puede interesar
Analizamos las diferencias entre la programamación orientada a objetos y la programación funcional, dos de los paradigmas más utilizados a la hora...
Si están pensando en aprender a programar en C++, te contamos los motivos por los que aprender C++ como lenguaje de programación....
Aprende a diseñar y asimilar patrones e interfaces para tus programas en C++ con la librería STL. .