2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
एन्कैप्सुलेशनं वस्तु-उन्मुखप्रोग्रामिङ्गस्य (OOP) (एन्कैप्सुलेशन, उत्तराधिकारः, बहुरूपता) त्रयाणां मूलभूतविशेषतानां मध्ये एकम् अस्ति । एतत् एतेषां दत्तांशस्य स्वतन्त्रे एकके (वर्गे) संचालनार्थं दत्तांशस्य (गुणानां) पद्धतीनां (कार्यस्य) च संयोजनं, यथासम्भवं वस्तुनः आन्तरिकविवरणं गोपयितुं, केवलं अन्तरफलकं बहिः जगति प्रकाशयितुं च निर्दिशति अस्य उद्देश्यं वस्तुनः दत्तांशस्य रक्षणं, बाह्यसङ्केतः वस्तुनः आन्तरिकदत्तांशसंरचनानां प्रत्यक्षप्रवेशं निवारयितुं, दोषान् न्यूनीकर्तुं, जटिलतां सरलीकर्तुं च भवति
Class इत्यस्य उपयोगः : वर्गं परिभाषयन्ते सति, दत्तांशसदस्यान् (गुणान्) निजीरूपेण अथवा सुरक्षितरूपेण सेट् कुर्वन्तु, एतेषां दत्तांशस्य संचालनस्य पद्धतीः सार्वजनिकरूपेण सेट् कुर्वन्तु । एवं प्रकारेण बाह्यसङ्केतः वर्गस्य निजसदस्यान् प्रत्यक्षतया प्राप्तुं न शक्नोति, परन्तु सार्वजनिकविधिद्वारा एव परोक्षरूपेण प्रवेशं कर्तुं शक्नोति ।
अभिगम संशोधकः:
public
: कस्यापि बाह्यसङ्केतेन सुलभम्।protected
: केवलं वर्गे एव तथा व्युत्पन्नवर्गेषु (उपवर्गेषु) एव प्रवेशः कर्तुं शक्यते ।private
: केवलं वर्गस्य अन्तः एव प्रवेशः कर्तुं शक्यते, न तु व्युत्पन्नवर्गेषु।निर्माता तथा विध्वंसक : कन्स्ट्रक्टर् मार्गेण वस्तुनः आरम्भं कुर्वन्तु तथा च डिस्ट्रक्टर् मार्गेण वस्तुना आक्रान्तं संसाधनं स्वच्छं कुर्वन्तु। ते वस्तुनः जीवनचक्रं नियन्त्रयन्ति इति कारणतः एन्कैप्सुलेशनस्य अपि भागाः भवन्ति ।
अधः सरलं C++ wrapper उदाहरणं अस्ति यत् a दर्शयतिRectangle
(आयत) वर्गस्य कार्यान्वयनम् ।
- #include <iostream>
-
- class Rectangle {
- private:
- double width; // 矩形的宽
- double height; // 矩形的高
-
- public:
- // 构造函数
- Rectangle(double w, double h) : width(w), height(h) {}
-
- // 设置宽度
- void setWidth(double w) {
- width = w;
- }
-
- // 获取宽度
- double getWidth() const {
- return width;
- }
-
- // 设置高度
- void setHeight(double h) {
- height = h;
- }
-
- // 获取高度
- double getHeight() const {
- return height;
- }
-
- // 计算面积
- double getArea() const {
- return width * height;
- }
- };
-
- int main() {
- Rectangle rect(5.0, 10.0);
- std::cout << "Rectangle area: " << rect.getArea() << std::endl;
- rect.setWidth(7.0);
- std::cout << "New Rectangle area: " << rect.getArea() << std::endl;
- return 0;
- }
अस्मिन् उदाहरणे .Rectangle
सामान्यwidth
तथाheight
गुणाः निजीकृताः भवन्ति तथा च बाह्यसङ्केतः प्रत्यक्षतया तान् प्राप्तुं न शक्नोति ।तस्य स्थाने वयं सार्वजनिकपद्धतीनां उपयोगं कुर्मः यथा...setWidth
、getHeight
तथाgetArea
) एतान् निजीगुणान् अभिगन्तुं परिवर्तयितुं च । एषा पद्धतिः दत्तांशसङ्ग्रहणं कार्यान्वयति तथा च बाह्यप्रयोगाय स्पष्टं अन्तरफलकं प्रदाति ।