Sobes.tech
Middle+
124
questionbank

Как вычислить площадь прямоугольника и квадрата, и какие аспекты связи между ними нарушают принцип подстановки Барбары Лисков?

Ответ от нейросети

sobes.tech AI

Для прямоугольника: площадь = длина * ширина. Для квадрата: площадь = сторона * сторона или сторона^2.

Квадрат является частным случаем прямоугольника (прямоугольник с равными сторонами). Принцип подстановки Барбары Лисков нарушается, если класс Квадрат наследуется от Прямоугольник и методы SetШирина или SetДлина в классе Квадрат меняют обе стороны, чтобы сохранить равенство сторон, тогда как в классе Прямоугольник эти методы меняют только соответствующую сторону.

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

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