Sobes.tech
Junior — Middle

Kas saaksite anda näidet, kuidas Liskovi asenduspõhimõte rakendub programmeerimise praktikas?

sobes.tech AI

Vastus AI-lt

Liskovi asenduspõhimõte (Liskov Substitution Principle, LSP) ütleb, et alamsüsteemi objektid peavad olema asendatavad põhiklassi objektidega, ilma et see mõjutaks programmi õiget tööd.

Näide JavaScriptis (Node.js):

class Bird {
  fly() {
    console.log('Lind lendab');
  }
}

class Sparrow extends Bird {
  fly() {
    console.log('Vihma lendab');
  }
}

class Ostrich extends Bird {
  fly() {
    throw new Error('Struts ei saa lennata');
  }
}

function makeBirdFly(bird) {
  bird.fly();
}

const sparrow = new Sparrow();
makeBirdFly(sparrow); // Vihma lendab

const ostrich = new Ostrich();
makeBirdFly(ostrich); // Viga — LSP rikkumine

Siin rikub Ostrich klass Liskovi asenduspõhimõtte, kuna alamklass ei toeta põhiklassi (fly meetod) käitumist. LSP järgimiseks on parem klassid jagada lendavateks ja mitte-lendavateks lindudeks, näiteks kasutades liideseid või eraldi põhiklasse.