Kapsülleme, verileri bu verileri işleyen işlevlerle gruplama ihtiyacından kaynaklanan nesne yönelimli programlamanın (OOP) temel prensiplerinden biridir ve kullanıcıdan uygulama detaylarını gizlemeyi amaçlar.
OOP'ye olan talep ile birlikte, kapsülleme, programların güvenilirliğini artırma, hataları azaltma ve kodun bakımı kolaylaştırma amacı güdüyordu. C++'da, veri gizleme ve nesneyle etkileşim için bir arayüz sağlama aracılığıyla gerçekleştirilir.
Kapsülleme olmadan, sınıfın iç verileri ve uygulama detayları programın herhangi bir yerinden değiştirilebilir. Bu, hatalara, değişiklik yapma zorluklarına ve kodun kötü yönetilmesine neden olur.
C++'da kapsülleme, sınıflardaki erişim belirleyicileri (private, protected, public) aracılığıyla elde edilir. Sınıfın iç verileri private veya protected ile bildirilir ve bunlara erişim, açık yöntemler (getter'lar ve setter'lar) aracılığıyla sağlanır.
Kodu örneği:
class Account { private: double balance; public: Account(double initial) : balance(initial) {} double getBalance() const { return balance; } void deposit(double amount) { if (amount > 0) balance += amount; } };
Ana özellikleri:
protected üyesi, sınıfın bir örneği bulunduğu sürece programın her yerinden erişilebilir mi?
Hayır, protected üyeler yalnızca sınıfın kendisinin, arkadaşların ve türetilmiş sınıfların yöntemlerinden erişilebilir, diğer sınıflardan ve dışarıdan bir nesne aracılığıyla erişilemez.
Bir sınıfın public üyesi "kapsüllenebilir" mi?
Hayır, public üyeler kapsüllenemez, bunların görevi dış arayüz sağlamaktır. Bazen aşırı derecede açık olan public üyeler, kapsülleme ilkesini ihlal eder.
private belirleyici, çalışma zamanında kodun güvenliğini artırır mı?
Hayır, erişim belirleyicileri yalnızca derleyici düzeyinde çalışır ve çalıştırılabilir dosyada verilere erişimi engellemez - ancak tasarım hatalarını sınırlar.
Geliştirici, "iş mantığını basitleştirmek" için sınıfın tüm değişkenlerini public yaptı.
Artılar:
Eksiler:
Veriler private olarak bildirilmiş, getter'lar/setter'lar aracılığıyla etkileşim ve zorunlu doğrulama yapılmıştır.
Artılar:
Eksiler: