Ответ
ООП — это парадигма программирования, в которой программа структурируется вокруг объектов, объединяющих данные (поля, атрибуты) и поведение (методы, функции), которые над этими данными оперируют. В C++ это реализуется через классы.
Четыре основных принципа ООП в C++:
-
Инкапсуляция: Сокрытие внутреннего состояния объекта и деталей реализации от внешнего кода. Доступ осуществляется через публичный интерфейс.
class BankAccount { private: // Скрытая реализация double balance; std::string accountNumber; public: // Публичный интерфейс void deposit(double amount) { if (amount > 0) balance += amount; } double getBalance() const { return balance; } // Геттер }; -
Наследование: Возможность создания нового класса (производного) на основе существующего (базового), заимствуя его поля и методы, и расширяя или изменяя их.
// Базовый класс class Vehicle { public: void startEngine() { /* общая реализация */ } }; // Производный класс class Car : public Vehicle { public: void openSunroof() { /* специфичное для Car */ } }; // Car теперь имеет методы startEngine() и openSunroof(). -
Полиморфизм: Способность объектов с одинаковым интерфейсом (например, унаследованным от одного базового класса) вести себя по-разному. В C++ достигается через виртуальные функции.
class Shape { public: virtual void draw() const = 0; // Чисто виртуальная функция virtual ~Shape() = default; // Виртуальный деструктор }; class Circle : public Shape { public: void draw() const override { std::cout << "Drawing a circlen"; } }; class Square : public Shape { public: void draw() const override { std::cout << "Drawing a squaren"; } }; // Полиморфное поведение void renderShape(const Shape& sh) { sh.draw(); // Вызовется правильная версия draw() в зависимости от типа объекта } -
Абстракция: Моделирование ключевых характеристик сущности, игнорируя нерелевантные детали. Абстрактные классы (с чисто виртуальными функциями, как
Shapeвыше) — прямой инструмент абстракции в C++.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶