Sobes.tech
Junior — Middle

Nesne yönelimli programlamada Liskov'un yerine koyma ilkesine bir örnek verebilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Liskov İkame Prensibi (Liskov Substitution Principle, LSP), bir alt sınıfın nesnelerinin, temel sınıfın nesneleriyle değiştirilebilir olması gerektiğini ve bu değiştirmenin programın doğruluğunu bozmadığını belirtir.

C# örneği:

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

class Sparrow : Bird {
    public override void Fly() {
        Console.WriteLine("Serçe uçuyor");
    }
}

class Ostrich : Bird {
    public override void Fly() {
        throw new NotSupportedException("Devekuşu uçamaz");
    }
}

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

// Kullanım:
MakeBirdFly(new Sparrow()); // doğru
MakeBirdFly(new Ostrich()); // LSP'yi ihlal eder, çünkü istisna atar

Bu örnekte, Ostrich sınıfı, temel sınıf Bird'in davranışını (Fly metodu) desteklemediği için Liskov İkame Prensibi'ni ihlal eder ve istisna atar. LSP'yi korumak için, sınıf hiyerarşisi değiştirilmelidir veya arayüzler bölünmelidir, böylece alt sınıflar desteklenmeyen davranışları uygulamak zorunda kalmaz.