ENCAPSULATION (KAPSÜLLEME)
Bir sınıfın içerdiği özellik ve metotları bazen gizlemek isteriz. Bunun nedeni güvenlik veya tasarım olabilir.
Mesela bir giriş ekranı düşünelim. Farklı bir class altında şifremiz ve kulllanıcı adı tutuluyor ve buna başka bir sınıftan erişip değiştirilmesini engellemek istiyoruz. Burada private ile gizlenmesini istediğimiz özellikleri gizliyoruz, ulaşmak istersek getter ve setter metotlarını kullanıyoruz.
GETTER VE SETTER
Getter ve setter ile private olan bir class özelliğine başka bir class’tan erişebiliriz. Get ile değeri döndürüp, set ile de yeni değer ayarlayabiliriz. Kullanılan IDE ortamı otomatik olarak get ve set eklemeyi destekliyor olabilir.
Netbeans’de getter ve setter ekleme
Aşağıdaki örnekte bir login erkanında kullanıcı adı ve şifre istedik. Kullanıcı adı ve şifre farklı bir sınıfta private ile gizleniyordu. Get ile bu değerlere erişip kıyaslama yaptık. Örneği detaylı olarak inceleyiniz.
Bilgiler doğru ve yanlış girildiğinde oluşan çıktılar
Örnekte görüldüğü üzere encapsulation ile bir sınıfın kendi içeriğini gizleyip dışarıdan erişime engellediğini gördük. Eğer get metodunu kullanmasaydık kullanıcı adı ve şifreye erişemeyecektik ve program hata verecekti.
Get ile bilgiye ulaştık, peki ya set? Şimdi set ile şifremizi değiştirelim. Bu yüzden final ifadesini kaldırmamız gerekecek. Kullandığınız ide ortamı kısayolu destekliyorsa zaten final ifadesini kaldırmadığınız sürece setter ekleme seçeneğinin gelmediğini görüceksiniz.
Kısaca Encapsulation’un Avantajları
- Verilere erişme veya değiştirilme şeklinin kontrolü
- Daha esnek ve kolay değiştirilebilen kod
- Kodun bir kısmını diğer kısımlarını etkilemeden değiştirebilme
Bu yazımızda encapsulation’un nerelerde kullanılabileceğini, avantajlarını ve getter setter ile private olan bir özelliğe erişmeyi gördük. Ayrıca yukarıdaki örnekleri dikkatli olarak incelerseniz final anahtar kelimesi ile bir özelliğin daha sonra değiştirilmemesini ve equals metodu ile eşitliği sorgulamayı gördük.
Gördüğünüz hatalar, önerileriniz ve sorularınız için telegram gruplarımızdan bizimle iletişime geçebilirsiniz.
Devamı için takipte kalınız.