Sobes.tech
Middle+

Hoe bereken je het oppervlak van een rechthoek en een vierkant, en welke aspecten van de relatie tussen hen schenden het substitutieprincipe van Barbara Liskov?

sobes.tech AI

Antwoord van AI

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

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

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

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