Explique qué significa el principio de sustitución de Liskov y cómo se aplica en la programación orientada a objetos.
sobes.tech AI
Respuesta de la IA
El Principio de Sustitución de Liskov (Liskov Substitution Principle, LSP) es uno de los cinco principios SOLID en programación orientada a objetos. Establece que los objetos de una subclase deben ser intercambiables con los objetos de la clase base sin alterar la corrección del programa.
En términos simples, si la clase B hereda de la clase A, los objetos de la clase B deben comportarse de manera que puedan ser utilizados en lugar de los objetos de la clase A sin errores inesperados o cambios en la lógica.
Esto se logra al asegurarse de que la subclase no debe:
- Violar los invariantes de la clase base.
- Restringir las precondiciones de los métodos (exigir datos de entrada más estrictos).
- Ampliar las postcondiciones (proporcionar resultados menos garantizados).
Ejemplo:
class Bird {
func fly() {
print("El pájaro vuela")
}
}
class Sparrow: Bird {
override func fly() {
print("La gaviota vuela")
}
}
// Violación del LSP si se añade una clase Penguin que no puede volar
class Penguin: Bird {
override func fly() {
fatalError("El pingüino no puede volar")
}
}
En este ejemplo, Penguin viola el LSP, ya que no puede ser utilizado en lugar de Bird sin errores. Sería más correcto definir una interfaz separada para las aves que vuelan.
De esta manera, el LSP ayuda a crear jerarquías de clases que son fáciles de ampliar y mantener, evitando errores inesperados al reemplazar objetos.