Java

Java’da Erişim Kontrolleri (Encapsulation)

Bir önceki yazımız Java’da Metodları Aşırı Yükleme (Overloading) konusunda overloading işleminin nasıl yapıldığını ve neden gerekli olduğu konusunu işlemiştik. Şimdi ise Java’nın en önemli konularından biri olan erişim kontrollerine değineceğiz.

Encapsulation, yani sarmalama Java’nın en önemli konularından birisidir. Nesne Yönelimli Programlama’nın temeli olan üç başlıktan biridir aynı zamanda. Encapsulation’ı bu kadar önemli yapan şey ise kodlarımızı dilediğimiz şekilde “koruyabilmemize” olanak sağlamasıdır. Daha iyi anlamak için bir örnekle ifade edelim:

Kullandığınız bilgisayarı düşünün. Bilgisayar kasasında birçok farklı donanım bulunur. USB girişi, HDMI girişi, klavye, fare, ekran, anakart, işlemci vb. birçok donanım bir araya gelerek uyumlu bir şekilde çalışıyor. Hiçbir donanım diğerinin alanına girmiyor, yani her donanım kendine has bir şekilde “sarmalanıyor” ve böylece sorunsuz bir sistem ortaya koyuluyor. İşlemcinin yapması gereken işlere RAM’in müdahele ettiği, klavye tuşuna basıldığında farenin hareket ettiği bir bilgisayarın takdir edersiniz ki kullanılması mümkün değildir.

İşte yazdığımız programlardaki sınıfların ve metotların birbirleriyle uyumlu ve birbirlerinden ayrı olarak sarmalanmış olması gerekiyor. Yani bir metot veya sınıf sadece uygun görüldüğü şekilde kullanılabilir olmalı. Aksi halde program tehlikelere açık bir duruma düşer, dışarıdan mühadelelere maruz kalabilir. Bu sarmalama işlemi Java’da üç anahtar sözcük ile gerçekleştirilir: public, protected, private.

public Belirteci

Bir sınıfa ait metot veya değişken public olarak tanımlandığında programın herhangi bir yerinden erişilebilir olduğu anlamına geliyor. Örneğin main metodumuzu her zaman public olarak tanımlıyoruz, bunun sebebi main metodumuz her yerden erişilebilir olmalı ki program çalışabilsin.

private Belirteci

Bir sınıfa ait metot veya değişken private olarak tanımlandığında sadece kendi sınıfının üyeleri tarafından erişilebilir olmaktadır. Dışarıdan erişim hiçbir şekilde mümkün değildir.

protected Belirteci

Bir sınıfa ait metot veya değişken protected olarak tanımlandığında sınıfın bulunduğu paketten ve sınıftan türetilmiş alt sınıflardan erişilebilir olmaktadır.

default

Herhangi bir erişim belirtecinin kullanılmadığı durumda Java otomatik olarak yine sarmalama işlemini gerçekleştirir. Bu durumda bulunduğu sınıf ve paket üzerinden metot ve değişkenlere erişim sağlanabilir.

Erişim belirteçlerine dair genel tabloyu şu şekilde gösterebiliriz:

encapsulation

Encapsulation oldukça sık kullanacağımız bir özelliktir. Büyük projelerle uğraşırken, özellikle programımızın güvenliğini sağlamak adına encapsulation gerekiyor. Bir örnek kod parçasıyla uygulamasını yapalım:

Bu kod parçacığını çalıştırmayı denediğinizde hata alacaksınız, zira private olarak tanımlanmış bir değişken ve metodu kullanmaya çalıştık. x değişkenini ve kod5() metodunun kullanıldığı satırları yorum satırı yaptığımızda konsolda şu çıktı olacaktır:

Yapılandırıcı metot çalıştı.
Kod5 Java Eğitimi
3.14

Görüldüğü gibi protected olan y değişkenini başka bir sınıf içerisinde kullanabildik.

private Olan Bir Değişkeni Kullanma

Örneğimizde kullanamadığımız x değişkenini setX() ve getX() metotları yardımıyla kullanabiliriz. Kodu şu şekilde düzenleyerek çalıştırdığımızda ekrana x değişkeni de yazılacaktır.

Java’da erişim belirteçlerinin kullanımı temel olarak bu şekildedir. Basit örnekler üzerinde gördüğümüz için belki ne kadar önemli oldukları anlaşılmamış olabilir ancak geniş çaplı projelerde, özellikle kalıtımın olduğu yerlerde sarmalama işleminin mutlaka uygulanacağı yerler olacaktır.

Bir sonraki yazıda ise static ve final Anahtar Sözcükleri konusunu ele alacağız.

Bilgisayar Mühendisi.