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