Junior — Middle
Poți oferi un exemplu de cum se aplică principiul substituției Liskov în practica programării?
sobes.tech AI
Răspuns de la AI
Principiul de substituție Liskov (Liskov Substitution Principle, LSP) afirmă că obiectele unei subclase trebuie să poată fi utilizate în locul obiectelor clasei de bază fără a afecta corectitudinea programului.
Exemplu în JavaScript (Node.js):
class Bird {
fly() {
console.log('Pasărea zboară');
}
}
class Sparrow extends Bird {
fly() {
console.log('Grivele zboară');
}
}
class Ostrich extends Bird {
fly() {
throw new Error('Struțul nu poate zbura');
}
}
function makeBirdFly(bird) {
bird.fly();
}
const sparrow = new Sparrow();
makeBirdFly(sparrow); // Grivele zboară
const ostrich = new Ostrich();
makeBirdFly(ostrich); // Eroare — încălcare LSP
Aici, clasa Ostrich încalcă principiul de substituție Liskov, deoarece subclasa nu suportă comportamentul clasei de bază (metoda fly). Pentru a respecta LSP, este mai bine să împărțiți clasele în păsări care zboară și cele care nu zboară, de exemplu, prin interfețe sau clase de bază separate.