Encapsulation (Kapsülleme): public, private ve protected Farkları

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 Yeripublicprotectedprivate
Sınıf İçiEvetEvetEvet
Türetilmiş Sınıf (Miras)EvetEvetHayır
Sınıf Dışı (Main vb.)EvetHayırHayı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.
 
Geri
Üst