Sobes.tech
Junior

Nesne yönelimli programlamada kalıtım ve bileşim arasındaki farklar nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kalıtım:

  • "-dır" (is-a) ilişkisi.
  • Alt sınıf, üst sınıfın alanlarını ve metodlarını miras alır.
  • Mevcut sınıfların özelleştirilmiş versiyonlarını oluşturmak için kullanılır.
  • Sert hiyerarşilere ve çoklu kalıtım sorunlarına yol açabilir.

Bileşim:

  • "-e sahip" (has-a) ilişkisi.
  • Sınıf, diğer sınıfların örneklerini alanları olarak içerir.
  • Görevlerin yerine getirilmesini içerik nesnelerine devreder.
  • Esneklik sağlar ve bileşenlerin değiştirilmesine imkan tanır.

Java örneği:

// Kalıtım
class Vehicle { // Temel sınıf
    void start() { /* ... */ }
}

class Car extends Vehicle { // Vehicle'dan kalıtım
    // Car'a özgü metodlar
}

// Bileşim
class Engine { // Bileşen
    void start() { /* ... */ }
}

class AnotherCar { // Bileşim kullanan sınıf
    private Engine engine; // Engine örneği içerir

    AnotherCar(Engine engine) {
        this.engine = engine;
    }

    void start() {
        engine.start(); // Devretme
    }
}

Farklar tablo şeklinde gösterilebilir:

Kriter Kalıtım Bileşim
İlişki "-dır" (is-a) "-e sahip" (has-a)
Sertlik Daha sert Daha esnek
Yeniden kullanım Sınıf hiyerarşileri aracılığıyla Nesne örnekleri aracılığıyla
Davranış değişikliği Metodların üzerine yazılması İçerik nesnelerinin değiştirilmesi
Uygulama Uzmanlaştırma, fonksiyonelliğin genişletilmesi Bileşenlerin birleştirilmesi, parçalardan oluşturulması

Bileşim, çoğu durumda kalıtımdan daha üstün olup, daha fazla esneklik ve sınıflar arasındaki bağımlılığı azaltır.