C++ में ऑब्जेक्ट-उन्मुख डिजाइन (OOD) एक प्रोग्रामिंग प्रतिमान है जो कार्य और तर्क के बजाय डेटा, या ऑब्जेक्ट्स के आसपास सॉफ़्टवेयर डिज़ाइन को व्यवस्थित करता है। यह मॉड्यूलर, पुन: प्रयोज्य और बनाए रखने योग्य कोड बनाने में मदद करता है। यह लेख C++ में OOD के व्यावहारिक उदाहरण प्रदान करता है और चर्चा करता है कि ऑब्जेक्ट-उन्मुख तकनीकों का उपयोग करने के प्रदर्शन के निहितार्थ का मूल्यांकन कैसे किया जाए।

वस्तु-उन्मुख डिजाइन के मूल सिद्धांत

OOD के मुख्य सिद्धांतों में शामिल हैं encapsulation, विरासत, और बहुरूपतावाद। Encapsulation में कक्षाओं के भीतर डेटा और विधियों को बंडल करना शामिल है। Inheritance नए वर्गों को मौजूदा लोगों से अलग करने की अनुमति देता है, कोड का पुन: उपयोग को बढ़ावा देता है। Polymorphism वस्तुओं को उनके माता-पिता वर्ग के उदाहरणों के रूप में व्यवहार करने में सक्षम बनाता है, लचीला कोड की सुविधा देता है।

व्यावहारिक उदाहरण: आकार वर्ग पदानुक्रम

आकृतियों के लिए एक सरल पदानुक्रम पर विचार करें। आधार वर्ग Shape] सभी आकृतियों के लिए एक आम इंटरफेस को परिभाषित करता है, जैसे कि गणना क्षेत्र। Circle] और Rectangle]] विशिष्ट व्यवहारों को लागू करते हैं।

class Shape {
public:
 virtual double area() const = 0;
 virtual ~Shape() {}
};

class Circle : public Shape {
private:
 double radius;
public:
 Circle(double r) : radius(r) {}
 double area() const override {
 return 3.14159 * radius * radius;
 }
};

class Rectangle : public Shape {
private:
 double width, height;
public:
 Rectangle(double w, double h) : width(w), height(h) {}
 double area() const override {
 return width * height;
 }
};

प्रदर्शन विचार

ऑब्जेक्ट-उन्मुख विशेषताओं का उपयोग आभासी कार्य कॉल और गतिशील स्मृति आवंटन जैसे कारकों के कारण प्रदर्शन को प्रभावित कर सकता है। वर्चुअल फंक्शन्स को अस्थिर दिखने के कारण मामूली ओवरहेड पेश करते हैं। विरासत और गतिशील स्मृति का अत्यधिक उपयोग दक्षता को भी प्रभावित कर सकता है।

प्रदर्शन अनुकूलन युक्तियाँ

  • वर्चुअल फंक्शन को कम करने के लिए प्रदर्शन-क्रिटिकल कोड में कॉल करें।
  • गतिशील स्मृति के बजाय संभव होने पर स्टैक आवंटन का उपयोग करें।
  • सरल वस्तु संबंधों के लिए विरासत पर रचना को प्राथमिकता दें।
  • OOD सुविधाओं से संबंधित बाधाओं की पहचान करने के लिए प्रोफ़ाइल कोड।