Implementando Polimorfismo Dinâmico em C++

C++Beginner
Pratique Agora

Introdução

Neste laboratório, implementaremos o conceito de polimorfismo em C++. Polimorfismo é um conceito da Programação Orientada a Objetos (POO) onde uma única função pode ser usada de diferentes maneiras. Existem dois tipos de polimorfismo: polimorfismo em tempo de compilação ou polimorfismo estático e polimorfismo em tempo de execução ou polimorfismo dinâmico. Neste laboratório, focaremos no polimorfismo em tempo de execução ou polimorfismo dinâmico.

Criar um novo arquivo main.cpp

Primeiramente, criaremos um novo arquivo C++ chamado main.cpp no diretório ~/project:

cd ~/project
touch main.cpp

Adicionar código para implementar polimorfismo

Nesta etapa, criaremos uma classe chamada Shape (Forma). A classe Shape terá uma função virtual chamada area() (área). Em seguida, criaremos duas classes Rectangle (Retângulo) e Triangle (Triângulo) que herdarão a classe Shape e substituirão a função virtual area(). Uma vez que as classes forem criadas, criaremos um array de objetos da classe Shape e, em seguida, iteraremos pelo array para chamar a função 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;
}

Compilar e executar o código

Nesta etapa, compilaremos e executaremos o código usando os seguintes comandos:

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

A saída do programa acima será:

Rectangle class area()
Triangle class area()

Resumo

Neste laboratório, aprendemos como implementar o conceito de Polimorfismo em C++. Criamos uma classe com uma função virtual chamada Shape (Forma). Em seguida, criamos duas classes Rectangle (Retângulo) e Triangle (Triângulo) que herdaram a classe Shape e substituíram a função virtual area() (área). Finalmente, criamos objetos das classes Rectangle e Triangle e chamamos a função area() usando o objeto da classe base Shape, o que resultou na chamada às classes respectivas.