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.