Programa de Herança Hierárquica em C++

C++Beginner
Pratique Agora

Introdução

Neste laboratório, demonstraremos como criar um programa C++ que demonstra o conceito de Herança Hierárquica (Hierarchical Inheritance). Escreveremos um programa simples usando classes e objetos para entender melhor o tópico.

Criar o main.cpp

Criaremos um novo arquivo chamado main.cpp no diretório ~/project usando o seguinte comando:

touch ~/project/main.cpp

Escrever a classe Shape

A primeira coisa que precisamos fazer é definir a classe Shape, que servirá como a classe pai para as classes Rectangle e Triangle. Nesta classe, criaremos duas variáveis membro protegidas width (largura) e height (altura) que armazenarão a largura e a altura da forma.

Em seguida, criaremos uma função membro pública setDimensions que definirá essas dimensões e imprimirá uma mensagem no console.

Este é o bloco de código para a classe Shape que deve ser adicionado a main.cpp:

#include <iostream>
using namespace std;

class Shape {
    //protected member variables are only accessible within the class and its descendant classes
    protected:
        float width, height;
    //public members are accessible everywhere
    public:
        void setDimensions(float w, float h) {
            cout << "Setting the Dimensions using the parent Class: Shape\n";
            cout << "The dimensions are: " << w << " and " << h << "\n\n";

            width = w;
            height = h;
        }
};

Escrever a classe Rectangle

Em seguida, criaremos a classe Rectangle que herdará da classe Shape. Aqui, usaremos uma técnica de method overriding (substituição de método) para calcular a área do retângulo usando a função area().

Este é o bloco de código para a classe Rectangle que deve ser adicionado a main.cpp:

class Rectangle: public Shape {
    //Method Overriding
    public:
        float area() {
            return (width * height);
        }
};

Escrever a classe Triangle

Agora, vamos criar a classe Triangle que também herdará da classe Shape. Aqui, usaremos method overriding (substituição de método) para calcular a área do triângulo usando a função area().

Este é o bloco de código para a classe Triangle que deve ser adicionado a main.cpp:

class Triangle: public Shape {
    //Method Overriding
    public:
        float area() {
            return (width * height / 2);
        }
};

Escrever a função main()

Agora é hora de escrever a função main(). Aqui, criaremos objetos para as classes Rectangle e Triangle e definiremos suas dimensões.

Em seguida, usaremos a função area() para calcular a área tanto do Rectangle quanto do Triangle usando seus respectivos objetos.

Este é o bloco de código para a função main() que deve ser adicionado a main.cpp:

int main() {

    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << "===== Program to demonstrate the concept of Hierarchical Inheritance in CPP =====\n\n";

    //Declaring the Class objects to access the class members
    Rectangle rectangle;
    Triangle triangle;

    rectangle.setDimensions(5, 3);
    triangle.setDimensions(2, 5);

    cout << "\nArea of the Rectangle computed using Rectangle Class is : " << rectangle.area() << "\n\n\n";
    cout << "Area of the Triangle computed using Triangle Class is: " << triangle.area();

    cout << "\n\n\n";

    return 0;
}

Compilar e Executar o Programa

Para executar o programa no terminal, primeiro, navegue até ~/project. Em seguida, digite o seguinte comando para compilar o arquivo main.cpp:

g++ main.cpp -o main

Depois disso, execute o programa com o seguinte comando:

./main

Você deverá ver a saída no terminal.

Resumo

Neste laboratório, aprendemos como demonstrar o conceito de Herança Hierárquica (Hierarchical Inheritance) em CPP. Criamos a classe Shape, que foi a classe pai tanto de Rectangle quanto de Triangle. Em seguida, criamos objetos para cada uma das classes filhas e usamos a sobreposição de métodos (method overriding) para encontrar a área de um retângulo e de um triângulo.

Esperamos que este laboratório tenha ajudado você a desenvolver uma melhor compreensão de como a Herança Hierárquica funciona em C++. Para qualquer dúvida, sinta-se à vontade para entrar em contato conosco através da seção de comentários abaixo.