Java Programming

Java Bileşimi ve Toplama: Derinlemesine İnceleme

Spread the love

Nesne yönelimli programlama (OOP), sağlam ve sürdürülebilir Java uygulamalarının temel taşıdır. İki önemli OOP kavramı olan kompozisyon ve agregasyon, genellikle kafa karışıklığına neden olur. Her ikisi de nesneler arasında “sahip olma” ilişkilerini temsil eder ancak etkileri ve kullanımları bakımından önemli ölçüde farklılık gösterir. Bu makale, bu farklılıkları pratik örneklerle açıklamaktadır.

İçindekiler Tablosu

  1. Java’da Kompozisyon
  2. Java’da Agregasyon
  3. Kompozisyon ve Agregasyon Karşılaştırması
  4. Java’da Kompozisyon ile Çalışma
  5. Java’da Agregasyon ile Çalışma

Java’da Kompozisyon

“Güçlü” bir sahip olma ilişkisi olan kompozisyon, parçanın yaşam döngüsünün tamamen bütünün bağlı olduğu bütün-parça ilişkisini ifade eder. Bütünün yok edilmesi, parçalarını da yok eder; parçalar bağımsız olarak var olamaz. Bir arabayı düşünün: bir motordan, tekerleklerden, kapılardan vb. oluşur. Arabayı hurdaya ayırmak bu bileşenleri de yok eder.

Java’da kompozisyon, genellikle bütün nesnesinin sınıfı içinde parça nesnelerinin doğrudan örneklenmesiyle uygulanır. Bütün nesnesi bu parçaları oluşturur ve yönetir.

Java’da Agregasyon

“Zayıf” bir sahip olma ilişkisi olan agregasyon, parçanın bütünün dışında bağımsız olarak var olabileceğini gösterir. Bütün nesnesi parçalara referanslar tutar, ancak yaşam döngüleri doğrudan bağlantılı değildir. Örneğin, bir üniversite “sahiptir” bir bölüme, ancak üniversite kapanmış olsa bile bölüm devam eder.

Java’da agregasyon, bütün nesnesinin parça nesnelerine referanslar tutmasını içerir. Bu referanslar ayrı olarak yönetilebilir. Parçalar bütün nesneden önce veya sonra oluşturulabilir ve yok oluşundan sonra da var olabilir.

Kompozisyon ve Agregasyon Karşılaştırması

Aşağıdaki tablo, temel farklılıkları özetlemektedir:

Özellik Kompozisyon Agregasyon
İlişki Güçlü “sahip olma” (bütün-parça) Zayıf “sahip olma”
Yaşam Döngüsü Parçanın yaşam döngüsü bütünün yaşam döngüsüne bağlıdır Parçanın yaşam döngüsü bütünün yaşam döngüsünden bağımsızdır
Sahiplik Bütün nesnesi parçaları sahiplenir ve yönetir Bütün nesnesi parçalara referanslar tutar
Parçanın Varlığı Parça bağımsız olarak var olamaz Parça bağımsız olarak var olabilir
Uygulama Bütün nesnesi içinde doğrudan örnek oluşturma Bağımsız parça nesnelerine referanslar

Java’da Kompozisyon ile Çalışma

Bir Motordan oluşan bir Araba ile kompozisyonu gösterelim:


class Motor {
    public void basla() { System.out.println("Motor çalıştı"); }
}

class Araba {
    private Motor motor; 

    public Araba() {
        this.motor = new Motor(); 
    }

    public void sur() {
        motor.basla();
        System.out.println("Araba sürüyor");
    }
}

public class Main {
    public static void main(String[] args) {
        Araba benimArabam = new Araba();
        benimArabam.sur();
    }
}

Motor nesnesi Araba sınıfı içinde oluşturulur. Motor‘un varlığı Araba‘ya bağlıdır.

Java’da Agregasyon ile Çalışma

Şimdi, bir üniversite ve bölümleriyle agregasyonu gösterelim:


class Bolum {
    private String ad;

    public Bolum(String ad) { this.ad = ad; }
    public String getAd() { return ad; }
}

class Universitesi {
    private Bolum[] bolumler; 

    public Universitesi(Bolum[] bolumler) {
        this.bolumler = bolumler;
    }

    public void bolumleriYazdir() {
        for (Bolum bolum : bolumler) {
            System.out.println("Bölüm: " + bolum.getAd());
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Bolum bilgisayar = new Bolum("Bilgisayar Bilimleri");
        Bolum matematik = new Bolum("Matematik");
        Bolum[] bolumDizisi = {bilgisayar, matematik};
        Universitesi uni = new Universitesi(bolumDizisi);
        uni.bolumleriYazdir();
    }
}

Universitesi, Bolum nesnelerine referanslar tutar. Bolum nesneleri bağımsız olarak var olur ve başka yerlerde kullanılabilir.

Kompozisyon ve agregasyonun anlaşılması, daha sağlam, sürdürülebilir ve iyi yapılandırılmış Java uygulamaları tasarlamayı sağlar. Seçim, tasarım gereksinimlerine ve nesnelerin istenen yaşam döngüsü yönetimine bağlıdır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir