OOP yaklaşımında olmazsa olmaz olan Coupling-Cohesion kavramlarından bahsedeceğiz. Bu kavramlar yazılımın kalitesini etkiler ve çok önemlidir.
Coupling
Bildiğimiz üzere sınıflar arasında bir bağlılık vardır. Bir sınıf içerisinde farklı sınıfların işlevlerinden yararlanıyoruz. Düşünün ki bağlı olduğunuz sınıf içerisinde herhangi bir değişiklik olduğunda bizim sınıfımızı da etkileyebilecektir. Bu istenmeyen bir durumdur. Bunun yerine o sınıfa sıkı sıkıya bağlı olmak yerine esnek bağlanmak gerekir. Bir sınıfın diğer bir sınıfa bağlılığına Coupling denir. Az bağımlı olmasına Low(Loose) coupling denir.
Low coupling sağlamak için interface kullanılabilir veya bir sınıf içerisindeki değişkenleri iyi encapsulation yaparak sadece getter/setter ile diğer sınıfların kullanımına açmak gibi örnekler verebiliriz.
Cohesion
SOLİD Prensiplerinden daha önceki yazılarımda bahsetmiştim. Solid prensiplerinin S harfine denk gelen Single Responsibility prensibini konu alan bir kavramdır. Bir sınıfın oluşturulma amacına ne kadar bağlı olduğunu gösterir. Amacına uygun yazılmış sınıflara high cohesion denir.
Yazılımda istenen durum Loose coupling ve high cohesion olmasıdır.