8 Mayıs 2023 Pazartesi

OOP | Encapsulation

Encapsulation Nedir?

🔹Encapsulation, nesnelerdeki field'ların kontrollü bir şekilde dışarıya açılmasıdır. Encapsulation sayesinde nesnelerin başkaları tarafından yanlış kullanımı/kontrolsüz değiştirilmeleri engellenir. 
🔹Field kapsüllenir, dışarıdan herhangi bir eleman erişim talep ettiğinde önce bu kapsülle karşılaşır.
🔹Yararlı ve gerekli olan, programlamada güvenliği arttıran bir uygulamadır. 

Birinin cüzdanından direkt para alınması yerine o kişinin kendi belirlediği miktarı kontrollü şekilde karşı tarafa vermesi gerçek hayattan bir encapsulation örneği olarak düşünülebilir.

C#'ta iki türlü uygulanmaktadır:
  • Metot ile Encapsulation
  • Property ile Encapsulation


Metot ile Encapsulation

🔹Eskiden encapsulation metotlar üzerinden yapılıyordu. 

MyClass diye bir nesnemiz, içinde a field'ımız olsun. Erişim belirleyicisini public yapalım.
Metodun geri dönüş değeri de field ile aynı türde olmalıdır. 
MyClass nesnesi çağrıldığında AGet fonksiyonu tetiklensin ve this ile (o anki nesne ile) a field'ının değerini gönder. Bu field'ın istenilen kadarı gönderilebilir. Burada önemli olan AGet fonksiyonu içerisinde kapsüllenmesidir. 

Benzer mantıkla a'ya bir değer gönderilecekse void ile (dışarıdan değer gelecek ama dışarıya değer gönderilmeyecek) aşağıdaki ASet fonksiyonu gibi değer verilebilir.
Bu durumda bu da bir encapsulation örneğidir: 
Field'a direkt erişmedik, ASet fonksiyonu üzerinden değer atadık.


Property ile Encapsulation

🔹C# ile property members ile encapsulation kullanılmaya başlandı ve kod okunurluğu arttı. 
🔹Propertyler temsil ettikleri field'ların büyük harfle başlamış haliyle adlandırılır. (a -> A) 

A'ya herhangi bir değer atandığında set, değer okunmak istendiğinde, örneğin Console.WriteLine(m.A); ile ekrana yazdırıldığında get bloğu tetiklenir.

 this kullanmak C#'ta zorunlu değildir, this. yazmayıp direkt nesneyi çağırsak da sistem kendisi this algılayacaktır.
☕︎  

0 yorum:

Yorum Gönder