İçeriğe geç
parazade

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?
İçindekiler
  1. Kapsülleme nedir?
  2. Nasıl uygulanır?
  3. Neden önemlidir?

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.

İlgili terimler

Soyutlama(Abstraction)Soyutlama (abstraction), programlamada karmaşık ayrıntıları gizleyip kullanıcıya yalnız ihtiyaç duyduğu işlevleri sade bir biçimde sunma ilkesidir. Nesne yönelimli programlamada soyut sınıflar ve arayüzlerle uygulanır.Nesne Yönelimli Programlama(Object-Oriented Programming)Nesne yönelimli programlama (OOP), yazılımı veri ve bu veri üzerinde çalışan davranışları bir arada tutan nesneler etrafında düzenleyen programlama yaklaşımıdır. Kapsülleme, kalıtım, çok biçimlilik ve soyutlama temel ilkeleridir.Sınıf(Class)Sınıf (class), nesne yönelimli programlamada aynı türden nesnelerin hangi verileri ve davranışları taşıyacağını tanımlayan şablondur. Sınıftan üretilen her somut örneğe nesne denir.Metot(Method)Metot (method), nesne yönelimli programlamada bir sınıfa ya da nesneye ait olan fonksiyondur. Nesnenin verisiyle çalışır ve genellikle `nesne.metot()` biçiminde çağrılır; örneğin `hesap.para_yatir(500)` bir metot çağrısıdır.Nesne(Object)Nesne (object), nesne yönelimli programlamada bir sınıftan üretilen, kendi verilerini (özellikler) ve davranışlarını (metotlar) taşıyan somut örnektir. Örneğin `Araba` sınıfından üretilen her araç ayrı bir nesnedir.JavaJava, Sun Microsystems tarafından 1995'te yayımlanan, bugün Oracle tarafından geliştirilen, nesne yönelimli ve platformdan bağımsız bir programlama dilidir; kod Java Sanal Makinesi (JVM) üzerinde çalışır.PythonPython, okunabilir ve sade sözdizimiyle bilinen, genel amaçlı, açık kaynaklı bir programlama dilidir. Veri bilimi, yapay zekâ, otomasyon ve web geliştirmede en yaygın kullanılan dillerden biridir.KuruşKuruş, Türk lirasının alt para birimidir ve 1 Türk lirası 100 kuruşa eşittir. Osmanlı döneminden beri kullanılan kuruş, bugün madeni paralarda ve fiyatların ondalık kısmında yer alır.