Программа на C++ с иерархическим наследованием

C++Beginner
Практиковаться сейчас

Введение

В этом лабораторном занятии мы покажем, как создать программу на C++, которая демонстрирует концепцию иерархического наследования. Мы напишем простую программу с использованием классов и объектов, чтобы лучше понять тему.

Создайте main.cpp

Мы создадим новый файл с именем main.cpp в каталоге ~/project с использованием следующей команды:

touch ~/project/main.cpp

Напишите класс Shape

Первое, что нам нужно сделать, — это определить класс Shape, который будет служить родительским классом для классов Rectangle и Triangle. В этом классе мы создадим два защищенных член-данных width и height, которые будут хранить ширину и высоту фигуры.

Затем мы создадим публичную член-функцию setDimensions, которая будет настраивать эти размеры и выводить сообщение на консоль.

Вот код блока для класса Shape, который должен быть добавлен в main.cpp:

#include <iostream>
using namespace std;

class Shape {
    //защищенные член-данные доступны только внутри класса и его дочерних классов
    protected:
        float width, height;
    //публичные члены доступны везде
    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;
        }
};

Напишите класс Rectangle

Далее мы создадим класс Rectangle, который будет наследоваться от класса Shape. Здесь мы будем использовать технику переопределения методов для вычисления площади прямоугольника с использованием функции area().

Вот код блока для класса Rectangle, который должен быть добавлен в main.cpp:

class Rectangle: public Shape {
    //Переопределение метода
    public:
        float area() {
            return (width * height);
        }
};

Напишите класс Triangle

Теперь создадим класс Triangle, который также будет наследоваться от класса Shape. Здесь мы будем использовать переопределение методов для вычисления площади треугольника с использованием функции area().

Вот код блока для класса Triangle, который должен быть добавлен в main.cpp:

class Triangle: public Shape {
    //Переопределение метода
    public:
        float area() {
            return (width * height / 2);
        }
};

Напишите функцию main()

Теперь настало время написать функцию main(). Здесь мы создадим объекты для классов Rectangle и Triangle и зададим их размеры.

Затем мы используем функцию area() для вычисления площади как для Rectangle, так и для Triangle с использованием соответствующих объектов.

Вот код блока для функции main(), который должен быть добавлен в 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;
}

Компилируйте и запустите программу

Для выполнения программы в терминале сначала перейдите в ~/project. Затем введите следующую команду для компиляции файла main.cpp:

g++ main.cpp -o main

После этого запустите программу с помощью следующей команды:

./main

На терминале вы должны увидеть вывод.

Резюме

В этом практическом занятии мы узнали, как демонстрировать концепцию иерархического наследования в C++. Мы создали класс Shape, который был родительским классом как для Rectangle, так и для Triangle. Затем мы создали объекты для каждого из дочерних классов и использовали переопределение методов для нахождения площади прямоугольника и треугольника.

Надеемся, что это практическое занятие помогла вам лучше понять, как работает иерархическое наследование в C++. Если у вас есть какие-либо вопросы, не стесняйтесь обращаться к нам в комментариях ниже.