Implementando el Polimorfismo Dinámico en C++

C++Beginner
Practicar Ahora

Introducción

En este laboratorio, implementaremos el concepto de polimorfismo en C++. El polimorfismo es un concepto del Programación Orientada a Objetos donde una sola función puede ser utilizada de diferentes maneras. Hay dos tipos de polimorfismo: polimorfismo de tiempo de compilación o polimorfismo estático y polimorfismo de tiempo de ejecución o polimorfismo dinámico. En este laboratorio, nos centraremos en el polimorfismo de tiempo de ejecución o dinámico.

Crea un nuevo archivo main.cpp

Primero, crearemos un nuevo archivo C++ llamado main.cpp en el directorio ~/project:

cd ~/project
touch main.cpp

Agrega código para implementar el polimorfismo

En este paso, crearemos una clase llamada Shape. La clase Shape tendrá una función virtual llamada area(). Luego crearemos dos clases Rectangle y Triangle que heredarán de la clase Shape y sobrescribirán la función virtual area(). Una vez creadas las clases, crearemos una matriz de objetos de la clase Shape y luego recorreremos la matriz para llamar a la función area() de cada objeto.

#include <iostream>
using namespace std;

class Shape {
    public:
        virtual float area() {
            return 0;
        }
};

class Rectangle: public Shape {
    public:
        float area() {
            cout << "Rectangle class area()" << endl;
            return 0;
        }
};

class Triangle: public Shape {
    public:
        float area() {
            cout << "Triangle class area()" << endl;
            return 0;
        }
};

int main() {
    Shape *shape;
    Rectangle rec;
    Triangle tri;

    shape = &rec;
    shape->area();

    shape = &tri;
    shape->area();

    return 0;
}

Compila y ejecuta el código

En este paso, compilaremos y ejecutaremos el código usando los siguientes comandos:

$ g++ main.cpp -o main
$./main

La salida del programa anterior será:

Rectangle class area()
Triangle class area()

Resumen

En este laboratorio, aprendimos cómo implementar el concepto de Polimorfismo en C++. Creamos una clase con una función virtual llamada Shape. Luego creamos dos clases Rectangle y Triangle que heredaron de la clase Shape y sobrescribieron la función virtual area(). Finalmente, creamos objetos de las clases Rectangle y Triangle y llamamos a la función area() usando el objeto de la clase base Shape, lo que resultó en la llamada a las respectivas clases.