Merhaba arkadaşlar,
mobilhanem.com üzerinden anlattığımız/yayınladığımız derslerimize Java Nesne Yönelimli Programlama başlığı altında Java Encapsulation konusunu ele alarak devam ediyoruz.
Java Encapsulation
Encapsulation kelimesinin Türkçe yazılım dilinde karşılığı, Kapsülleme veya Sarmalama olarak belirtilebilir. Java Encapsulation aslında java sınıfı içerisinde tanımladığımız değişkenlerimizi korumak veya saklamak anlamanına gelmektedir. Tanımladığımız bir sınıf içerisindeki değişkenin direk olarak değiştirilememesi, bunun yerine bizim izin verdiğimiz ölçüde, metotlar aracılığıyla değiştirilmesi gerekmektedir. Bir değişkene sadece okuma yetkisi verebilir, sadece yazma yetkisi verebilir veya hem okuma hem yazma yetkisi verebiliriz. Elbetteki bu yetkileri Temel Java Derslerimizde bahsetmiş olduğumuz Erişim Belirleyiciler aracılığı ile verebiliriz.
Ufak bir örnek üzerinden devam edelim;
/** * Encapsulation olmadan oluşturulan bir değişken ve kullanımı **/ public class EncapsulationDemo1 { public static void main(String[] args) { EncapsulationDemo ed = new EncapsulationDemo(); ed.ad = "mobilhanem"; } } class EncapsulationDemo { public String ad; }
Yukarıda ki örnekte görüleceği üzere encapsulation yapısından faydalanılmamış, bu sebeple EncapsulationDemo sınıfı içerisinde tanımlanan ad değişkeni kontrolden uzak kalmıştır. EncapsulationDemo sınıfından nesne üreten tüm kullanıcılar ad değişkenini istedikleri gibi kullanacaklar, ayrıca ad değişkenine değer verirken karışıklık yaşayacaklardır. Bu gibi durumların önüne geçilmesi için Java Encapsulation yapısından faydalanılmalıdır.
/** * Encapsulation kullanılarak oluşturulan bir değişken ve kullanımı **/ public class EncapsulationDemo2 { public static void main(String[] args) { EncapsulationDemo ed = new EncapsulationDemo(); ed.setAd("mobilhanem"); System.out.println(ed.getAd()); } } class EncapsulationDemo { private String ad; public void setAd(String ad) { this.ad = ad; } public String getAd() { return ad; } }
İkinci örnekte rahatlıkla görebileceğiniz gibi ad değişkeni private olarak tanımlandığı için direk olarak değiştirilemez. Bunun yerine public erişim belirtecine sahip getter ve setter metotları aracılığı ile değiştirilip kullanılabilir. Bu da bizim veri güncellerken veya kullanırken yaşanabilecek karışıklıkların önüne geçmemizi sağlar.
Bunların yanı sıra kullanıcıların ad değişkenine ait değeri değiştirmesini istemediğimiz takdirde, public void setAd(String ad) şeklinde tanımladığımız metodumuzun erişim belirtecini private olarak değiştirdiğimizde artık ad değişkeni kullanıcılar için sadece-okuma (read-only) yetkisine sahip oldukları bir değişken olacaktır. Bu şekilde erişim belirteçlerini değiştirerek sınıflar içerisinde değişkenlerimizi okuma-yazma (read-write), sadece okuma (read-only), sadece yazma (write-only) şeklinde yetkilendirebiliriz.
Java Encapsulation ile yazılan kodların bakımı çok daha kolay hale gelecektir. Örnek vermek gerekirse bir class yazdınız. Sadece o class’ın içinde kullandığınız bir değişkeni ve ya metodu public yaptınız. Bu metoda ve ya değişkene başka class’lardan rahatça erişilecek. Bu class’ı tekrar güncellerken public metod ve değişkenimizi istediğimiz gibi değiştiremeyiz. Çünkü başka class’lardan bu değişkene ve ya metoda erişilmiş olabilir. Dolayısıyla en baştan kodumuzu yazarken Class’ın içindeki değişken ve ya metodumuzu private (Encapsulation yaparak) tutarak ilerleyen zamanlarda ki değişikliklerde daha rahat olalım.
Sonuç
Java Encapsulation yapısından faydalanılarak yazılan kodlar bakımı daha kolay, değiştirmeye ve geliştirmeye daha açık ve daha esnek hale gelmektedir. Java ile bir proje geliştirirken Nesne Yönelimli Programlama yapılarına dikkat edilmeli ve bu dersimizde öğrendiğimiz Java Encapsulation yapısından her zaman faydalanılmalıdır.
Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm Java Dersleri için tıklayınız..
161