Evet !!!! Encapsulation'ın bir tür gelişmiş özel kapsam soyutlaması olduğunu söylersem ,
Kaçınız cevabımı okudu / oy verdi. Neden böyle söylediğimi inceleyelim.
Talepte bulunmadan önce iki şeyi netleştirmem gerekiyor.
Biri veri saklama, diğeri ise soyutlamadır.
Veri gizleme
Çoğu zaman, dahili verilerimize doğrudan erişim sağlamayacağız. İç verilerimiz doğrudan dışarı çıkmamalı, çünkü dışarıdan bir kişi iç verilerimize doğrudan erişemez. Her şey güvenlikle ilgili çünkü belirli bir nesnenin iç durumlarını korumamız gerekiyor.
Soyutlama
Basit olması için, iç uygulamaları gizlemek soyutlama olarak adlandırılır. Soyutlamada sadece gerekli şeylere odaklanıyoruz. Temel olarak, soyutlamada "Nasıl yapılır" dan değil "Ne yapmalı" dan bahsediyoruz. Güvenlik, "nasıl uyguladığımızı" vurgulamayacağımız için soyutlama ile de sağlanabilir. Uygulamayı değiştirebileceğimiz için sürdürülebilirlik artırılacak ancak son kullanıcımızı etkilemeyecektir.
"Kapsülleme bir tür gelişmiş özel kapsam soyutlamasıdır" dedim. Neden? çünkü kapsüllemeyi veri gizleme + soyutlama olarak görebiliriz
kapsülleme = veri gizleme + soyutlama
Kapsüllemede, verileri dışarıdaki kişilerin verileri görememesi için saklamamız ve verilere erişmek için kullanılabilecek yöntemler sağlamamız gerekir. Bu yöntemlerin, bu şeylerin içinde, dışarıdan bir kişiye de gizlenmiş doğrulamaları veya başka özellikleri olabilir. Yani burada, erişim yöntemlerinin uygulanmasını saklıyoruz ve buna soyutlama deniyor.
Bu yüzden yukarıdaki gibi kapsüllemenin bir tür soyutlama olduğunu söyledim.
Peki fark nerede ?
Basitlik, sürdürülebilirlik ve güvenlik için kullanıcıdan bir şey gizliyorsak, soyutlama genel bir farktır ve
kapsülleme, dahili durumu gizlediğimiz (veri gizleme) ve verilere erişmek için yöntemler sağladığımız ve dış kişiden gizlenen bu yöntemlerin uygulanmasını sağladığımız (soyutlama) dahili durum güvenliği ile ilgili özel bir durumdur.