Skip to content

Latest commit

 

History

History
66 lines (56 loc) · 2.49 KB

Encapsulation.md

File metadata and controls

66 lines (56 loc) · 2.49 KB

1.1 Kapsülleme (Encapsulation)

  • Kapsülleme (Encapsulation), bir sınıfın verilerini ve bu veriler üzerinde işlem yapan metotları bir arada tutarak verilere erişimi kontrol etme prensibidir.
  • Java'da kapsülleme genellikle private değişkenler ve bu değişkenlere kontrollü erişim sağlayan public metotlar (getter ve setter) ile uygulanır.
Örnek:

Bir Araba sınıfımız olsun. Arabanın hızına herkesin doğrudan müdahale etmesini istemiyoruz.

public class Araba {
    private int hiz;
    public int getHiz(){
        return this.hiz;
    }
    public void setHiz(int hiz)
    {
        if(hiz>=0&&hiz<=300)
        {
            this.hiz=hiz;
        }
    }
}
Kodun açıklaması
  • private int hiz; — hiz değişkenine sınıf dışından doğrudan erişilmesini engeller.
  • getHiz() — mevcut hızı okumayı sağlar.
  • setHiz(int hiz) — hız değerini belirli koşullara göre değiştirmeyi sağlar.
  • this.hiz — mevcut nesnenin hiz değişkenini ifade eder.
Kullanım
public class Main {
    public static void main(String[] args) {
        Araba araba = new Araba();

        araba.setHiz(120);
        System.out.println(araba.getHiz()); // 120

        araba.setHiz(-50);
        System.out.println(araba.getHiz()); // 120
    }
}
Çıktı
image

Neden sonuç 120 olarak kalıyor? Çünkü setHiz() metodu negatif hız değerini kabul etmiyor. Böylece nesnenin verisi kontrollü biçimde korunuyor.

Kapsülleme olmasaydı ne olurdu?

Kapsülleme kullanılmadan

public int hiz;

Bu durumda sınıf dışından şu şekilde erişilebilir:

araba.hiz = -50;

Negatif bir değer doğrudan atanabilir ve sınıfın belirlediği kurallar atlanabilir.

Kapsüllemenin avantajları

  • Veri güvenliği: Değişkenlere doğrudan erişimi sınırlar.
  • Kontrollü erişim: Verilerin hangi koşullarda değiştirileceğini belirler.
  • Bakım kolaylığı: İç uygulamayı değiştirmeyi kolaylaştırır.
  • Doğrulama: Geçersiz değerlerin atanmasını önlemeye yardımcı olur.

Önemli: Kapsülleme yalnızca getter ve setter yazmak değildir. Asıl amaç, nesnenin durumunu korumak ve erişimi gerektiği kadar sınırlandırmaktır. Her değişken için setter oluşturmak zorunlu değildir.