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