एनकैप्सुलेशन क्या है?
डेटा और उस डेटा को मैनिपुलेट करने वाले मेथड्स को एक ही घटक (क्लास) में बांधना और बाहरी हस्तक्षेप से बचाना। डेटा छिपाने (data hiding) की ओर ले जाता है।
C++ में कार्यान्वयन
क्लासेस (उपयोगकर्ता-परिभाषित डेटा प्रकार) का उपयोग करके। क्लास डेटा सदस्यों और मेथड्स को एक साथ बांधती है।
C++ प्रोग्राम उदाहरण
#include <iostream>
using namespace std;
class EncapsulationDemo {
private:
int length, breadth, height;
public:
void setValues(int l, int b, int h) {
length = l;
breadth = b;
height = h;
}
void calcVolume() {
cout << "Length = " << length << endl;
cout << "Breadth = " << breadth << endl;
cout << "Height = " << height << endl;
cout << "Volume = " << length * breadth * height << endl;
}
};
int main() {
EncapsulationDemo obj;
obj.setValues(5, 3, 2);
obj.calcVolume();
return 0;
}
आउटपुट
Length = 5 Breadth = 3 Height = 2 Volume = 30
कोड व्याख्या
EncapsulationDemo क्लास
length, breadth, height प्राइवेट हैं - बाहर से सीधे एक्सेस नहीं किए जा सकते। पब्लिक फ़ंक्शंस setValues() और calcVolume() नियंत्रित एक्सेस प्रदान करते हैं।
मुख्य फ़ंक्शन
ऑब्जेक्ट बनाता है, setValues() से मान सेट करता है, calcVolume() से आयतन गणना और प्रदर्शन करता है।
लाभ
- डेटा छिपाना: आंतरिक प्रतिनिधित्व छिपा रहता है
- नियंत्रित एक्सेस: सेटर्स/गेटर्स के माध्यम से सत्यापन संभव
- रखरखाव: आंतरिक कार्यान्वयन बदलने पर बाहरी कोड प्रभावित नहीं होता
- पुन: उपयोगिता: क्लास को स्वतंत्र इकाई के रूप में उपयोग किया जा सकता है
एनकैप्सुलेशन बनाम एब्स्ट्रैक्शन
| पहलू | एनकैप्सुलेशन | एब्स्ट्रैक्शन |
|---|---|---|
| फोकस | डेटा और मेथड्स बांधना | आवश्यक विवरण दिखाना, कार्यान्वयन छिपाना |
| स्तर | कार्यान्वयन स्तर | डिजाइन/इंटरफेस स्तर |
| कीवर्ड | private, protected | abstract, interface |