Встречается на собеседованиях • сегодня

Что такое принцип открытости/закрытости (Open-Closed Principle)

Принцип открытости/закрытости (OCP) гласит, что сущности должны быть открыты для расширения, но закрыты для модификации. Это означает, что поведение класса можно изменять, не изменя его исходный код.

Пример нарушения OCP:

python
class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

class AreaCalculator:
def calculate(self, shapes):
total = 0
for shape in shapes:
if isinstance(shape, Rectangle):
total += shape.width * shape.height
return total

text

Правильный подход с соблюдением OCP:
```python
from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height
    
    def area(self):
        return self.width * self.height

class AreaCalculator:
    def calculate(self, shapes):
        return sum(shape.area() for shape in shapes)

Теперь можно добавлять новые фигуры, не изменяя класс AreaCalculator.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы