Kapsülleme Nedir?
İngilizce: Encapsulation
Yayın: · Son güncelleme:
Kapsülleme Nedir? Kısaca
Kapsülleme (encapsulation), nesne yönelimli programlamada bir nesnenin verilerini ve bu verilerle çalışan metotları bir arada tutup veriye dışarıdan doğrudan erişimi sınırlayan ilkedir. Veri yalnız kontrollü metotlarla okunur ve değiştirilir.

Kapsülleme nedir?
Kapsülleme, bir nesnenin iç verisini koruma altına almaktır. Nesnenin verileri dışarıdan doğrudan değiştirilemez; bunun yerine nesne, verisini güvenli biçimde okumak ve güncellemek için kendi metotlarını sunar. İlaç kapsülünün içindeki tozu korumasına benzer: içerik dışarıdan görünmez, yalnız belirlenen yolla kullanılır.
Bir banka hesabı nesnesi düşünün. Bakiye alanına herkes doğrudan hesap.bakiye = 1000000 yazabilseydi, sistem hiçbir kuralı denetleyemezdi. Kapsülleme ile bakiye gizlenir, değişiklik yalnız para_yatir() ve para_cek() metotlarıyla yapılır.
Nasıl uygulanır?
Java ve C# gibi dillerde erişim belirleyiciler kullanılır. private olarak işaretlenen alanlara yalnız sınıfın içinden ulaşılır, public metotlar ise dışarıya açıktır. Değer okumak için getter, değer atamak için setter metotları yazmak yaygın bir kalıptır.
Python'da kesin bir kilit yoktur. Bir alanın adının başına alt çizgi koymak (_bakiye) "buna dışarıdan dokunmayın" anlamına gelen bir uzlaşıdır. Çift alt çizgi ise adın değiştirilmesini sağlayarak erişimi biraz daha zorlaştırır.
Neden önemlidir?
Kapsüllemenin en büyük faydası kuralları tek noktada denetlemektir. para_cek() metodu, çekilmek istenen 500 TL bakiyeden fazlaysa işlemi reddeder ya da negatif tutar girilmesini engeller. Bu kural her yerde tekrar yazılmak yerine bir kez, metodun içinde tanımlanır.
İkinci fayda, iç yapıyı değiştirme özgürlüğüdür. Bakiyeyi kuruş cinsinden tutmaya karar verseniz bile, dışarıdaki kod yalnız metotları kullandığı için etkilenmez. Kendi sınıflarınızda dışarıdan doğrudan değiştirilen alanları tespit edip onları metotların arkasına almak, iyi bir başlangıç alıştırmasıdır.
Sıkça Sorulan Sorular
Kapsülleme ile soyutlama aynı şey mi?
Birbirine yakındır ama farklıdır. Kapsülleme veriyi korumaya ve erişimi kontrol etmeye odaklanır; soyutlama ise karmaşık ayrıntıları gizleyip kullanıcıya sade bir arayüz sunmaya odaklanır.
Getter ve setter ne demek?
Getter, gizli bir alanın değerini okuyan metottur; setter ise o alana değer atayan metottur. Setter içinde doğrulama yaparak, örneğin negatif yaş girilmesini engelleyerek veriyi koruyabilirsiniz.