Prensibin genel mantığı olarak; değişim tek bir sebebe bağlı olmalıdır. 2. Sebep oluştuğu anda sınıflar ayrılmalıdır. Birden fazla değişiklik olduğu zaman bunun etkisi ondan türetilen sınıflar üzerinde de olacaktır ve kontrolsüz gelişim yaşanır, etkileri anlaşılamayabilir. Eklenen her sınıfın tek bir sorumluluğu olması esnek bir tasarım olmasını sağlar. Bu prensipte olması gereken yüksek yakınlık elde edilmesidir.
Örnekte işlenen konu; şirket içerisinde bulunan çalışanlar için mesai ve maaş durumunun farklılık göstermesinden ortaya çıkmıştır. Mesai ara yüz olarak belirtilmiş ve esneklik sağlanmıştır. Maas sınıfı kendi içerisinde ücret ve mesaiyi çağırarak türetim sağlamıştır. Buradan sonra bu sınıftan türetilenler değişikliği kendi içinde uygularlar, yüksek yakınlık elde edilir.

  1. TekSorumlulukPrensibi.java;
  2. package tasarim1;
  3. public class TekSorumlulukPrensibi {
  4. interface Maas { Maaş sınıfı ara yüzdür.
  5. public void setAsgariUcret( int ucret);
  6. public void setMesai(Mesai m); }
  7. //Mesai herkese göre farklılık gösteren bir durumdur.
  8. //Bu sebeple ayrı bir ara yüz olarak belirtmek prensip açısından da uygun olacaktır.
  9. interface Mesai {  Maaş sınıfı ile ayrılmışlardır, değişime uğrama durumları vardır.
  10. public int m_saat();
  11. }
  12. class TeknikPersonel implements Maas{  Maaş sınıfından türetilen sınıf kendi özelliklerini ekler
  13. int ucret,mesai;
  14. public void setAsgariUcret(int ucret) {
  15. this.ucret=ucret;
  16. }
  17. public void setMesai(Mesai m){
  18. mesai=m.m_saat();
  19. }
  20. public void toplam(){
  21. int toplam=ucret+mesai;
  22. }
  23. }
  24. }

Single Responsibility Principle

  1. public class ConnectToDataBase
  2. {
  3.  
  4. public SqlConnection baglan()
  5. {
  6. SqlConnection baglanti = new SqlConnection("Data Source=94.73.145.253;Initial Catalog=DB120213222015; MultipleActiveResultSets=true; User Id=USR120213222015;Password=PSS!H7Z1E5%;");
  7.          
  8. SqlConnection baglanti = new SqlConnection("Data Source=localhost; Initial Catalog = hafizeanne; Integrated Security=True; MultipleActiveResultSets=True");
  9.         baglanti.Open();
  10.         return (baglanti);
  11. }
  12. }
  13.  
  14. public partial class Admin_YemekListesi : System.Web.UI.Page
  15. {
  16.     ConnectToDataBase system = new ConnectToDataBase ();
  17. SqlConnection baglan = system.baglan();
  18. }

At here, ConnectToDataBase class only one responsiblity. When ConnectToDataBase class called, it is only connect to database..



*** *** Rica*** ***

Merhaba, cep telefonları için bir uygulama yazdım. Uygulamamın başarılı olması için onu android marketten indirir misiniz? Kesinlikle virüs ya da benzeri tehlikeler içermemektedir.
Aslında faydasız bir uygulama da değil. Allah korusun, acil durumlarda kan ararsanız eğer, şehre ve kan grubuna göre kan arama uygulaması. indirmek için lütfen : tıklayınız

*** *** Rica*** ***