Junior — Middle
Dasturlash amaliyotida Liskov o'rnini almashtirish printsipi qanday qo'llanilishini misol bilan keltira olasizmi?
sobes.tech AI
AIdan javob
Liskov o'rnash prinsipi (Liskov Substitution Principle, LSP) shundayki, kichik sinf ob'ektlari asosiy sinf ob'ektlari bilan almashtirilganda, dastur to'g'ri ishlashini buzmasligi kerak.
JavaScript (Node.js) misolida:
class Bird {
fly() {
console.log('Qush uchadi');
}
}
class Sparrow extends Bird {
fly() {
console.log('Qushqush uchadi');
}
}
class Ostrich extends Bird {
fly() {
throw new Error('Ostrich uchmaydi');
}
}
function makeBirdFly(bird) {
bird.fly();
}
const sparrow = new Sparrow();
makeBirdFly(sparrow); // Qushqush uchadi
const ostrich = new Ostrich();
makeBirdFly(ostrich); // Xato — LSP buzilishi
Bu yerda Ostrich sinfi, asosiy sinfning (fly metodining) xatti-harakatini qo'llab-quvvatlamaydi, shuning uchun Liskov o'rnash prinsipi buziladi. LSP ga rioya qilish uchun, uchadigan va uchmaydigan qushlarni ajratish yaxshiroq, masalan, interfeyslar yoki alohida asosiy sinflar yordamida.