Sobes.tech
Junior — Middle

Liskov'un Yerine Geçme Prensibi'nin ne anlama geldiğini ve nesne yönelimli programlamada nasıl uygulandığını açıklayın.

sobes.tech yapay zeka

AI'dan gelen yanıt

Liskov İkame Prensibi (Liskov Substitution Principle, LSP), nesne yönelimli programlamada SOLID ilkelerinden biridir. Bu ilke, alt sınıf nesnelerinin, temel sınıf nesneleriyle değiştirilirken programın doğruluğunu değiştirmemesi gerektiğini belirtir.

Basitçe söylemek gerekirse, B sınıfı A sınıfından türemişse, B sınıfı nesneleri, beklenmedik hatalar veya mantık değişiklikleri olmadan A sınıfı nesneleri yerine kullanılabilir olmalıdır.

Bu, alt sınıfın şu kurallara uymasını sağlayarak başarılır:

  • Temel sınıfın değişmezlerini ihlal etmemeli.
  • Metodların önkoşullarını (daha katı giriş verileri gerektiren) daraltmamalı.
  • Sonkoşulları (daha az garanti edilen sonuçlar sağlayan) genişletmemeli.

Örnek:

class Bird {
    func fly() {
        print("Kuş uçuyor")
    }
}

class Sparrow: Bird {
    override func fly() {
        print("Serçe uçuyor")
    }
}

// Penguin sınıfı eklenirse ve uçmayı bilmeyen bir sınıf olursa LSP ihlal edilir
class Penguin: Bird {
    override func fly() {
        fatalError("Penguen uçamaz")
    }
}

Bu örnekte, Penguin, Bird yerine kullanılamaz hale gelir ve LSP ihlal edilir. Uçan kuşlar için ayrı bir arayüz tanımlamak daha doğru olur.

Bu şekilde, LSP, genişletilebilir ve sürdürülebilir sınıf hiyerarşileri oluşturmaya yardımcı olur ve nesnelerin değiştirilmesi sırasında beklenmedik hatalardan kaçınır.