Nesne Temelli Tasarım notları

Nesne Temelli Yaklaşım

  • Gerçek hayat kavramları olarak düşünmeli (Nesneler, Özellikleri, Roller, Sorumluluklar)
  • Ortak noktaların belirlemeye çalışmalı (Soyutlama – Abstraction)
  • Sistemin sorumluluklarının sınıflara dağıtılması
    • Sınıflar, işbirliği içinde çalışmalı
    • Herkesin asıl sorumluluğu yapmasını sağlamalı (Seperation of concerns)
    • İsteği, asıl sorumluluk sahibi olana yönlendirmeli (Delegation)

Nesne Temelli Tasarım

  • İyi bir tasarımda, sınıflar yüksek yakınlık (Highly Cohesive) ve düşük bağlılık (loosely coupled) yaklaşımlarını sağlamalıdır.
  • Mümkünse sınıflar arasındaki sıkı bağımlılıktan kaçınılmalı (Tight Coupling)
    • Sınıf A üzerinde yapılan değişiklik, Sınıf B’ yi etkiliyorsa, Sınıf B, Sınıf A’ya sıkı bağlı denir.
    • Sınıf A, Sınıf B nin detaylarına bağlı olmamalıdır.
  • Bağımlılık derecesini düşürmeye çalışmalı
    • Düşük/Gevşek bağlılık (Loose – Light – Low Coupling)
    • Direkt bağımlılığın kaldırılması(Decoupling), Dolaylı bağımlılık sağlama
  • Sınıf içindeki metotlar, yüksek yakınlıkta olmalı (Highly Cohesive)
    • Fonksiyonel olarak ilişkili metotlar (Birbirine yakın iş yapan metotlar)
    • Aynı sınıf içinde, ilişkisi olmayan metotlardan kaçınılmalıdır. (Büyük Sınıflar – Fat classes)
  • Sınıflar seviyesinde düşündüğümüz bu yaklaşımları, paketler üzerinde de düşünmeliyiz.
    • Bir paketteki sınıflar, yüksek yakınlıkta olmalı (Highly Cohesive)
    • Fonksiyonel olarak ilişkili sınıflar

Nesne Temelli Tasarım Prensipleri

  • Değişken hususların kapsülleştirilmesi (Encapsulate what varies – Design Principle, GOF Design Patterns Book)
  • Kalıtım yerine, işbirliği yaklaşımının tercih edilmesi (Favor composition over inheritance – Design Principle, GOF Design Patterns Book)
  • (Mümkünse) Arayüz üzerine program geliştirilmeli, somut sınıfa göre olmamalı. (Program to an interface not to an implementation – Design Principle, GOF Design Patterns Book)

%d bloggers like this: