crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
Encapsulation: Veriyi Korumaya Almak
1. Neden Kapsülleme Yapıyoruz?
Evinizin dış kapısını düşünün. Herkesin içeri dalıp buzdolabınızdan yemek almasına izin vermezsiniz, değil mi? Bunun yerine kapıyı kilitler (veriyi private yapar) ve sadece izin verdiğiniz kişilerin zile basarak (metotlar üzerinden) sizinle iletişime geçmesini sağlarsınız.
Encapsulation'ın 3 Ana Amacı:
Veri Gizleme (Data Hiding): Dışarıdaki sınıfların veriyi doğrudan değiştirmesini engellemek.
Kontrollü Erişim (Access Control): Veri okunurken veya yazılırken kurallar koymak.
Esneklik: Sınıf içindeki mantığı değiştirdiğinizde, o sınıfı kullanan diğer kodların bozulmamasını sağlamak.
2. Getter ve Setter Metotlarının Gücü
Bir değişkeni private yaptığınızda, o değişkene dışarıdan ulaşılamaz. Erişimi sağlamak için Getter (getir) ve Setter (ayarla) metotlarını yazarız.
Hatalı Veri Girişini Engelleme
Eğer bir "Banka Hesabı" sınıfınız varsa ve bakiye değişkeni public ise, biri yanlışlıkla bakiyeyi negatif bir sayı yapabilir. Kapsülleme ile bunu engelleyebiliriz:
Java:
public class BankaHesabi {
private double bakiye; // Dışarıdan doğrudan ulaşılamaz
// SETTER: Veriyi ayarlarken kontrol yapıyoruz
public void setBakiye(double miktar) {
if (miktar >= 0) {
this.bakiye = miktar;
} else {
System.out.println("Hata: Bakiye negatif olamaz!");
}
}
// GETTER: Veriyi güvenle dışarı veriyoruz
public double getBakiye() {
return this.bakiye;
}
}
3. Salt Okunur (Read-Only) Sınıflar
Bazı verilerin sadece okunmasını, asla değiştirilmemesini isteyebilirsiniz. Bu durumda sadece Getter yazıp Setter yazmayarak o veriyi korumaya alırsınız. Örneğin bir kullanıcının id numarası değiştirilemez olmalıdır.
4. Encapsulation Olmadan vs. Olduğunda
| Özellik | Doğrudan Erişim (Public) | Encapsulation (Private + Getter/Setter) |
|---|---|---|
| Güvenlik | Sıfır. Herkes her şeyi değiştirebilir. | Yüksek. Veri sadece izin verilen şekilde değişir. |
| Doğrulama | Yapılamaz. | Setter içinde if-else ile kontrol edilebilir. |
| Bakım | Zor. Değişken adı değişirse her yer bozulur. | Kolay. Sadece metodun içini güncellemek yeterli. |
Sonuç
Encapsulation, "Kendi işini kendin yap, başkasının işine karışma" kuralıdır. Getter ve Setter metotları, sınıfınızın güvenliğini sağlayan bekçilerdir. Profesyonel Java dünyasında (özellikle Spring Framework gibi yapılarda) sınıfların bu standarda (Java Beans) uyması beklenir.