Sobes.tech
Junior

Programlamada sınıf bileşimi hakkında ne biliyorsun?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bileşim, "içerir" veya "parça- bütün" ilişkisi olup, burada bir sınıf (bileşik) başka bir sınıfa (bileşen) veya onun örneklerine referans içerir. Bileşenin yaşam döngüsü genellikle bileşiğin yaşam döngüsüyle yakından ilişkilidir. Bu güçlü bir ilişkidir ve bileşen, bileşik olmadan var olamaz.

Bileşimin avantajları:

  • Esneklik: Davranışı değiştirmek, bileşenleri değiştirerek daha kolaydır.
  • Bağlılık azaltma: Sınıflar, kalıtıma kıyasla birbirine daha az bağımlıdır.
  • Yeniden kullanım: Aynı bileşenler farklı bileşiklerde kullanılabilir.

Örnek: Araba sınıfı, Motor sınıfına referans içerebilir. Eğer Araba yok edilirse, bu bağlamda Motor da var olmamayı bırakır.

class Motor {
    // motor özellikleri ve metodları
}

class Araba {
    private Motor motor; // bileşim

    public Araba() {
        this.motor = new Motor(); // bileşeni bileşiğin içinde oluşturma
    }

    // diğer araba özellikleri ve metodları
}

Ayrıca, agregasyondan farkı: Agregasyonda, bileşenler bağımsız olarak var olabilir (zayıf ilişki). Örnek: Üniversite sınıfı, Öğrenci sınıfının örneklerine referanslar içerir. Öğrenciler üniversiteden bağımsız var olabilir.

Android geliştirmede, bileşim aktif olarak kullanılır, örneğin ViewGroup'un View içerdiği durumlar, Dagger/Hilt ile bağımlılıkların yönetimi gibi. Bu, çoklu kalıtıma kıyasla tercih edilen bir yaklaşımdır (Java/Kotlin'de sınıflar için çoklu kalıtım yoktur) ve genellikle tek kalıtımdan daha esnektir.

class UserRepository(private val apiService: ApiService) {
    // UserRepository "kullanır" ApiService (bileşim/agregasyon)
    fun fetchUser(userId: String) {
        // apiService.getUser(userId)
    }
}