Square extiende Rectangle, y set_width() en un cuadrado también cambia su altura. El código que fija width=2, height=5 y espera área 10 se rompe. ¿Qué principio se viola?
Opciones
- Single Responsibility
- Liskov Substitution (Opción correcta)
- Interface Segregation
- Dependency Inversion
Respuesta
Liskov Substitution
Por qué
Liskov Substitution dice: donde el código espera una clase padre, debes poder darle una clase hija sin romper nada.
El código escrito para Rectangle asume que ancho y alto cambian por separado. Un Square rompe esa suposición, así que no es un sustituto seguro aunque en matemáticas 'un cuadrado es un rectángulo'.
Solución: hazlas figuras separadas (o inmutables).
Recuerda
Una subclase debe cumplir todas las promesas de su padre.