OOP(Object Oriented Programming)
Gerçek anlamda Nesne yönelimli programlama yapabilmek için SOLİD prensiplerine
uygun olarak projemizi geliştirmemiz gerekmektedir. Eğer bu prensiplere uygun olarak projemizi geliştiriyorsak gerçek
manada nesne yönelimli programlama yapıyoruz diyebiliriz. Esnemezlik
Kırılganlık ve Sabitlik sorunlarının çözümü için ortaya çıkmıştır.
Esnemezlik: Kullanilan tasarımın
geliştirilememesi ve eklemelerin yapılamıyor olmasi
Kırılganlık: Projemizin bir
modülünde yaptığımız değişiklik diğer modüllerde hatalara yol acması
Sabitlik: Yazılan modülün farklı
yerlerde tekrardan kullanılamamasıdır.
1.S -
Single Responsibility Principle
2.O -Open/Closed Principle
3.L -Liskov’s Subsitution Principle
4.I -Interface Segregation Principle
5.D -Dependency Inversion Principle
Şimdi her bir prensibin ne anlama
geldiğini açıklayalım.
1.
Single Responsibility Principle
Her modülün(method,nesne..) tek bir görevi ve tek bir
sorumluluğu olma zorunluluğudur. Yani her bir nesne proje içerisinde bir görev
almalıdır. Sadece o görev değişikliği sırasında nesnemizi değiştirmeliyiz eğer
başka bir nedenden dolayıda bir değişiklik yapıyorsak bizim birinci kuralımıza
uymayan bir kullanım söz konusudur diyebiliriz.
2.
Open/Closed Principle
Projemizde kullandiğimiz
modüllerimizin değişime kapalı fakat gelişime açık olmalıdır. Örneğin
projemizin ikinci bir sürümünü yapıyoruz ve bizden bir modülde ek bir kaç
özellik daha eklememizi istediler. İşte bu durumda biz modülümüzün sadece belli
bir kısmına dokunur ve onu geliştirebildiysek O/C prensibine uygun davranmiş
oluruz. Fakat biz bu eklemeyi modülde çoğu yerde değişiklik yaparak yapıyorsak projemiz
O/C prensibine uygun değildir diyebiliriz.
3.
Liskov’s Subsitution Principle
Solid
prensiplerinin içerisinde daha karmaşık olarak gorunen iki prensipten biridir.
Amacımız turettiğimiz nesnelerimizin tum alt sınıf örnekleri aynı davranisi
göstermesidir.Diğer bir deyişle türüyen sınıfın nesneleri temel sınıfın
nesneleri ile yer değiştirebiliyor olmasıdır.
4.
Interface Segregation Principle
Solid prensipleri içerisinde karmaşık
olarak görülen diğer prensiptir.
Gokhan
hocamizin dediği gibi: “ ilgili bağımlı nesnelerin örneklenmesi görevi ayrık
bir bileşene(Component) veya Framework’e verilir. Bu sayede bağımlı nesnelerin
üretilip controller’a enjekte edilmesi
sağlanır.” Yani benzer özellikleri olan sınıfları bir interface altında
topladıktan sonra bu sınıflardan bazılarını kesin olarak kullanmıyorsak bu
yanlış kullanım şeklidir. Kesin olarak kullanmıyorsak biz bunlarıda kesin olan
en küçük parcacıklara ayrıştırmalıyız.
5.
Dependency
Inversion Principle
Somut
sınıflarımıza olan bağımlılıklarımızı soyut sınıflar kullanarak aradaki bağı
kırmamızdır. Diğer bir deyişle yüksek seviyeli sınıflar düşük seviyeli
sınıflara direkt olarak bağımlı olmamalıdır. Bağımlılığı kırmak için arada
soyut sınıflara bağlamamız gerekir.
Kaynaklar:
Şahin
YARAL
Hiç yorum yok:
Yorum Gönder