Sobes.tech
Junior — Middle

¿Se puede dar un ejemplo del principio de sustitución de Liskov en programación orientada a objetos?

sobes.tech AI

Respuesta de la IA

El Principio de Sustitución de Liskov (Liskov Substitution Principle, LSP) establece que los objetos de una subclase deben ser intercambiables con los objetos de la clase base sin violar la corrección del programa.

Ejemplo en C#:

class Bird {
    public virtual void Fly() {
        Console.WriteLine("El pájaro vuela");
    }
}

class Sparrow : Bird {
    public override void Fly() {
        Console.WriteLine("El gorrión vuela");
    }
}

class Ostrich : Bird {
    public override void Fly() {
        throw new NotSupportedException("La avestruz no puede volar");
    }
}

void MakeBirdFly(Bird bird) {
    bird.Fly();
}

// Uso:
MakeBirdFly(new Sparrow()); // correcto
MakeBirdFly(new Ostrich()); // viola el LSP, ya que lanza una excepción

En este ejemplo, la clase Ostrich viola el principio de sustitución de Liskov, ya que no soporta el comportamiento de la clase base Bird (el método Fly), lanzando una excepción. Para cumplir con el LSP, se debe modificar la jerarquía de clases o dividir las interfaces para que las subclases no tengan que implementar comportamientos no soportados.