Назад к вопросам
Junior — Middle
88
Что подразумевается под принципом открытости/закрытости в объектно-ориентированном программировании?
Ответ от нейросети
sobes.tech AI
Принцип открытости/закрытости (Open/Closed Principle) в объектно-ориентированном программировании означает, что программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации. Это значит, что поведение системы можно расширять без изменения уже существующего кода, что снижает риск внесения ошибок и упрощает поддержку.
Например, если нужно добавить новую функциональность, лучше создать новый класс, который расширяет существующий, чем менять исходный класс напрямую. В C++ это часто достигается через наследование и полиморфизм:
class Shape {
public:
virtual double area() const = 0; // абстрактный метод
};
class Rectangle : public Shape {
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double area() const override { return width * height; }
};
class Circle : public Shape {
double radius;
public:
Circle(double r) : radius(r) {}
double area() const override { return 3.14159 * radius * radius; }
};
Если нужно добавить новую фигуру, например, треугольник, достаточно создать новый класс Triangle, не меняя существующие классы.