Principio de Sustitución de Liskov (LSP)
El Principio de Sustitución de Liskov (LSP) establece que una clase derivada debe poder ser usada en lugar de su clase base sin alterar el comportamiento esperado del programa. En otras palabras, las subclases deben mantener las propiedades y funcionalidades de la clase base.
- ¿Por qué es importante?
Garantiza que el código sea reutilizable y extensible sin introducir errores o comportamiento inesperado cuando se utilizan subclases.
1. Ejemplo #
Código Malo (Violación del LSP) #
Problema: No todos los pájaros vuelan.
Cargando actividad al acercarte…
Código Bueno (Cumpliendo el LSP) #
Solución: Creamos 2 clases abstractas para diferenciar entre pájaros voladores y no voladores.
2. Beneficios de Aplicar el LSP #
- Reutilización del Código: Las subclases pueden ser usadas de manera intercambiable con la clase base sin problemas.
- Facilidad de Mantenimiento: No hay comportamientos inesperados al trabajar con subclases.
- Mayor Flexibilidad: Se pueden agregar nuevas subclases sin modificar el código existente.
Cargando actividad al acercarte…
Aplicar el Principio de Sustitución de Liskov (LSP) asegura que tu código sea más robusto, modular y libre de sorpresas al trabajar con herencia. 😊
Resumen del tema
Conceptos clave #
- Principio de Sustitución de Liskov (LSP): los objetos de un programa deben poder ser reemplazados por instancias de sus subtipos sin alterar la corrección del programa.
- Violaciones Comunes: subclases que lanzan excepciones no esperadas en métodos heredados (como un avestruz que lanza
UnsupportedOperationExceptional llamar avolar()) o que rompen las invariantes de la clase base. - Modelado Jerárquico Correcto: segregar jerarquías (ej.
PajaroVoladorvsPajaroNoVolador) para asegurar que todo método de la clase padre tenga sentido en sus derivados.
Qué debes recordar #
Cualquier subclase debe poder sustituir a su clase base sin romper el comportamiento esperado ni requerir comprobaciones especiales de tipo.