मान लीजिए हमें कुछ शर्तों के साथ एक बॉक्स क्लास परिभाषित करनी है। ये इस प्रकार हैं:
- लंबाई, चौड़ाई और ऊंचाई के लिए तीन विशेषताएं l, b, और h हैं (ये निजी चर हैं)
- l, b, h को 0 पर सेट करने के लिए एक नॉन-पैरामीट्राइज्ड कंस्ट्रक्टर और मान प्रारंभ में सेट करने के लिए एक पैरामीट्राइज्ड कंस्ट्रक्टर परिभाषित करें
- प्रत्येक विशेषता के लिए गेटर मेथड परिभाषित करें
- बॉक्स का आयतन प्राप्त करने के लिए calculateVolume() फंक्शन परिभाषित करें
- कम-से ऑपरेटर (<) को ओवरलोड करें ताकि वर्तमान बॉक्स दूसरे बॉक्स से छोटा है या नहीं जांच सकें
- एक वेरिएबल बनाएं जो बने बॉक्स की संख्या गिन सके
यदि हम तीन बॉक्स (0, 0, 0) (5, 8, 3), (6, 3, 8) के लिए इनपुट लेते हैं और प्रत्येक बॉक्स का डेटा प्रदर्शित करते हैं, और जांचते हैं कि तीसरा बॉक्स दूसरे से छोटा है या नहीं, और छोटे बॉक्स का आयतन निकालते हैं, और काउंट वेरिएबल से यह भी प्रिंट करते हैं कि कितने बॉक्स हैं।
तो आउटपुट होगा:
Box 1: (length = 0, breadth = 0, width = 0) Box 2: (length = 5, breadth = 8, width = 3) Box 3: (length = 6, breadth = 3, width = 8) Box 3 is smaller, its volume: 120 There are total 3 box(es)
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- आयतन निकालने के लिए l*b*h लौटाएं
- कम-से (<) ऑपरेटर को ओवरलोड करने के लिए जांचें:
- यदि वर्तमान ऑब्जेक्ट का l दिए गए दूसरे ऑब्जेक्ट के l के समान नहीं है, तो
- वर्तमान ऑब्जेक्ट का l दूसरे ऑब्जेक्ट के l से छोटा है तो true लौटाएं
- अन्यथा यदि वर्तमान ऑब्जेक्ट का b दिए गए दूसरे ऑब्जेक्ट के b के समान नहीं है, तो
- वर्तमान ऑब्जेक्ट का b दूसरे ऑब्जेक्ट के b से छोटा है तो true लौटाएं
- अन्यथा यदि वर्तमान ऑब्जेक्ट का h दिए गए दूसरे ऑब्जेक्ट के h के समान नहीं है, तो
- वर्तमान ऑब्जेक्ट का h दूसरे ऑब्जेक्ट के h से छोटा है तो true लौटाएं
- यदि वर्तमान ऑब्जेक्ट का l दिए गए दूसरे ऑब्जेक्ट के l के समान नहीं है, तो
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <iostream> using namespace std; class Box { int l, b, h; public: static int count; Box() : l(0), b(0), h(0) { count++; } Box(int length, int breadth, int height) : l(length), b(breadth), h(height) { count++; } int getLength() const {return l;} int getBreadth() const {return b;} int getHeight() const {return h;} long long CalculateVolume() const { return 1LL * l * b * h; } bool operator<(const Box& another) const { if (l != another.l) { return l < another.l; } if (b != another.b) { return b < another.b; } return h < another.h; } }; int Box::count = 0; int main(){ Box b1; Box b2(5,8,3); Box b3(6,3,8); printf("Box 1: (length = %d, breadth = %d, width = %d)\n",b1.getLength(), b1.getBreadth(), b1.getHeight()); printf("Box 2: (length = %d, breadth = %d, width = %d)\n",b2.getLength(), b2.getBreadth(), b2.getHeight()); printf("Box 3: (length = %d, breadth = %d, width = %d)\n",b3.getLength(), b3.getBreadth(), b3.getHeight()); if(b3 < b2){ cout << "Box 3 is smaller, its volume: " << b3.CalculateVolume() << endl; }else{ cout << "Box 3 is smaller, its volume: " << b2.CalculateVolume() << endl; } cout << "There are total " << Box::count << " box(es)"; } इनपुट
b1; b2(5,8,3); b3(6,3,8);
आउटपुट
Box 1: (length = 0, breadth = 0, width = 0) Box 2: (length = 5, breadth = 8, width = 3) Box 3: (length = 6, breadth = 3, width = 8) Box 3 is smaller, its volume: 120 There are total 3 box(es)