Array as Instance Data in C++ Class: किसी Array को हम किसी Class में एक Member Variable की तरह Use कर सकते हैं। जैसे मान लो कि हम एक Employee नाम की Class बनाते हैं। जैसाकि हम नाम से ही समझ सकते हैं, इस Employee Class में किसी Company के Employees की विभिन्न प्रकार की Information जैसे कि Employee का नाम, Address, Date of Joining आदि की जानकारी Store की जाएगी।
हम जो उदाहरण ले रहे हैं उसमें हम किसी Employee की पूरी जानकारी Store नहीं कर रहे हैं। बल्कि यहां हम केवल किसी Class में Array को किस प्रकार से Use किया जा सकता है, इसे समझने की कोशिश कर रहे हैं।
हम किसी One–Dimensional Array के रूप में String को Memory में Store कर सकते हैं। यानी जब हमें String Data को Memory में किसी Variable में Store करना होता है, तब हमें एक One–Dimensional Array के रूप में String को Memory में Store करना होता है। इस Class में हम किसी Employee का नाम One by One Characters Keyboard से Read करके एक One Dimensional Array में Store करेंगे।
Employee Class
एक Employee Class में यहां हम तीन Data Items ले रहे हैं जिसमें char Data Type का एक One–Dimensional Array होगा जिसमें हम Employee का नाम Store करेंगे, एक int Data Type का Variable लेंगे, जो Array में Stored String की Length Specify करेगा और एक और int प्रकार का Variable लेंगे जिसमें हम Employee के Serial Number को Store करेंगे।
इस Class में input() नाम का एक Member Function User से Data लेगा output() नाम का एक Member Function, Data को Output में Display करेगा। Employee Class व उसे उपयोग करता हुआ Main Program निम्नानुसार है:
Program #include <iostream.h> #include <conio.h> // for getche() class employee { private: char name[20]; // name (20 chars max) int n; // length of name int serial_number; public: void input() // get data from user { char ch; n = 0; cout << “ Enter name: "; do { ch = getche(); // get one char at a time name[n] = ch; // store in “name” array ++n; } while(ch != '\r'); // quit if “Enter” key cout << “\n Enter serial number: "; cin >> serial_number; } void output() // display employee data { cout << “ Name = "; for(int j=0; j<n; ++j) // display one character cout << name[j]; // at a time cout << “\n Serial number = ” << serial_number; } }; void main() { employee emp1, emp2; cout << “Enter employee 1 data” << endl; emp1.input(); cout << “Enter employee 2 data” << endl; emp2.input(); cout << “\nEmployee 1” << endl; emp1.output(); cout << “\nEmployee 2” << endl; emp2.output(); getch(); }
जब इस Program को Execute किया जाता है तब कुछ Warnings जैसे कि “Function containing do are not expanded inline” व “Function containing for are not expanded inline” Messages आते हैं। अलग-अलग Compilers इस जगह पर अलग-अलग तरह के Message प्रदान कर सकते हैं। Compiler बता रहा है कि यदि हम किसी Member Function में Loops का प्रयोग कर रहे हों तो हमें Member Function को Class के बाहर Define करना चाहिए। इस विषय पर हम बाद में चर्चा करेंगे। यहां पर Program को Run कीजिए। ये किसी प्रकार की कोई Error नहीं देगा।
चलिए, सबसे पहले Main Function को समझते हैं। Main Function में हमने दो employee Objects Create किए हैं। हर Object अपने Data User से प्राप्त करता है और Output में Object के Data को Screen पर Display करता है। इस Program का User से निम्नानुसार Interaction होता है:
Enter employee 1 data Enter name: Kuldeep Enter serial number:1 Enter employee 2 data Enter name: Rahul Enter serial number:2 Employee 1 Name = Kuldeep Serial number = 1 Employee 2 Name = Rahul Serial number = 2
Library Function getche()
हमने इस Program में एक नए Library Function getche() का प्रयोग किया है। getche() Function हमें Keyboard से एक-एक Character Read करने की सुविधा प्रदान करता है। ये Function conio.h नाम की Header File में होता है इसलिए हमने हमारे Program conio.h नाम की Header File का Include किया है। हम जानते हैं कि किसी String को Memory में Store करने के लिए हमें एक One–Dimensional Array की जरूरत होती है।
एक One–Dimensional Array में किसी String को Store करने के लिए हमें Keyboard से एक Character Read करना होता है फिर उस Character को Array के Index Number 0 पर Store करना होता है। फिर दूसरा Character Index Number 1 पर, तीसरा Character Index number 2 व इसी तरह से Keyboard से एक-एक Character Read करके Array में Store करना होता है।
एक Character Read करने के बाद हमें Index Number को Increment करना होता है ताकि Array में जाने वाला अगला Character अगले Index Number पर Store हो इसलिए हमने ये मान एक Loop को Use करके किया है। Keyboard से Character Read करके उसे Array में Store करने के लिए हमने input() Member Function को निम्नानुसार Use किया है:
void input() // get data from user { char ch; n = 0; cout << “ Enter name: "; do { ch = getche(); // get one char at a time name[n] = ch; // store in “name” array ++n; } while(ch != '\r'); // quit if “Enter” key cout << “\n Enter serial number: "; cin >> serial_number; }
इस Function में हमने एक char प्रकार का Variable ch Declare किया है और Array के Index Number को Increment करने के लिए हमने Class में एक Variable n Integer प्रकार का Declare किया है।
जब ये Function Main Program में Call होता है तब User से नाम Input करने के लिए कहता है। फिर एक do … while Loop Use किया गया है। User जब Keyboard पर कोई Character Press करता है तो getche() Function उस Character को Read करता है और Character को ch नाम के Variable में Store करता है। फिर इस Character को name नाम के Member Variable name के Index Number 0 पर Store कर देता है। फिर Index Number n का Pre–Increment होता है और n का मान 1 हो जाता है।
यदि User Enter के अलावा कोई अन्य Character Input करता है तो वापस वह Character getche() Function द्वारा ch नाम के Character प्रकार के Variable में आ जाता है। वह Character name Member Variable जो कि एक Array है, के 1 Number के Index पर Store हो जाता है और n का मान वापस Increment हो कर दो हो जाता है।
ये प्रक्रिया तब तक चलती रहती है जब तक कि User Keyboard से Enter Key को Press नहीं करता। जैसे ही User Keyboard से Enter Key Press करता है, Loop Terminate हो जाता है और User से Employee का Serial number मांगता है। ये Serial Number Object के serial_number नाम के Variable में Store हो जाता है।
The Enter Key
जब User Enter Key Press करता है तब एक Escape Code ‘\r’ Generate होता है जो कि Enter Key को Represent करता है। हमारा input() Function जब इस Key को प्राप्त करता है, तो Terminate हो जाता है। यानी जब User किसी Employee का नाम Input करके Enter Key Press करता है, Loop Terminate हो जाता है।
किसी Array में Stored String को Display करने के लिए हमें Input प्रक्रिया की ठीक उल्टी प्रक्रिया अपनानी होती है। Program एक समय में एक Character को Memory से Read करता है और उसे Screen पर Display करता है। इस काम को करने के लिए हमने output() Function में एक for Loop निम्नानुसार Use किया है:
void output() // display employee data { cout << “ Name = "; for(int j=0; j<n; ++j) // display one character cout << name[j]; // at a time cout << “\n Serial number = ” << serial_number; }
यहां for Loop name नाम के Array से एक-एक Character Screen पर Print करता है। जब हमने Character को read करके name नाम के Array में Input किया था तब एक n नाम के Variable को Increment किया था ताकि सही Index Number पर Input किया जाने वाला Character Store हो सके।
जब हम Enter Key press करते हैं तब तक User जितने Character Input करता है, n का मान उससे एक अधिक हो जाता है। इसी n के मान का प्रयोग हमने Output में String को Display करने के लिए किया है। यानी Loop को 0 से n-1 तक चलाया है ताकि name नाम के Array के Index Number 0 से n-1 तक Characters क्रम से Screen पर Dispay हो जाए।
Postfix and Prefix Increment Operators
जब हम किसी Array में Characters Store करते हैं तब हम चाहते हैं कि Array में Store होने वाला पहला Character Index Number 0 पर Store हो। इसलिए हमने n का मान 0 Initialize किया है। जब Index number 0 पर Character Store हो जाता है, तब हम n को Increment करते हैं ताकि अगला Character Index Number 1 पर Store हो। इसीलिए हमने निम्नानुसार Statement लिखा है:
name[n] = ch; // store the character
++n; // increment the index
यहां दूसरा Statement काफी छोटा है। हम इस Statement को पहले Statement के साथ ही Use करना चाहें तो निम्नानुसार कर सकते हैं:
name[n++] = ch; // store the character
लेकिन हम यदि ये Statement लिखते हैं तो Store होने वाला पहला Character Index number 0 के बजाय Index Number 1 पर Store होगा। क्योंकि n का मान एक Increment हो कर 0 से 1 हो जाएगा और ch में Stored Character, Index Number 1 पर Store हो जाएगा। जब हम किसी Operand के पहले ++ या — का प्रयोग करते हैं तो इसे Pre Increment या Prefix Increment कहा जाता है।
लेकिन यदि हम इन्हें किसी Operand के बाद में Use करें तो Operand के मान का Increment या Decrement Statement के Execute होने के बाद में होता है। इसलिए यहां यदि हम इस दूसरे Statement को पहले Statement में ही Write करना चाहते हैं तो हम निम्नानुसार इसे लिख सकते हैं:
name[n++] = ch; // store the character
जब हम इस तरह से किसी Increment या Decrement Operator ( ++ या — ) को Use करते हैं तो इसे Postfix या Post Increment/Decrement कहते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF