Repaso
English

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

  1. Single Responsibility
  2. Liskov Substitution (Opción correcta)
  3. Interface Segregation
  4. 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.

Términos clave

Practica esta pregunta en Repaso