19 Aralık 2014 Cuma

Coupling - Cohesion

       S.a. Arkadaşlar,        
       Bugünkü yazımızda coupling ve cohesion kavramlarından bahsedeceğiz kısaca. Bu iki kavramı kullanmasak ne olur diye düşünebilirsiniz. Hatta kullanmadan kod da yazabilirsiniz fakat bir değişiklik yapmak istediğinizde beklemediğiniz hatalar alabilirsiniz veya sizden sonra gelen bir kişi sizin yazdığın kodlarda çok fazla zorlanabilir. Bu nedenle bu yöntemleri kullanmakta faydalı olduğunu düşünüyorum. Şimdi gelelim bu kavramaların ne olduğuna.
                Coupling: Bağlantı/bağlanma anlamına gelen coupling sınıfların birbiriyle olan ilişkisidir. Yani her bir sınıf diğer sınıflarla ne kadar ilişkilidir. Burada amaç her sınıf başka sınıf ile minimum etkileşimde bulunmasıdır. Tabi bu ne kadar mümkün olabilir o da ayrı mesele , fakat biz elimizden geldiğince sınıfları özgürleştirebilmeliyiz. Yoksa dediğimiz gibi bir kodu değiştirirken başka bir sınıfı da etkilediği için onu da göz önüne almalıyız. O da başka bir sınıfla ilişkiliyse işin içinden çıkmakta zorlanabiliriz. Buna ek olarak da değişkenlerimizi private olarak tanımlamamız mümkünse öncelik private tanımlamalıyız , olmazsa default, procted ve mecbur kalmadıkça public kullanmamalıyız. Şimdi kısa bir kod coupling konusunu umarım daha iyi anlayabiliriz.
class A {
                void metod() {
                               B b = new B();
                               b.isim = "Kotu Tanimlama";
                               System.out.println(b.isim);
                }
}
class B {
                public String isim;
}
//
class A {
                void metod() {
                               B b = new B();
                               b.setIsim("iyi Tanimlama");
                               System.out.println(b.getIsim());
                }
}

class B {
                private String isim;

    public String getIsim() {
        return isim;
    }

    public void setIsim(String isim) {
        this.isim = isim;
    }
       
}
                Şimdi de Cohesion konusunu bakıp yazıyı tamamlayalım. Burada ise her sınıfın çok iyi tanımlanmış olmasıdır. Örneğin bir odamız olduğunu düşünüp her yerde eşyalar var. Bunu mu tercih ederseniz yoksa ufak ufak odalarımızda ve her birinde ne olduğunu tam olarak bildiğimiz bir şey mi tercih edersiniz. İşte tam da bu noktada cohesion ortaya çıkıyor. Bir de kodla açıklarsak ;
Class Sinif(){
Void oda1(){}
Void oda2()[}
Void oda3(){}
}
//yerine
Class SinifOda1(){
Void oda1(){}
}
Class SinifOda2(){
Void oda2(){}
}

Class SinifOda3(){
Void oda3(){}
}


Hiç yorum yok:

Yorum Gönder