Upload
dumural
View
577
Download
4
Embed Size (px)
Citation preview
TASARIM PRENSİPLERİS O L I D
Koray Peker
Kötü Tasarım
Rigid ( Katı )
Fragile ( Kırılgan )
İmmobile ( Hareketsiz )
Viscous ( Yapışkan )
SOLID Nedir ?
SOLID , Robert Martin’in sunumu ile ortaya çıkan bir Dependency Management (Bağımlılık Yönetimi) biçiminin , 5 adet ilkesinin baş harflerinden oluşan prensiplerdir.
Neden SOLID ?
Şu şekilde kod yazmamıza yardımcı olur ;
Neden SOLID ?Şu şekilde kod yazmamıza yardımcı olur ;
Loosely Coupled
Neden SOLID ?Şu şekilde kod yazmamıza yardımcı olur ;
Loosely Coupled Highly Cohesion
Neden SOLID ?Şu şekilde kod yazmamıza yardımcı olur ;
Loosely Coupled Highly Cohesion Context Independent
Neden SOLID ?Şu şekilde kod yazmamıza yardımcı olur ;
Loosely Coupled Highly Cohesion Context Independent Reusable
Neden SOLID ?Şu şekilde kod yazmamıza yardımcı olur ;
Loosely Coupled Highly Cohesion Context Independent Reusable Maintainable
Neden SOLID ?Şu şekilde kod yazmamıza yardımcı olur ;
Loosely Coupled Highly Cohesion Context Independent Reusable Maintainable Easily Testable Code
Single Responsibility
Single Responsibility
Sadece tek bir sorumluluğu yerine getirmelidir ve yerine getirdiği sorumluluğu iyi yapmalıdır.
Single Responsibility
“Bırakın herşey kendi görevini yapsın” Koray PEKER
Open Closed
Open Closed
“Programlar geliştirilmeye açık ama değiştirilmeye kapalı olmalıdır.”
Bertrand Meyer
Liskov Subtitution
Liskov Subtitution
“Alt sınıflardan oluşturulan nesneler üst sınıfların nesneleriyle yer değiştirdiklerinde aynı davranışı göstermek zorundadır ”
Barbara Liskov
Liskov Subtitution
Liskov Subtitution
Liskov Subtitutionpublic int odeme() { return 0; }
Public int odeme() throws PersonelException { throw new PersonelException(‘’Stajyer maasli calisamaz’’);}
List<Personel> personel = getPersonelList(); int total = 0; for(int i=0; i < personel.size(); i++) { if(! (personel.get(i) instanceof StajyerPersonal)) { total+=personel.get(i).odeme(); } }
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
Interface Segregation
Interface Segregation
Birbiriyle ilişkili olmayan birçok metodu ihtiva eden büyük bir interface sınıf yerine, birbiriyle ilişkili cohesive metotların yer aldığı birden fazla interface sınıfı daha makbuldür.
Dependecy Inversion
Dependecy Inversion
Somut sınıflara olan bağımlılıklar soyut sınıflar ve interface sınıflar kullanılarak ortadan kaldırılmalıdır.
S O L I D Teşekkürler
Referanslar
Head First Object Oriented Analysis and Design www.kurumsaljava.com( Özkan Acar ) http://en.wikipedia.org/wiki/Ivar_Jacobson http://www.seyhanbakir.com/Post/Detail/33 http://lostechies.com/derickbailey/2009/02/11/solid-development-
principles-in-motivational-pictures/ SOLID Software development is not a Jenga game by Mark Nijhof