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.