Java’da Encapsulation (Kapsülleme)

Java, nesne yönelimli programlamayı temel alan bir dildir. Bu yaklaşımın temel yapı taşlarından biri de Encapsulation (Kapsülleme)’dir. Kapsülleme sayesinde bir sınıfın iç yapısı dış müdahalelere karşı korunur, sadece belirlenen yollarla erişim sağlanır.

Bu yazıda encapsulation nedir, neden önemlidir, nasıl uygulanır ve Java’daki pratik örnekleriyle ne işe yarar detaylı olarak öğreneceksin.


✅ Encapsulation (Kapsülleme) Nedir?

Encapsulation, bir nesnenin verilerini (özelliklerini) ve bu verilerle ilgili işlemleri (metotları) tek bir yapı (sınıf) içinde toplama ve dış dünyadan doğrudan erişimi kısıtlama işlemidir.

🔐 Amaç:

  • Veri gizliliğini sağlamak
  • Nesneleri dışarıdan gelebilecek yanlış kullanıma karşı korumak
  • Yazılımın bakımını ve güvenliğini kolaylaştırmak

🧱 Java’da Kapsülleme Nasıl Yapılır?

1. Alanlar (field) private olarak tanımlanır.

2. Erişim için getter ve setter metotları kullanılır.


📦 Örnek: Kapsüllenmiş Öğrenci Sınıfı

public class Ogrenci {
    private String isim;
    private int yas;

    // Getter (okuma metodu)
    public String getIsim() {
        return isim;
    }

    // Setter (değiştirme metodu)
    public void setIsim(String isim) {
        this.isim = isim;
    }

    public int getYas() {
        return yas;
    }

    public void setYas(int yas) {
        if (yas > 0) {
            this.yas = yas;
        } else {
            System.out.println("Yaş pozitif olmalıdır.");
        }
    }
}

Kullanımı:

public class Main {
    public static void main(String[] args) {
        Ogrenci o1 = new Ogrenci();
        o1.setIsim("Furkan");
        o1.setYas(21);

        System.out.println("İsim: " + o1.getIsim());
        System.out.println("Yaş: " + o1.getYas());
    }
}


⚠️ Neden private ve getter/setter Kullanılır?

Eğer değişkenler doğrudan public olursa, dışarıdan hatalı veri atanabilir. private yaparak dışarıdan doğrudan erişimi engeller, sadece senin tanımladığın kurallarla veri girişine izin verirsin.

Örneğin:

o1.setYas(-5); // setter metodu sayesinde bu işlem engellenir

Bu durum yazılımda veri bütünlüğünü sağlar.


Avantajları

AvantajAçıklama
Veri GüvenliğiHatalı veri girişini engeller
Kodun KontrolüDeğişkenlere ulaşımı kontrol altına alır
Bakımı KolaylaştırırDeğişiklik yapıldığında tek bir noktadan yönetilir
Esneklik SağlarFarklı iş mantıkları getter/setter içine yerleştirilebilir

Gelişmiş Kullanım: Sadece Getter – Read-Only Alan

public class Kitap {
    private final String isbn = "123-456-789";

    public String getIsbn() {
        return isbn;
    }
}

Bu kullanımda değer sadece okunabilir, dışarıdan değiştirilemez.


Setter Olmadan – Write-Only Alan

public class SifreliKullanici {
    private String sifre;

    public void setSifre(String sifre) {
        this.sifre = sifre;
    }
}

Bu durumda değer yalnızca yazılabilir ama okunamaz. Örneğin şifre bilgisi dışarıya gösterilmez.

guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
0
YORUM YAPx