Junior — Middle
Môžeš uviesť príklad, ako sa v praxi programovania uplatňuje princíp Liskovovej substitúcie?
sobes.tech AI
Odpoveď od AI
Princíp Liskovovej náhrady (Liskov Substitution Principle, LSP) hovorí, že objekty podtriedy by mali byť zameniteľné s objektmi nadradovej triedy bez narušenia správnosti programu.
Príklad v JavaScript (Node.js):
class Bird {
fly() {
console.log('Vták lieta');
}
}
class Sparrow extends Bird {
fly() {
console.log('Vrabec lieta');
}
}
class Ostrich extends Bird {
fly() {
throw new Error('Pštros nemôže lietať');
}
}
function makeBirdFly(bird) {
bird.fly();
}
const sparrow = new Sparrow();
makeBirdFly(sparrow); // Vrabec lieta
const ostrich = new Ostrich();
makeBirdFly(ostrich); // Chyba — porušenie LSP
Tu, trieda Ostrich porušuje princíp Liskovovej náhrady, pretože podtrieda nepodporuje správanie nadradenej triedy (metódu fly). Aby sme dodržali LSP, je vhodné rozdeliť triedy na lietajúce a nelietajúce vtáky, napríklad pomocou rozhraní alebo samostatných základných tried.