Одноуровневое наследование в C++

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

Введение

В этом лабораторном задании вы научитесь демонстрировать концепцию одиночного наследования в языке программирования C++. Вы создадите два класса: родительский класс и дочерний класс, при этом дочерний класс (производный класс) наследует характеристики (свойства и методы) родительского класса (базового или суперкласса).

Создайте файл main.cpp

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

touch ~/project/main.cpp

Напишите код

Скопируйте и вставьте следующий код в файл main.cpp:

#include <iostream>
// Подключаем необходимые библиотеки

using namespace std;

// Объявляем родительский класс (базовый класс) под названием "Shape"
class Shape {
    public:
        float area(float l, float b) { // Метод для вычисления площади фигуры
            return (l * b);
        }

        float perimeter(float l, float b) { // Метод для вычисления периметра фигуры
            return (2 * (l + b));
        }
};

// Объявляем дочерний класс (производный класс) под названием "Rectangle", который наследует класс Shape
class Rectangle: private Shape {
    private:
        float length,
        breadth;

    public:
        Rectangle(): length(0.0), breadth(0.0) {} // Конструктор по умолчанию класса Rectangle

        void getDimensions() { // Метод для получения размеров прямоугольника от пользователя
            cout << "\nВведите длину прямоугольника: ";
            cin >> length;

            cout << "\nВведите ширину прямоугольника: ";
            cin >> breadth;
        }

        // Метод для вычисления периметра прямоугольника с использованием класса Shape
        float perimeter() {
            // Вызывает метод perimeter() класса Shape и возвращает результат.
            return Shape::perimeter(length, breadth);
        }

        // Метод для вычисления площади прямоугольника с использованием класса Shape
        float area() {
            // Вызывает метод area() класса Shape и возвращает результат.
            return Shape::area(length, breadth);
        }
};

int main() {
    // Создаем объект класса Rectangle
    Rectangle rect;

    // Приветственное сообщение
    cout << "\n\nДобро пожаловать в программу по одиночному наследованию!\n";

    // Сообщение для пользователя
    cout << "\nКласс Rectangle наследуется от класса Shape.\n\n";

    // Получаем размеры прямоугольника от пользователя
    rect.getDimensions();

    // Вычисляем периметр прямоугольника с использованием родительского класса Shape и выводим результат
    cout << "\nПериметр прямоугольника, вычисленный с использованием родительского класса Shape: " << rect.perimeter() << "\n";

    // Вычисляем площадь прямоугольника с использованием родительского класса Shape и выводим результат
    cout << "Площадь прямоугольника, вычисленная с использованием родительского класса Shape: " << rect.area() << "\n\n";

    return 0;
}

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

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

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

Затем запустите код с использованием следующей команды:

./main

Понятите вывод

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

Welcome to Single Level Inheritance Program!

Rectangle class is derived from the Shape class.

Enter the length of the Rectangle: 5

Enter the breadth of the Rectangle: 10

Perimeter of the Rectangle computed using the parent Class Shape: 30
Area of the Rectangle computed using the parent Class Shape: 50

Программа запрашивает у пользователя длину и ширину прямоугольника. После получения размеров она вычисляет периметр и площадь с использованием функций perimeter() и area() из родительского класса Shape.

Резюме

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