Encapsulation (Java)

Bir sınıfın özelliklerini başka sınıflardan gizlemeye encapsulation denir.

Özelliklerimizi private tanımlayarak sınıfımızda tanımladığımız özellikleri (attributes) koruyoruz.

Ek olarak özellikleri public tanımladığımızda constructor kullanamadığımız için çağırması v.b baya zorlaşacaktı. Ayrıca ulaşılmasını veya değiştirilmesini istemediğimiz özellikler başka bir class üzerinde çalışan kişi tarafından değiştirilebilir. Getter-setter metodlarımızı da public tanımlayarak encapsulation kavramını güçlendirebiliriz.

Şimdi encapsulation için bir kod bloğunu inceleyelim.

Aşağıdaki kodda yer alan Abone sınıfında isim,bakiye ve şehir özelliklerimizi private olarak tanımlamamız, sınıf dışından özelliklerin değiştirilemeyeceği anlamına geliyor.

public class Abone {
     private String isim;
     private int bakiye = 120;
     private String sehir;
     
    public Abone(String isim, int bakiye, String sehir){
        this.isim = isim;
        if(bakiye >= 0 && bakiye < 120){
        this.bakiye = bakiye;
        }
        this.sehir = sehir;
        
    }
    
    public void dogal_gaz_kullan(int miktar){
        if((this.getBakiye() - miktar) < 0 )
            System.out.println("Yeterli bakiye yok ...");
    
        else this.setBakiye(this.getBakiye() - miktar);
        if(this.getBakiye() <= 0){
            System.out.println("Bakiyeniz bitmiştir. Kredi Limiti = 120 TL");
        }
    
    }
    
    
    public void bakiye_ogren(){
        System.out.println("Bakiye  = " + getBakiye());
    }

   
    public String getIsim() {
        return isim;
    }

   
    public void setIsim(String isim) {
        this.isim = isim;
    }

    
    public int getBakiye() {
        return bakiye;
    }

   
    public void setBakiye(int bakiye) {
        this.bakiye = bakiye;
    }

    
    public String getSehir() {
        return sehir;
    }

   
    public void setSehir(String sehir) {
        this.sehir = sehir;
    }
    
    
    
    
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir