Junior — Middle
Масаланед, ки мисол оварда метавонед аз принсипи ивазкунии Лисков дар барномасзии объектӣ?
sobes.tech AI
Ҷавоб аз AI
Принципи подстановки Лисков (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 нарушава принципа на Лисков, тъй като не поддържа поведението на базовия клас Bird (метода Fly), като хвърля изключение. За да спазваме LSP, трябва да променим йерархията на класовете или да разделим интерфейсите, така че подкласовете да не са принудени да реализират неподдържано поведение.