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