Loose Coupling, High Cohesion!
Loose Coupling, High Cohesion!
OOP'de oldukça önemli iki kavramdır. Coupling nesnelerin birbiri ile olan bağımlılıklarını temsil eder, Cohesion ise bir sınıf üzerine yüklenen sorumluluk olarak nitelendirilebilir.
Nesnesel programlamada sınıflar arası ilişkiler olmak zorundadır fakat bir programcı bu ilişkiler(bağımlılıkları) yönetirken esnek bir bağ kurmak zorundadır. Eğer nesneler arasında birden fazla bağımlılıklar oluşursa hem nesneleri yönetmek zor olur hemde yazılımın bakımı yapılırken herhangi bir değişiklikte bağımlı sınıfların bakımınıda yapmak zorunda kalırsınız.
En temel mantık burada şudur. Cohesion'ı yüksek tutmak. Bu kavramın türkçe karşılığı şudur. Her sınıf kendine özgü işi yapsın! Üzerine varolan context'inden fazla yük bindirmeyiniz. Mesela; Mail sınıfımız olsun ve mailGondermek metodu içinde olsun. Bu sınıfımızın implementasyonunu arayüz sınıfı üzerinden yaptıralım.
Böyle bir yapıda, sizin Kullanıcı, Kampanya, ÜrünBilgi vs. sınıflarınız Mail sınıfına ihtiyaç duyduklarında arayüz sınıfı üzerinde gidip, mailGondermek metodunu çağırırlar. Bütün sınıflar kendi için ayrı ayrı iş yapsalarda, Mail sınıfı kendi içinde tümleşik şekilde sadece tek bir iş yükünü koşturmaktadır. Bu da Mail sınıfının "cohesion" yani sınıf içi uyumunu yüksek olduğu anlamına gelir. (Örnek : Kullanıcı sınıfı, kullanıc ıkayıt olduğunda kayıtlı kullanıcıya kayıt maili göndermesi, Kampanya sınıfını oluşan kampanyaları kullanıcılara iletmesi, İndirim olan ürün bilgilerini ÜrünBilgi sınıfımızın kullanıcılara bildirmesi gibi..)
İyi çalışmalar.