Kapsülleme, nesneye yönelik tasarımın bir prensibidir ve nesnenin iç yapısını gizleyerek yalnızca gerekli olan kamu arayüzünü sağlamak anlamına gelir.
Konu Tarihi: OO P'nin ortaya çıkışından beri en önemli görevlerden biri, nesnelerin iç durumunu dışardan hatalı değişikliklerden korumak ve mantık üzerinde sıkı kontrol sağlamaktır.
Sorun: Kapsülleme olmadan, tüm veriler ve yöntemler dış kod tarafından erişilebilir hale gelir, bu da nesnelerin durumunu kontrol etme kaybına ve zor tespit edilen hatalara neden olur.
Çözüm:
C++'da üç erişim belirleyici kullanılır: private, protected, public. private, sınıf dışında üyelere erişimi yasaklar, protected yalnızca miras alanlara erişim sağlar, public üyeleri arayüzün bir parçası haline getirir.
Kod örneği:
class Stack { private: int *data; int top; public: Stack(); void push(int val); int pop(); };
Anahtar özellikler:
Private üyeler sınıf dışında hiçbir şekilde değiştirilemez mi?
Yanlış. Arkadaş fonksiyonları, arkadaş sınıflar veya güvensiz yöntemler (örneğin, işaretçilerin dönüştürülmesi veya tanımsız davranış yoluyla) kullanılabilir.
Miras alma sırasında belirteçler hangi sırayla uygulanır (private, protected, public)?
Eğer miras alma private olarak ilan edilirse, temel sınıfın tüm public ve protected üyeleri türetilen sınıfın private üyeleri haline gelir.
Protected ve private miras alma arasındaki fark nedir?
Protected miras alındığında, temel sınıfın tüm public ve protected üyeleri türetilen sınıfın protected üyeleri haline gelir; private'da ise, hepsi private olur.
Sınıfın tüm üyeleri public olarak ilan edilmiştir, herhangi bir dış kod yapıyı değiştirebilir ve nesnenin invariantsını bozabilir.
Artıları:
Eksileri:
Sadece gerekli public yöntemler kullanılır, diğer veriler kapalıdır (private), durum korunur.
Artıları:
Eksileri: