Встречается на собеседованиях • сегодня
Приведи пример нарушения приниципа подстановки Лисков (Liskov Substitution)
python
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def set_width(self, width):
self.width = width
def set_height(self, height):
self.height = height
def area(self):
return self.width * self.height
class Square(Rectangle):
def set_width(self, width):
self.width = width
self.height = width
text
def set_height(self, height):
self.width = height
self.height = heightdef test_rectangle(rect):
rect.set_width(5)
rect.set_height(4)
assert rect.area() == 20 # Для Square будет 16 - нарушение LSP!
rect = Rectangle(5, 5)
test_rectangle(rect) # OK
square = Square(5, 5)
test_rectangle(square) # AssertionError - нарушение LSP!
text
Квадрат наследуется от прямоугольника, но изменяет поведение родителя (изменение ширины влияет на высоту). Это нарушает LSP - код, работающий с Rectangle, ломается при подстановке Square. Правильнее было бы не наследовать Square от Rectangle.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы