Junior — Middle
95
Объектілі-бағытталған бағдарламалауда Лисковтың ауыстыру принципінің мысалын бере аласыз ба?
AI-дан жауап
sobes.tech 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-ті сақтау үшін, немесе кластардың мұрагерлік құрылымын өзгерту керек, немесе интерфейстерді бөлу керек, сонда ұрпақтар қолдау көрсетпейтін мінез-құлықты жүзеге асыруға мәжбүр болмайды.