प्रौद्योगिकी साझेदारी

[C]पैकेज

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. पैकेजिंग् इत्यस्य परिभाषा

एन्कैप्सुलेशनं वस्तु-उन्मुखप्रोग्रामिङ्गस्य (OOP) (एन्कैप्सुलेशन, उत्तराधिकारः, बहुरूपता) त्रयाणां मूलभूतविशेषतानां मध्ये एकम् अस्ति । एतत् एतेषां दत्तांशस्य स्वतन्त्रे एकके (वर्गे) संचालनार्थं दत्तांशस्य (गुणानां) पद्धतीनां (कार्यस्य) च संयोजनं, यथासम्भवं वस्तुनः आन्तरिकविवरणं गोपयितुं, केवलं अन्तरफलकं बहिः जगति प्रकाशयितुं च निर्दिशति अस्य उद्देश्यं वस्तुनः दत्तांशस्य रक्षणं, बाह्यसङ्केतः वस्तुनः आन्तरिकदत्तांशसंरचनानां प्रत्यक्षप्रवेशं निवारयितुं, दोषान् न्यूनीकर्तुं, जटिलतां सरलीकर्तुं च भवति

2. पॅकेजिंग् इत्यस्य उद्देश्यम्

  1. दत्तांशगोपनम्: वस्तुनः दत्तांशं प्रत्यक्षबाह्यप्रवेशात् रक्षन्तु तथा च दत्तांशस्य अवैधरूपेण परिवर्तनं निवारयन्तु।
  2. अन्तरफलकं स्पष्टं कुर्वन्तु: सीमित-अन्तरफलकान् (विधयः) उजागरयित्वा बाह्य-सङ्केतः केवलं एतेषां अन्तरफलकानां माध्यमेन वस्तुना सह अन्तरक्रियां कर्तुं शक्नोति, तस्मात् वस्तुनः व्यवहारः स्पष्टः भवति
  3. मॉड्यूलर: कोडस्य मॉड्यूलरतायां पुनः उपयोगे च सुधारं कर्तुं सम्बन्धितदत्तांशं संचालनं च एकत्र समाहितं कुर्वन्तु।

3. C++ मध्ये एन्कैप्सुलेशनं कार्यान्वितुं पद्धतयः

  1. Class इत्यस्य उपयोगः : वर्गं परिभाषयन्ते सति, दत्तांशसदस्यान् (गुणान्) निजीरूपेण अथवा सुरक्षितरूपेण सेट् कुर्वन्तु, एतेषां दत्तांशस्य संचालनस्य पद्धतीः सार्वजनिकरूपेण सेट् कुर्वन्तु । एवं प्रकारेण बाह्यसङ्केतः वर्गस्य निजसदस्यान् प्रत्यक्षतया प्राप्तुं न शक्नोति, परन्तु सार्वजनिकविधिद्वारा एव परोक्षरूपेण प्रवेशं कर्तुं शक्नोति ।

  2. अभिगम संशोधकः

    • public: कस्यापि बाह्यसङ्केतेन सुलभम्।
    • protected: केवलं वर्गे एव तथा व्युत्पन्नवर्गेषु (उपवर्गेषु) एव प्रवेशः कर्तुं शक्यते ।
    • private: केवलं वर्गस्य अन्तः एव प्रवेशः कर्तुं शक्यते, न तु व्युत्पन्नवर्गेषु।
  3. निर्माता तथा विध्वंसक : कन्स्ट्रक्टर् मार्गेण वस्तुनः आरम्भं कुर्वन्तु तथा च डिस्ट्रक्टर् मार्गेण वस्तुना आक्रान्तं संसाधनं स्वच्छं कुर्वन्तु। ते वस्तुनः जीवनचक्रं नियन्त्रयन्ति इति कारणतः एन्कैप्सुलेशनस्य अपि भागाः भवन्ति ।

4. उदाहरणम्

अधः सरलं C++ wrapper उदाहरणं अस्ति यत् a दर्शयतिRectangle(आयत) वर्गस्य कार्यान्वयनम् ।

  1. #include <iostream>
  2. class Rectangle {
  3. private:
  4. double width; // 矩形的宽
  5. double height; // 矩形的高
  6. public:
  7. // 构造函数
  8. Rectangle(double w, double h) : width(w), height(h) {}
  9. // 设置宽度
  10. void setWidth(double w) {
  11. width = w;
  12. }
  13. // 获取宽度
  14. double getWidth() const {
  15. return width;
  16. }
  17. // 设置高度
  18. void setHeight(double h) {
  19. height = h;
  20. }
  21. // 获取高度
  22. double getHeight() const {
  23. return height;
  24. }
  25. // 计算面积
  26. double getArea() const {
  27. return width * height;
  28. }
  29. };
  30. int main() {
  31. Rectangle rect(5.0, 10.0);
  32. std::cout << "Rectangle area: " << rect.getArea() << std::endl;
  33. rect.setWidth(7.0);
  34. std::cout << "New Rectangle area: " << rect.getArea() << std::endl;
  35. return 0;
  36. }

अस्मिन् उदाहरणे .Rectangleसामान्यwidthतथाheight गुणाः निजीकृताः भवन्ति तथा च बाह्यसङ्केतः प्रत्यक्षतया तान् प्राप्तुं न शक्नोति ।तस्य स्थाने वयं सार्वजनिकपद्धतीनां उपयोगं कुर्मः यथा...setWidthgetHeightतथाgetArea ) एतान् निजीगुणान् अभिगन्तुं परिवर्तयितुं च । एषा पद्धतिः दत्तांशसङ्ग्रहणं कार्यान्वयति तथा च बाह्यप्रयोगाय स्पष्टं अन्तरफलकं प्रदाति ।