Назад к вопросам
Intern
87
questionbank
Назовите основные принципы объектно-ориентированного программирования.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Основные принципы ООП:
- Инкапсуляция: Объединение данных (атрибутов) и методов (функций), работающих с этими данными, в единую сущность - класс. Скрытие внутренней реализации объекта от внешнего мира.
- Наследование: Создание нового класса (производного) на основе существующего (базового), унаследовав его свойства и поведение. Позволяет повторно использовать код и создавать иерархии классов.
- Полиморфизм: Способность объектов разных классов реагировать на одинаковое сообщение (вызов метода) по-разному, в зависимости от их типа. Обеспечивает гибкость и расширяемость кода. Является применением принципа единой ответственности — единый вызов метода при работе под разными реализациями.
- Абстракция: Выделение существенных характеристик объекта и игнорирование несущественных деталей. Создание упрощенной модели объекта для удобства работы.
Пример полиморфизма в C++ с использованием виртуальных функций:
// Базовый класс
class Shape {
public:
// Виртуальная функция
virtual void draw() {
// Базовая реализация (может быть пустой или содержать общую логику)
}
// Деструктор должен быть виртуальным, если класс используется как базовая часть иерархии
virtual ~Shape() = default;
};
// Производный класс
class Circle : public Shape {
public:
void draw() override {
// Реализация для круга
// std::cout << "Drawing a circle" << std::endl;
}
};
// Производный класс
class Square : public Shape {
public:
void draw() override {
// Реализация для квадрата
// std::cout << "Drawing a square" << std::endl;
}
};
// Функция, использующая полиморфизм
void drawShape(Shape* shape) {
shape->draw(); // Вызывается конкретная реализация draw() в зависимости от типа объекта
}
// В main или другом месте:
// Circle circle;
// Square square;
// drawShape(&circle); // Вызовет Circle::draw()
// drawShape(&square); // Вызовет Square::draw()