crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
Encapsulation: Veri Güvenliği ve Kapsülleme
Kapsülleme, bir nesnenin değişkenlerini "özel" (private) tutup, onlara sadece "genel" (public) fonksiyonlar aracılığıyla erişilmesini sağlar. Bu sayede verinin doğruluğunu kontrol edebiliriz (Validation).
1. Erişim Belirleyiciler (Access Specifiers)
C++'ta sınıf üyelerinin (değişken ve fonksiyonlar) sınırlarını çizmek için üç ana anahtar kelime kullanılır:
public: Herkesin erişimine açıktır. Sınıfın dışından doğrudan ulaşılabilir.
private: Sınıfa özeldir. Sadece o sınıfın içindeki fonksiyonlar erişebilir. (Varsayılan erişim tipidir).
protected: Yarı-özeldir. Sınıf dışından erişilemez ama o sınıftan türetilen (miras alan) sınıflar erişebilir.
2. Neden private Kullanmalıyız? (Getter ve Setter Mantığı)
Değişkenleri public yaparsanız, birisi gelip yaş değerini -5 yapabilir. Ancak private yapıp bir Setter fonksiyonu yazarsanız, bu hatayı engelleyebilirsiniz.
C++:
class Personel {
private:
int yas; // Disariya kapali
public:
// Setter: Veriyi kontrol ederek kaydeder
void setYas(int y) {
if (y > 0) {
yas = y;
} else {
cout << "Gecersiz yas!" << endl;
}
}
// Getter: Veriyi disariya okutur
int getYas() {
return yas;
}
};
3. Erişim Belirleyicilerin Karşılaştırması
| Erişim Yeri | public | protected | private |
|---|---|---|---|
| Sınıf İçi | Evet | Evet | Evet |
| Türetilmiş Sınıf (Miras) | Evet | Evet | Hayır |
| Sınıf Dışı (Main vb.) | Evet | Hayır | Hayır |
4. Encapsulation'ın Avantajları
[]Kontrol Sizdedir: Verinin nasıl okunacağını veya değiştirileceğini siz belirlersiniz.
[]Esneklik: Sınıfın iç yapısını değiştirdiğinizde (örneğin yas değişkenini int yerine string yaptığınızda), dışarıdaki kodlar bozulmadan sadece fonksiyonları güncellemeniz yeterli olur.- Güvenlik: Kritik verilerin (şifreler, bakiye bilgileri) dışarıdan kazara sıfırlanmasını önler.
Sonuç
Kapsülleme, "Siyah Kutu" mantığıyla çalışır. Bir televizyonun kumandasını (public arayüz) kullanırsınız ama içindeki devrelerin (private detaylar) nasıl çalıştığını bilmenize veya onlara dokunmanıza gerek yoktur. Profesyonel kod yazımında değişkenlerin neredeyse tamamı private tutulur.