Self Made String Class: हम हमारी जरूरत के अनुसार String Class बना सकते हैं और उसे अपने उपयोग में ले सकते हैं। जो String Functions Class Library के साथ आते हैं वे पूरी तरह से हमारी जरूरत को पूरा नहीं करते हैं। उदाहरण के लिए Library String Class हमारी निम्न आवश्यकताओं को पूरा करने में सक्षम नहीं है:
- String को Store करने के लिए हमें एक Array Define करना होता है ना कि एक Variable
- हम एक String को दूसरी String Variable में = Operator का प्रयोग करके Copy नहीं कर सकते हैं।
- यदि String Over Flow हो जाए, तो हमारी string Function Warning नहीं देगा इसलिए Array को Overflow नहीं होने देना है।
- हम + Operator का प्रयोग करके दो Strings को नहीं जोड सकते।
- हम Relational Operators का प्रयोग करके दो Strings को Compare नहीं कर सकते।
यहां हम हमारी String Class को xString नाम देंगे और ऊपर बताई गई पांच समस्याओं में से दो का ही Solution इस अध्याय में करेंगे। शेष समस्याओं को सुलझाने के लिए हमें Operator Overloading Concept को समझना होगा जो कि हम आगे समझेंगे। हम जो Class Create कर रहे हैं वह निम्नानुसार है:
//Program #include <iostream.h> #include <string.h> // for strlen(), strcpy(), etc. const int MAX = 80; // maximum length of xStrings class xString { private: char str[MAX]; // ordinary C string public: void init( char s[] ) // initialize with string { strcpy(str, s); } void input() // get string from user { cin.get(str, MAX); } void display() // display string { cout << str; } void append(xString xs) // append argument string { if(strlen(str) + strlen(xs.str) < MAX-1) strcat(str, xs.str); else cout << “\nError: xString too long” << endl; } };
इस Class में एक ही Data Member है जो कि एक One Dimensional Array है जिसकी Size एक Constant Global Variable MAX के बराबर है और इस MAX का मान 80 है। यानी हम इस Data Member में 80 Characters की String Input कर सकते हैं।
इस Data Member को Initialize करने के लिए हमने एक Member Function init() को Create किया है जो कि Argument के रूप में वह String लेता है जिसे Data Member में Initialize करना है।
दूसरा Member Function input() User से Input लेने का काम करता है। इसमें कोई Argument Pass नहीं किया गया है।
तीसरा Member Function display() Object के Data को Display करने का काम करता है।
चौथा Member Function append() है। ये Function दो Strings को आपस में जोडने का काम करता है।
हम निम्नानुसार एक Main Function लिख कर इस Class को Use कर सकते हैं:
#include <conio.h> void main() { xString s1, s2, s3; // make xString objects s1.init("Greetings, "); // initialize s1 cout << "Enter your name: "; s2.input(); // get s2 from user s1.append(s2); // append s2 to s1 s3 = s1; // set s3 to s1 s3.display(); // display s3 getch(); }
Main Program में तीन xString प्रकार के Objects Create किए गए है। पहले Object s1 को एक साधारण सी String init() Member Function का प्रयोग करके Initialize की गई है। s2 Object में User द्वारा Input की जाने वाली String input() Member Function का प्रयोग करके Object में Store किया जाता है।
s1.append(s2); Statement s1 के String में s2 की String को Add करता है। s3 Object में Add s1 की String को Initialize किया गया है और अन्त में s3 Object की String को Screen पर Print कर दिया गया है। हमने हमारे इस Program की xString Class में कुछ Library Functions का प्रयोग किया है।
हालांकि हम चाहें तो हमारे स्वयं के Functions भी लिख सकते हैं जो एक-एक Character Keyboard से Read करें और Array में Store करें। लेकिन चूंकि ये Library Functions काफी Convenient हैं इसलिए हमें ऐसा कुछ करने की जरूरत नहीं।
हम हमारे Program में इनका प्रयोग कर सकते हैं। हम देख सकते हैं कि अब हमें कोई नाम Store करने के लिए Character का Array Create करने की जरूरत नहीं है। हम जिस तरह से एक Integer प्रकार का Variable Main Program में Create करते हैं उसी तरह से हम String प्रकार के Objects भी Create कर सकते हैं।
हम देख सकते हैं कि इस Class में init() function एक सामान्य String को xString Object में Convert करने का काम कर रहा है। एक String को Argument के रूप में इस Function में Pass किया जाता है और ये Function उस String को xString में Convert करके उस xString Object को Assign करता है जिसके साथ इस Function को Call किया गया है। Data को एक Data Type से दूसरे Data Type में जो Conversion होता है वह OOP में एक बहुत ही महत्वपूर्ण प्रक्रिया है। इसके बारे में हम आगे विस्तार से बात करेंगे।
हमने इस Program में s3 Object को s1 Object का मान Assign किया है। हम ऐसा इसलिए कर सकते हैं क्योंकि एक ही Class के सभी Objects Identical होते हैं यानी समान होते हैं।
हमने हमारी Class में Overflow Protection किया है। यानी यदि Append की जाने वाली दोनों Strings की Length 80 से अधिक हो तो Appending नहीं होती है बल्कि एक Message Display होता है जो बताता है Append होने वाली दोनों Strings की Size काफी अधिक है
इस तरह से हमने Array के Overflow होने की समस्या से छुटकारा पा लिया। लेकिन इस प्रक्रिया में एक समस्या अभी भी है। हम देख सकते हैं कि हमने जो भी Object Create किए हैं उन सभी में 20 Characters से अधिक Store नहीं किए गए हैं। यानी बाकी के लगभग 60 Bytes हर Objects के Free हैं जो कि Memory को फालतू ही Reserve करके रखते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF