Ana içeriğe geç

Kapsülleme

İngilizcesi
Encapsulation
Türkçe karşılığı
sarmalama
Okunuşu
inkepsyuleyşın

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/encapsulation

Kısaca

Kapsülleme, verileri onları kullanan metotlarla paketleyip iç ayrıntıları gizlemektir; dışarıdaki kod yalnızca herkese açık bir arayüz üzerinden çalışır.

Programlamada kapsülleme (encapsulation) nedir?

Kapsülleme, bir nesnenin verilerini ve bu veriler üzerinde çalışan kodu genellikle bir sınıf olan tek bir birimde bir arada tutmak ve iç ayrıntıları programın geri kalanından gizlemek demektir. Dışarıdaki kod, verileri doğrudan okuyup değiştirmek yerine küçük bir herkese açık metot kümesi üzerinden etkileşir. Kalıtım, çok biçimlilik ve soyutlamayla birlikte nesne yönelimli programlamanın temel ilkelerinden biridir.

Diller kapsüllemeyi, bir üyeyi kimin görebileceğini denetleyen anahtar sözcükler olan erişim belirleyicileriyle (access modifier) uygular. Java, C# ve TypeScript'te private üyeler yalnızca kendi sınıflarının içinde kullanılabilir, public üyeler ise dış arayüzü oluşturur; JavaScript özel alanları # önekiyle işaretler, Python ise bir adı alt çizgiyle başlatma geleneğine dayanır. Her değişiklik metotlardan geçtiği için sınıf girdiyi doğrulayabilir ve verisini tutarlı tutabilir; örneğin bir banka bakiyesinin eksiye düşmesine izin vermeyerek.

Araba iyi bir benzetmedir: direksiyon ve pedallarla sürersiniz ve yakıt enjektörlerine dokunmaz ya da bujilerin ateşleme zamanını kendiniz ayarlamazsınız. Bu iç parçalar gizli olduğu için üretici, nasıl sürdüğünüzü değiştirmeden motoru yeniden tasarlayabilir; tıpkı bir sınıfın iç kodunu, onu kullanan kodu bozmadan değiştirebilmesi gibi.

Kapsülleme sıklıkla soyutlamayla karıştırılır. Soyutlama, bir nesnenin hangi temel özellikleri sunacağına karar verip geri kalanını yok saymakla ilgilidir; kapsülleme ise verileri paketleyen ve geri kalan her şeyi gizleyen mekanizmadır. Her özel alan için herkese açık bir getter ve setter eklemek pek az gerçek kapsülleme sağlar, çünkü dışarıdaki kod yine de her şeyi değiştirebilir; iyi kapsülleme bunun yerine deposit() gibi anlamlı işlemleri sunar.

Önemli noktalar

  • Kapsülleme, verileri ve onlar üzerinde çalışan metotları tek bir birimde paketler.
  • private ve public gibi erişim belirleyicileri, dışarıdaki kodun neyi görebileceğini denetler.
  • Tüm değişiklikler, girdiyi doğrulayıp veriyi tutarlı tutabilen metotlardan geçer.
  • İç ayrıntılar, herkese açık arayüzü kullanan kodu bozmadan değişebilir.
  • Soyutlama neyin sunulacağına karar verir; kapsülleme geri kalanı gizler.

Örnek

JavaScript'te özel alanlı bir sınıfjavascript
class BankAccount {
  #balance = 0; // private: only code inside the class can touch it
  deposit(amount) {
    if (amount <= 0) throw new Error("Deposit must be positive");
    this.#balance += amount;
  }
  get balance() {
    return this.#balance; // read-only from the outside
  }
}

const account = new BankAccount();
account.deposit(50);
console.log(account.balance); // 50
// account.#balance = 1000000; // SyntaxError: private field

Sık sorulan sorular

Kapsülleme ile soyutlama arasındaki fark nedir?

Soyutlama, bir e-posta istemcisindeki send() metodu gibi bir şeyin yalnızca temel özelliklerini sunmakla ilgilidir. Kapsülleme ise bunu kodda nasıl başaracağınızdır: verileri metotlarıyla paketlemek ve iç ayrıntıları erişim belirleyicilerinin arkasında gizlemek.

Kapsülleme neden önemlidir?

Verilerin geçersiz biçimlerde değiştirilmesini önler, ilişkili kodu tek bir yerde tutar ve bir sınıfın iç yapısını, onu kullanan kodu bozmadan değiştirmenize olanak tanır. Bu, büyük programları sürdürmeyi ve hata ayıklamayı kolaylaştırır.

Python kapsüllemeyi destekler mi?

Python'da zorunlu bir private anahtar sözcüğü yoktur. Gelenek olarak _balance örneğindeki gibi başta bir alt çizgi bir üyeyi dahili olarak işaretler ve çift alt çizgi ad bozma (name mangling) tetikler; bu, dışarıdan yanlışlıkla erişimi zorlaştırır ama imkânsız kılmaz.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar