Sınıf Tasarım Prensipleri

Tek Sorumluluk Prensibi:

Tom DeMarco'nun 1979 yılındaki “Structured Analysis and Systems Specification” kitabında yer alan prensiptir. Her sınıf yalnızca tek bir sorumluluk alanına sahip olmalıdır. Sınıfın değişmesi için tek bir nedeni, tek bir sorumluluğu olmalıdır.

Açık/Kapalı Prensibi:

Bir sınıf genişlemeye açık, değişmeye kapalı olmalıdır. Yeni özellik, yeni kod eklenirken, halihazırda olan kodları bozmamalıdır. Fakat kolayca genişlemeye açık olmalıdır. Bunu soyut sınıflar kullanarak gerçekleştirebiliriz.

Liskov Yerine Kullanma Prensibi:

Alt sınıflar, üst sınıfların yerine kullanılabilmelidirler. Alt sınıfların üst sınıfla aynı davranışı göstermelidir. Fakat bazı durumlarda bu prensip çiğnenir. Bunlardan biri de dikdörtgen-kare sorunudur. Kare de bir dikdörtgen olduğu için kare sınıfını dikdörtgen sınıfından türetirsiniz. Dikdörtgen sınıfında uzunluk ve genişlik değiştiren yordamlar bulunur. Fakat kare sınıfında bu yordamlardan birini gerçekleştirirken, diğer kenarın da aynı uzunlukta olmasını sağlamalısınız. Bu durumda üst ve alt sınıf aynı davranışı göstermemektedir.

Tersine Dönen Bağımlılık Prensibi:

Detaylar üst sınıflara ( arayüz sınıfı veya soyut sınıf ) bağlı olmalı. Üst sınıflar alt sınıflara bağlı olmamalı. Bunu önlemek için üst sınıf düzeyi arttırılarak, detay alt sınıflar, biraz daha az detaylı ama eski üst sınıftan daha detaysız, yeni oluşturulan üst sınıflardan türetilirler. Yani alt sınıfın detaylarına uysun diye, üst sınıfın yapısı çok detaylandırılmamalıdır.

Arayüz Ayırma Prensibi:

Sınıflar yalnızca ihtiyaç duyduğu arayüz sınıflarından türetilmelidir. Yani uzun ve genel bir arayüz sınıfındansa, parçalara bölünmüş ve özelleşmiş arayüz sınıfları yaratmak daha yerindedir. Böylece sınıflar gereksiz ve işine yaramayan bir çok yordamı olan arayüz sınıflarından türemezler.