Sobes.tech
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.