Junior — Middle
Объектке багытталган программалоодо Лисковдун алмаштыруу принцибин мисал келтире аласызбы?
sobes.tech AI
AIден жооп
Liskov алмаштыруу Prinsipi (Liskov Substitution Principle, LSP) деп айтылат, алысында, бир подкласс объекттери негизги класс объекттеринин ордуна колдонулушу керек, программаны туура эмес кылбай.
C# мисалы:
class Bird {
public virtual void Fly() {
Console.WriteLine("Куран учуп жатат");
}
}
class Sparrow : Bird {
public override void Fly() {
Console.WriteLine("Каракеч учуп жатат");
}
}
class Ostrich : Bird {
public override void Fly() {
throw new NotSupportedException("Острик учуп кете албайт");
}
}
void MakeBirdFly(Bird bird) {
bird.Fly();
}
// Колдонуу:
MakeBirdFly(new Sparrow()); // туура
MakeBirdFly(new Ostrich()); // LSP бузат, анткени исключение чыгарат
Бул мисалда, Ostrich классы Liskov алмаштыруу принципин бузуп жатат, анткени ал негизги класс Bird (метод Fly) иштебейт жана исключение чыгарат. LSPти сактоо үчүн, класстардын хиерархиясын өзгөртүү же интерфейстерди бөлүү керек, ошондо подкласстар колдоого алынбаган жүрүм-турумду ишке ашырбоого тийиш.