Sobes.tech
Junior — Middle

Можеш ли да наведеш пример како се принцип Лисковеове замене примењује у пракси програмирања?

sobes.tech АИ

Одговор од АИ

Princip Liskovove zamene (Liskov Substitution Principle, LSP) kaže da objekti podklase treba da mogu biti zamenjeni objektima nadklase bez narušavanja ispravnosti programa.

Primer u JavaScript (Node.js):

class Bird {
  fly() {
    console.log('Ptica leti');
  }
}

class Sparrow extends Bird {
  fly() {
    console.log('Soko leti');
  }
}

class Ostrich extends Bird {
  fly() {
    throw new Error('Struć ne može da leti');
  }
}

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

const sparrow = new Sparrow();
makeBirdFly(sparrow); // Soko leti

const ostrich = new Ostrich();
makeBirdFly(ostrich); // Greška — narušava LSP

Ovde, klasa Ostrich narušava princip Liskovove zamene, jer podrška podklase ne podržava ponašanje nadklase (metod fly). Da bismo poštovali LSP, bolje je podeliti klase na ptice koje lete i one koje ne lete, na primer, putem interfejsa ili odvojenih osnovnih klasa.