Sobes.tech
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-ті сақтау үшін, немесе кластардың мұрагерлік құрылымын өзгерту керек, немесе интерфейстерді бөлу керек, сонда ұрпақтар қолдау көрсетпейтін мінез-құлықты жүзеге асыруға мәжбүр болмайды.