Middle+
124
questionbank
Как вычислить площадь прямоугольника и квадрата, и какие аспекты связи между ними нарушают принцип подстановки Барбары Лисков?
Ответ от нейросети
sobes.tech AI
Для прямоугольника: площадь = длина * ширина.
Для квадрата: площадь = сторона * сторона или сторона^2.
Квадрат является частным случаем прямоугольника (прямоугольник с равными сторонами). Принцип подстановки Барбары Лисков нарушается, если класс Квадрат наследуется от Прямоугольник и методы SetШирина или SetДлина в классе Квадрат меняют обе стороны, чтобы сохранить равенство сторон, тогда как в классе Прямоугольник эти методы меняют только соответствующую сторону.
Пример нарушения:
// Изначально прямоугольник 2х3 (площадь 6)
Прямоугольник пр = new Квадрат(); // Подставляем Квадрат вместо Прямоугольника
пр.SetДлина(5); // Если Квадрат унаследован от Прямоугольника и SetДлина в Квадрате меняет обе стороны,
// то Квадрат становится 5х5, площадь 25.
// Если бы это был действительно Прямоугольник, он стал бы 5х3, площадь 15.
// Ожидаемое поведение (площадь 15) отличается от фактического (площадь 25).