SOLID, beş prensibin baş harflerinden oluşur: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation ve Dependency Inversion. "Hata Yakalama Prensibi" bu beş prensip arasında yer almaz.
Nesneye Yönelik Programlama Final Deneme Sınavı -10
Kaynak: https://lolonolo.com/2022/08/13/nesneye-yonelik-programlama-final-deneme-sinavi-10/
📖 Konu özeti (sınav öncesi tekrar)
Nesneye Yönelik Programlama Tasarım
Nesneye Yönelik Programlama Tasarım
Nesneye Yönelik Programlama Final Deneme Sınavı -10
II – Açık/Kapalı Prensibi
III – Bağımlığı Tersine Çevirme Prensibi
Yukarıda verilen SOLID tasarım prensiplerinden hangisi veya hangileri doğrudur ?
Verilen üçü de SOLID prensiplerindendir. Tek Sorumluluk (S), Açık/Kapalı (O) ve Bağımlılığı Tersine Çevirme (D) prensipleri bu kısaltmanın harflerini oluşturur. SOLID'in diğer iki harfi ise Liskov İkame (L) ve Arabirim Ayırma (I) prensipleridir.
Tek Sorumluluk Prensibi'ne göre bir sınıfın veya yapının yalnızca tek bir sorumluluğu, yani değişmek için tek bir nedeni olmalıdır. Böylece kod daha anlaşılır olur ve bakımı kolaylaşır. Bağımlılıkları azaltmak ise ağırlıklı olarak Bağımlılığı Tersine Çevirme prensibinin konusudur.
Tek Sorumluluk Prensibi, bir sınıfın yalnızca bir sorumluluğa sahip olmasını ifade eder. Bu, sınıfta tek bir metot olması gerektiği anlamına gelmez. Aynı sorumluluğa hizmet eden birden çok metot aynı sınıfta bulunabilir; A şıkkındaki yanılgı budur.
Bir sınıfın sorumluluklarını sınırlandıran ve birden fazla sorumluluk yüklemenin tasarım sorunlarına yol açacağını söyleyen ilke Tek Sorumluluk Prensibi'dir (SRP). Birden çok sorumluluğu olan bir sınıf, birden çok nedenle değişmek zorunda kalır ve bu da kodu kırılgan hâle getirir.
II – Bir sınıf sadece bir sınıftan türetilmelidir.
III – Bir sınıfın sadece bir sınıfa ait bağımlığı olmalıdır.
Liskov İkame Prensibi ilgili verilenlerden hangisi veya hangileri doğrudur?
Liskov İkame Prensibi'ne göre türetilmiş sınıflar, temel sınıfın yerine kullanıldığında programın doğru çalışması bozulmamalıdır. Yani temel sınıfın yerine getirdiği işlevleri alt sınıflar da yerine getirebilmelidir. II ve III bu prensiple ilgili değildir, bu yüzden yalnız I doğrudur.
II – Bağımlığı Tersine Çevirme Prensibi
III – Arabirim Ayırma Prensibi
Yüksek seviyedeki modüllerin alt seviyedeki modüllere olan bağımlılığını azaltan prensip veya prensipler hangisinde doğru olarak verilmiştir?
Bağımlılığı Tersine Çevirme Prensibi'ne (Dependency Inversion) göre üst seviye modüller alt seviye modüllere doğrudan bağımlı olmamalıdır. Her ikisi de soyutlamalara (interface veya soyut sınıf) bağımlı olmalıdır. Açık/Kapalı prensibi genişletilebilirlikle, Arabirim Ayırma prensibi ise interface'lerin küçük tutulmasıyla ilgilidir.
Yukarıdaki şekilde verilen işlemi tarif eden tasarım prensibi aşağıdakilerden hangisinde verilmiştir?Açık/Kapalı Prensibi'ndeki "açık" ifadesi, sınıfın genişletmeye açık olmasını anlatır. Yani sınıfa, mevcut kodu değiştirmeden (kalıtım veya interface ile) yeni davranışlar eklenebilmelidir. B şıkkı Liskov İkame Prensibi'ni, A şıkkı ise Tek Sorumluluk Prensibi'ni tanımlar.
Açık/Kapalı Prensibi'ndeki "kapalı" ifadesi, sınıfın mevcut kodunun değişikliğe kapalı olmasını anlatır. Yeni bir ihtiyaç doğduğunda var olan, test edilmiş kod değiştirilmez; bunun yerine sınıf genişletilir. C şıkkı ise prensibin "açık" kısmını tanımlar.