Encapsulation (Kapsülleme)
🎯 1. Encapsulation Nedir?
Section titled “🎯 1. Encapsulation Nedir?”Encapsulation (Kapsülleme), nesneye ait verileri (değişkenleri) dış erişimden korumak ve sadece belirli yollarla erişilmesini sağlamak için kullanılır.
Bu yaklaşım, veri gizliliği (data hiding) prensibini uygular.
🔹 2. Neden Kullanılır?
Section titled “🔹 2. Neden Kullanılır?”- Verileri korumak (dışarıdan doğrudan değiştirmeyi engellemek)
- Kodun güvenliğini ve kontrolünü artırmak
- Nesneye ait alanlara sadece getter / setter metotlarıyla erişmek
🔹 3. Temel Kurallar
Section titled “🔹 3. Temel Kurallar”- Sınıf değişkenleri
privateyapılır. - Dışarıdan erişim için
publicgetter ve setter metotları oluşturulur.
🧩 4. Örnek: Basit Encapsulation
Section titled “🧩 4. Örnek: Basit Encapsulation”public class Ogrenci { private String isim; private int yas;
// Getter metotları public String getIsim() { return isim; }
public int getYas() { return yas; }
// Setter metotları public void setIsim(String isim) { this.isim = isim; }
public void setYas(int yas) { if (yas > 0) { this.yas = yas; } else { System.out.println("Yaş negatif olamaz!"); } }}Kullanımı:
Section titled “Kullanımı:”public class Main { public static void main(String[] args) { Ogrenci o = new Ogrenci(); o.setIsim("Mehmet"); o.setYas(20);
System.out.println(o.getIsim() + " - " + o.getYas()); }}💡
yasdeğişkeni dışarıdan doğrudan değiştirilemez. SadecesetYas()üzerinden kontrol edilerek atanabilir.
🔹 5. Getter / Setter Kullanımı
Section titled “🔹 5. Getter / Setter Kullanımı”| Metot | Amacı |
|---|---|
get...() | Değer okumak için kullanılır |
set...() | Değer atamak için kullanılır |
Örnek:
Section titled “Örnek:”kisi.setAd("Ahmet");System.out.println(kisi.getAd());🔹 6. Veri Doğrulama (Validation) ile Kullanım
Section titled “🔹 6. Veri Doğrulama (Validation) ile Kullanım”public class BankaHesabi { private double bakiye;
public void setBakiye(double bakiye) { if (bakiye >= 0) { this.bakiye = bakiye; } else { System.out.println("Bakiye negatif olamaz!"); } }
public double getBakiye() { return bakiye; }}✅ Kullanıcı hatalı değer girmeye çalışsa bile, sınıf kendi verisini korur.
🔹 7. Sadece Okunabilir / Yazılabilir Alanlar
Section titled “🔹 7. Sadece Okunabilir / Yazılabilir Alanlar”🔸 Sadece okunabilir (read-only)
Section titled “🔸 Sadece okunabilir (read-only)”private final String tcNo = "12345678900";
public String getTcNo() { return tcNo;}🔸 Sadece yazılabilir (write-only)
Section titled “🔸 Sadece yazılabilir (write-only)”private String sifre;
public void setSifre(String sifre) { this.sifre = sifre;}🔹 8. Gerçek Hayat Örneği: Personel Sınıfı
Section titled “🔹 8. Gerçek Hayat Örneği: Personel Sınıfı”public class Personel { private String ad; private double maas;
public void setAd(String ad) { this.ad = ad; }
public String getAd() { return ad; }
public void setMaas(double maas) { if (maas >= 17000) { this.maas = maas; } else { System.out.println("Asgari maaşın altında!"); } }
public double getMaas() { return maas; }}Kullanımı:
Section titled “Kullanımı:”Personel p = new Personel();p.setAd("Zeynep");p.setMaas(20000);
System.out.println(p.getAd() + " maaş: " + p.getMaas());🔹 9. Encapsulation vs Public Alanlar
Section titled “🔹 9. Encapsulation vs Public Alanlar”| Özellik | Public Değişken | Encapsulated (Private + Getter/Setter) |
|---|---|---|
| Erişim kontrolü | ❌ Yok | ✅ Var |
| Veri doğrulama | ❌ Yok | ✅ Yapılabilir |
| Güvenlik | Düşük | Yüksek |
| Esneklik | Az | Fazla |
🧠 10. İleri Seviye: Lombok ile Getter/Setter Otomasyonu
Section titled “🧠 10. İleri Seviye: Lombok ile Getter/Setter Otomasyonu”Java projelerinde Lombok kütüphanesi kullanılarak getter ve setter metotları otomatik üretilebilir.
import lombok.Getter;import lombok.Setter;
@Getter@Setterpublic class Ogrenci { private String isim; private int yas;}💡 Lombok, kod tekrarını azaltır; ancak projeye harici kütüphane eklenmesi gerekir.
🏁 Özet
Section titled “🏁 Özet”| Kavram | Açıklama |
|---|---|
| Encapsulation | Verilerin gizlenmesi ve kontrollü erişim |
| private | Değişkenleri dış erişime kapatır |
| get/set | Güvenli veri erişimi sağlar |
| Validation | Yanlış veri girişini engeller |
| Avantaj | Güvenlik, modülerlik, kontrol |
💡 Not: Encapsulation, OOP’nin (Nesne Yönelimli Programlama) temel ilkelerinden biridir ve data hiding prensibini uygular.