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.



