Java Programlama

Kapsülleme (Encapsulation)

Kapsülleme verileri ve bu verileri kullanan ya da değiştiren program kodlarını birbirine bağlayarak dışarıdan yapılabilecek müdahalelere karşı koruyan bir sistemdir. Nesneye yönelik programlamada, bir sınıf tanımlaması altında kod ve veri buşekilde koruma altına alındığında bir nesne oluşturulmuş olur. Nesne kapsamındaki veri ve verilere işlem yapan kodlar; sadece içinde tanımlı olduğu nesne tarafından veya dışarıdan erişilecek şekilde tanımlanabilir. Nesneye özel kod ve verilere sadece nesne içinde yer alan diğer kodlar tarafından erişlebilir. Nesne dışında yer alan kodlar nesneye özel verilere erişemezler. Nesne içinde programdaki tüm kodların erişimine açık veri ve kodlar açık olarak tanımlanır. Tüm erişimlere açık olan nesne elemanları, nesneye özel elemanlara erişim için kullanılır.

Kapsülleme ile bir sınıf, içinde bulunan veri ve kodları (metodları) korur. Sınıfın veri ve metodlarına erişim için 4 farklı tanımlama yapılabilir:

Private: Sadece sınıfa özel elemanlardır. Sınıfta yer alan elemanlar tarafından erişim sağlanabilir.

Public: Program içinde yer alan sınıf dışındaki tüm kodlar tarafından erişim sağlanabilir.

Protected: Bu sınıftan türetilen sınıf ve aynı pakette olanlara açık olan elemanlardır.

Default: Herhangi bir tanımlama yapılmazsa, aynı pakettekilerin erişebildiği elemanlardır.

Kapsülleme ile hem veriler hem de metotların erişilebilme durumu belirlenir.

Sınıf içinde private olarak tanımlanan veri ve metodlara sadece sınıf içindeki metotlar erişebilir, sınıf dışında yer alan kodlar erişemez. Bu sayede veri ve metotlar korunduğundan bu işlem veri gizleme adı da verilir.

/* personel.java : Verilerin korunduğu sınıf bildirimi */
public class personel {
  public String adi;    /* Sınıf dışından erişilebilen public değişken  */
  public String soyadi; /* Sınıf dışından erişilebilen public değişken  */
  private int yasi;     /* Sadece sınıf içinden erişilebilen private değişken  */

  /* Sınıf dışından erişilebilen public metod */
  public String getBilgi() {
    return adi + " " + soyadi;
  }
 
  /* Sınıf dışından erişilebilen public metod */
  public int getPrivBilgi() {
    return yasi;
  }

  /* Sınıf dışından erişilebilen public metod */
  public void setBilgi(String cadi, String csoyadi, int cyasi) {
    adi = cadi;
    soyadi = csoyadi;
    SetPrivBilgi(cyasi);
  } 

  /* Sadece sınıf içinden erişilebilen private metod */
  private void SetPrivBilgi(int yasi) {
    this.yasi =  yasi;
  }
}
/* javaprog.java : Korunan sınıfı kullanan sınıf */
public class javaprog {
  public static void main(String args[]){
    personel jprogIns = new personel();    
    /* 27 değeri SetPrivBilgi() private fonksiyonunun çağırılması için kullanılır. */
    jprogIns.setBilgi("Ahmet", "Kara", 27); 
    String adsoyad = jprogIns.getBilgi(); 
    int yas = jprogIns.getPrivBilgi(); 
    System.out.println(adsoyad);
    System.out.println(yas); 
  }
}

Yukarıdaki iki dosyanın aynı dizin içinde yer alması yeterlidir. Komut satırında aşağıdaki satırları yazdığınızda program derlenir ve çalışır:

C:\>javac javaprog.java
C:\>java javaprog
Ahmet Kara
27