Sobes.tech
Junior — Middle

Obyekt yönümlü proqramlaşdırmada Liskovun yerinə qoyma prinsipinin nümunəsini verə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Liskov Əvəzolunma Prinsipi (Liskov Substitution Principle, LSP) deyir ki, alt sinifin obyektləri əsas sinifin obyektləri ilə əvəz oluna bilər və bu, proqramın düzgünlüyünü pozmadan edilə bilər.

C# nümunəsi:

class Bird {
    public virtual void Fly() {
        Console.WriteLine("Quş uçur");
    }
}

class Sparrow : Bird {
    public override void Fly() {
        Console.WriteLine("Qartal uçur");
    }
}

class Ostrich : Bird {
    public override void Fly() {
        throw new NotSupportedException("Ostrich uça bilməz");
    }
}

void MakeBirdFly(Bird bird) {
    bird.Fly();
}

// İstifadə:
MakeBirdFly(new Sparrow()); // düzgün
MakeBirdFly(new Ostrich()); // LSP-ni pozur, çünki istisna atır

Bu nümunədə, Ostrich sinfi, Bird əsas sinfinin davranışını (metod Fly) dəstəkləmədiyi üçün Liskov Əvəzolunma Prinsipini pozur və istisna atır. LSP-yə riayət etmək üçün, sinif hierarxiyasını dəyişmək və ya interfeysləri bölmək lazımdır ki, alt siniflər dəstəklənməyən davranışları həyata keçirməsinlər.