Tek sorumluluk ilkesi - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Tarihçe
  • 2 İlkenin Uygulaması
  • 3 Önemi
  • 4 Kaynakça
  • 5 Ayrıca Bakınız

Tek sorumluluk ilkesi

  • العربية
  • Беларуская
  • Català
  • Čeština
  • Deutsch
  • English
  • Español
  • فارسی
  • Français
  • Magyar
  • İtaliano
  • 日本語
  • 한국어
  • Polski
  • Português
  • Русский
  • Slovenščina
  • Svenska
  • Українська
  • Tiếng Việt
  • 中文
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
(SRP sayfasından yönlendirildi)
SOLID
  • Tek sorumluluk ilkesi
  • Açıklık-kapalılık ilkesi
  • Liskov'un yerine geçme ilkesi
  • Arayüz ayrımı ilkesi
  • Bağımlılığın tersine çevrilmesi ilkesi
  • g
  • t
  • d
Tek sorumluluk ilkesine aykırı bir sınıf tasarımını gösteren UML diyagramı

Tek sorumluluk ilkesi (TSİ), SOLID yazılım geliştirme ilkelerinden biridir. Bu ilke, bir yazılım bileşeninin yalnızca bir sorumluluğa ve dolayısıyla bir değişiklik nedenine sahip olması gerektiğini savunur. Başka bir ifadeyle, bir sınıf yalnızca tek bir aktörün (kullanıcı ya da işlevsel gereksinim kümesinin) beklentilerine hizmet etmeli, farklı nedenlerle değişebilecek işlevleri bir arada barındırmamalıdır.

Terim ilk olarak Robert C. Martin tarafından ortaya atılmış ve "Bir sınıfın değişmesi için yalnızca bir nedeni olmalıdır." şeklinde ifade edilmiştir.[1]

Tarihçe

[değiştir | kaynağı değiştir]

Tek sorumluluk ilkesi, yazılım mühendisliğinde modülerlik anlayışının gelişimiyle birlikte şekillenmiştir. David L. Parnas, 1972 yılında yayımladığı "On the Criteria To Be Used in Decomposing Systems into Modules" adlı makalesinde, sistemlerin akış diyagramı temelli değil, değişmesi muhtemel kararları yalıtacak biçimde modüllere ayrılması gerektiğini savunmuştur.[2] Bu görüş, daha sonra SRP'nin temellerinden biri olarak kabul edilmiştir.

Edsger W. Dijkstra ise 1974 yılında "The Separation of Concerns" kavramını ortaya koyarak, yazılım bileşenlerinin birbirinden bağımsız sorumluluklara sahip olması gerektiğini vurgulamıştır.

İlkenin Uygulaması

[değiştir | kaynağı değiştir]

Bir yazılım bileşeninin birden fazla sorumluluğu üstlenmesi, değişikliklerin birbirini etkilemesine neden olabilir. Bu durum hem bakımı zorlaştırır hem de hatalara açık bir yapı oluşturur. TSİ, bu türden etkileşimleri önlemek için sınıfların ve modüllerin tek bir göreve odaklanmasını önerir.

  • Olumsuz örnek

Aşağıdaki sınıf, hem bordro hesaplaması yapar, hem de veritabanına kayıt işlemi gerçekleştirir. Bu iki işlev farklı nedenlerle değişeceğinden TSİ ihlal edilmektedir:

public class Calisan {
    public double maasHesapla() {
        // Maaş hesaplama mantığı
    }

    public void kaydet() {
        // Veritabanına kaydetme işlemi
    }

    public String calismaSaatleriniRaporla() {
        // Denetim raporu oluşturma
    }
}

Bu sınıf; finans (maaş), BT (veritabanı) ve operasyon (çalışma saati) gibi farklı iş birimlerinin beklentilerini bir arada barındırdığı için birden fazla nedene göre değişmek zorundadır.

  • Doğru örnek

Aşağıdaki yapı, her sorumluluğu ayrı sınıflara ayırarak ilkeye uygun şekilde tasarlanmıştır:

public class MaasHesaplayici {
    public double maasHesapla(Calisan c) {
        // Maaş hesaplama mantığı
    }
}

public class CalisanDeposu {
    public void kaydet(Calisan c) {
        // Veritabanına kaydetme işlemi
    }
}

public class ZamanRaporlayici {
    public String calismaSaatleriniRaporla(Calisan c) {
        // Denetim raporu
    }
}

Bu tasarımda her sınıf yalnızca tek bir işlevden sorumludur. Böylece herhangi bir değişiklik, sadece ilgili sınıfı etkiler.

Önemi

[değiştir | kaynağı değiştir]

TSİ, yazılım sistemlerinde değişime karşı dayanıklı, sürdürülebilir ve okunabilir bir yapı oluşturulmasını sağlar. Bu yaklaşım; yüksek içsel tutarlılığa (cohesion) sahip bileşenlerin oluşturulmasına, farklı nedenlerle değişen yapıların ayrılmasına ve hataların sınırlandırılmasına yardımcı olur.

Kaynakça

[değiştir | kaynağı değiştir]
  1. ^ Agile Software Development, Principles, Patterns, and Practices. Prentice Hall. 2003. s. 95. ISBN 978-0135974445. 
  2. ^ Parnas, David L. (1972). "On the Criteria To Be Used in Decomposing Systems into Modules". Communications of the ACM. 15 (12). ss. 1053-1058. doi:10.1145/361598.361623. 

Ayrıca Bakınız

[değiştir | kaynağı değiştir]
  • Agile Software Development, Principles, Patterns, and Practices - Google Books - Robert C. Martin'in yazılım mühendisliği ilkelerini ve "Tek Sorumluluk İlkesi"ni açıkladığı eseri.
  • On the Criteria To Be Used in Decomposing Systems into Modules - ACM Digital Library - David L. Parnas'ın yazılım bileşenlerinin modüllere ayrılmasına dair önerilerini içeren önemli makale.
  • On the Role of Scientific Thought - ACM Digital Library - Edsger W. Dijkstra'nın, yazılım mühendisliğinde “Ayrık Kaygılar” (Separation of Concerns) ilkesini tanıttığı makale.
  • Patterns of Enterprise Application Architecture - Amazon - Martin Fowler'ın yazılım mimarisi üzerine önemli bir kitabı, özellikle modülerlik ve sorumluluk ayrımı üzerine derinlemesine bilgiler içerir.
  • Clean Code Blog - Robert C. Martin'in yazılım geliştirme üzerine önerilerini paylaştığı blog.
"https://tr.wikipedia.org/w/index.php?title=Tek_sorumluluk_ilkesi&oldid=35835156" sayfasından alınmıştır
Kategoriler:
  • Yazılım tasarımı
  • Yazılım mühendisliği
  • SOLID ilkeleri
  • Sayfa en son 07.57, 16 Ağustos 2025 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Tek sorumluluk ilkesi
Konu ekle