Junior — Middle
Můžeš uvést příklad, jak se v praxi programování uplatňuje princip Liskovovy substituce?
sobes.tech AI
Odpověď od AI
Princip Liskovovy náhrady (Liskov Substitution Principle, LSP) říká, že objekty podtřídy by měly být zaměnitelné s objekty nadtřídy bez narušení správnosti programu.
Příklad v JavaScriptu (Node.js):
class Bird {
fly() {
console.log('Pták létá');
}
}
class Sparrow extends Bird {
fly() {
console.log('Vrabc létá');
}
}
class Ostrich extends Bird {
fly() {
throw new Error('Pštros neumí létat');
}
}
function makeBirdFly(bird) {
bird.fly();
}
const sparrow = new Sparrow();
makeBirdFly(sparrow); // Vrabc létá
const ostrich = new Ostrich();
makeBirdFly(ostrich); // Chyba — porušení LSP
Zde třída Ostrich porušuje princip Liskovovy náhrady, protože podtřída nepodporuje chování nadtřídy (metoda fly). Abychom LSP dodrželi, je vhodné rozdělit třídy na létající a nelétající ptáky, například pomocí rozhraní nebo samostatných základních tříd.