Junior — Middle
Tudsz példát mondani arra, hogyan alkalmazzák a Liskov-helyettesítési elvet a programozás gyakorlatában?
sobes.tech MI
Válasz az MI-től
A Liskov-helyettesítési elv (Liskov Substitution Principle, LSP) kimondja, hogy az alosztály példányai helyettesíthetik a szuperosztály példányait anélkül, hogy a program helyessége sérülne.
Példa JavaScriptben (Node.js):
class Bird {
fly() {
console.log('A madár repül');
}
}
class Sparrow extends Bird {
fly() {
console.log('A veréb repül');
}
}
class Ostrich extends Bird {
fly() {
throw new Error('A strucc nem tud repülni');
}
}
function makeBirdFly(bird) {
bird.fly();
}
const sparrow = new Sparrow();
makeBirdFly(sparrow); // A veréb repül
const ostrich = new Ostrich();
makeBirdFly(ostrich); // Hiba — LSP megsértése
Itt az Ostrich osztály megsérti a Liskov-helyettesítési elvet, mivel az alosztály nem támogatja a szuperosztály (a fly metódus) viselkedését. A LSP betartása érdekében célszerű az osztályokat repülő és nem repülő madarakra bontani, például interfészek vagy különálló alap osztályok segítségével.