Skip to content

Java Eğitimleri 30 – Kompozisyon(Has A) İlişkisi

Java’da kodlama yaparken sağlanan birtakım kolaylıklar vardır. Bu kolaylıklardan biri de kompozisyon ilişkisidir. Diğer kalıtım yazısında bahsettiğimiz extends kalıbı is a ilişkisi taşımaktaydı, bu yazıda göreceğimiz kompozisyon kalıbı ise has a ilişkisi taşımaktadır.

Peki nedir bu has a ilişkisi?

Kelime karşılığını inceleyecek olursak sahip olma anlamı taşımakta olan bu kavram, Java’da da anlamı gibi bir özelliği gerçekleştirmektedir. Yani, işlem yaptığımız sınıfta diğer sınıfa ait nesneleri kullanabilmemizi sağlar. Diğer sınıfta o nesne için hangi özellikleri belirttiysek, işlem yaptığımız sınıfta da nesnenin aynı özelliklerini kullanabilmemizi kolaylaştıracaktır.

 

 

Örneğin; evimiz kendi içerisinde bölümlerden oluşmaktadır: salon, mutfak, oturma odası, yatak odası vb. Mutfak sınıfında kayıtlı olan nesneler ev sınıfında da kullanılabilmektedir. Bu sorumuzun Java kodları aşağıdaki gibidir:

 

Çözüm için 3 sınıf oluşturuyoruz: ev sınıfı, mutfak sınıfı ve sonuçları yazdırmak için text sınıfı.

 

Mutfak adlı sınıf:

public class Mutfak {

    
    private int TabakSayisi;
    private String BeyazEsya;
    private String BeyazEsyaMarkasi;
    
    public Mutfak(int tabakSayisi, String beyazEsya, String beyazEsyaMarkasi) {
        super();
        TabakSayisi = tabakSayisi;
        BeyazEsya = beyazEsya;
        BeyazEsyaMarkasi = beyazEsyaMarkasi;
    }
    
    public void BilgileriGoster(){
        
        System.out.println("Tabak Sayısı       : " + this.TabakSayisi);
        System.out.println("Beyaz Eşya Türü    : " + this.BeyazEsya);
        System.out.println("Beyaz Eşya Markası : " + this.BeyazEsyaMarkasi);
        
    }

    public int getTabakSayisi() {
        return TabakSayisi;
    }

    public void setTabakSayisi(int tabakSayisi) {
        TabakSayisi = tabakSayisi;
    }

    public String getBeyazEsya() {
        return BeyazEsya;
    }

    public void setBeyazEsya(String beyazEsya) {
        BeyazEsya = beyazEsya;
    }

    public String getBeyazEsyaMarkasi() {
        return BeyazEsyaMarkasi;
    }

    public void setBeyazEsyaMarkasi(String beyazEsyaMarkasi) {
        BeyazEsyaMarkasi = beyazEsyaMarkasi;
    }
    
    
    
    
}

 

 

Ev adlı sınıf:

public class Ev {
    
    private Mutfak m; //Kompozisyon İşlemi
    
    
    
    public Ev(Mutfak m) {
        super();
        this.m = m;
    }



    public Mutfak getM() {
        return m;
    }



    public void setM(Mutfak m) {
        this.m = m;
    }




    
}

 

Text adlı sınıf:

public class Text {

    public static void main(String[] args) {
        
     Mutfak m = new Mutfak(36,"Buzdolabı","Bosh");
     Ev e = new Ev(m);
     
     e.getM().BilgileriGoster();
     
     
     
     
    }

}

 

Çıktımız:

 

Yukarıdaki örnekte de görüldüğü gibi, mutfak sınıfında oluşturduğumuz nesneleri ev sınıfı içinde kullanabildik. Bu değişkenleri kullanabilmek için de get metoduna ihtiyacımız var. Bu ihtiyacı da setter getter metodları ile gidermiş olduk.

Kompozisyon ilişkisini bu şekilde kolaylıkla oluşturabiliriz. Bu kavramın, yukarıdaki gibi basit sorularda avantajları görülemeyebilir ancak uzun kodlar kullanılan projelerde, kod sayısını azaltacak böylece oluşan karmaşıklığı minimize edecektir.

Bir sonraki yazımızda görüşmek üzere. İyi çalışmalar 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: