How to Create Class in C++: एक Class के द्वारा हम किसी Real World Object को एक नए Data Type के रूप में Computer में Logically Describe कर लेते हैं और उस Description के आधार पर नए Data Type के Objects Create करके उसके साथ उसी प्रकार से प्रक्रिया करते हैं, जिस तरह से उन Objects के साथ Real World में प्रक्रिया की जाती है।
“C++” की सबसे बडी विशेषता इसकी Class व Objects की नई अवधारणा ही है। Class वास्तव में “C Language” के Structure का ही विस्तृत रूप है। Class को Define करने के लिए class Keyword का प्रयोग किया जाता है। Class को Define करने का Format निम्नानुसार होता है-
class class_name { private: Data_Members; Member_Functions; public: Data_Members; Member_Functions; };
जिस तरह से हम Structure को New Data Type Define करने में Use करते हैं, उसी प्रकार से class को भी New Data Type बनाने के लिए Use किया जाता है। लेकिन जहां Structure प्रकार के Data Type के Variables को Declare करने के लिए हमें Structure के नाम के साथ struct Key word का प्रयोग करना पडता है, वहीं class प्रकार के Data Type के Variables को Declare करने के लिए हमें Class के नाम के साथ class Keyword का प्रयोग नहीं करना पडता है। साथ ही Class प्रकार के Variables को Variables के बजाय Object के नाम से पहचाना जाता है।
Structure के Members Default रूप से Global या Public होते हैं जबकि class के Members Default रूप से Local या Private होते हैं। class व Structure में दूसरा अन्तर ये है कि Structures में Structure के Data को कोई भी Function Program में कहीं भी Use कर सकता है जबकि Class के Data Members को Use करने के Functions Class के अन्दर ही Declare किए जाते है और हम केवल इन्ही Member Function के द्वारा Class के Data Members को Use कर सकते हैं।
किसी Class में जिन Data Members व Member Function को private Area में लिखा जाता है, उन Data Members व Member Functions को केवल उसी Class द्वारा Access किया जा सकता है। जबकि जिन Data Members व Member Functions को public Area में लिखा जाता है, उन Data Members व Member Functions को पूरे Program में कहीं भी उपयोग में लाया जा सकता है। ठीक उसी तरह से जैसे Structure के Members को प्रोग्राम में कहीं भी उपयोग में लिया जा सकता है।
Class को अच्छी तरह से समझने के लिए हम सबसे पहले इसे एक Structure को Modify करके Class में बदलेंगे और फिर क्रम से Class की विशेषताओं को समझते हुए इसका प्रयोग करेंगे।
struct book_bank { char title[20]; char author[30]; int page; float price; } book1;
यहां एक Structure बनाया गया है जिसका एक Variable book1 है। यदि हम किसी book का title, author का नाम, book के पृष्ठों की संख्या और book की कीमत Input करके उसे Display करना चाहें तो हमें निम्न प्रकार का एक main() Function लिखना पडेगा-
#include <iostream.h> #include <conio.h> struct book_bank { char title[20]; char author[30]; int page; float price; void Input(void) { cout << "Enter Book Title t "; cin >> title; cout << "nEnter Book Author t "; cin >> author; cout << "nEnter Book Page t "; cin >> page; cout << "nEnter Book Price t "; cin >> price } void Display(void) { cout<< "Book Name t :" << title; cout<< "nBook Author t :" << author; cout<< "nBook Page t :" << page; cout<< "nBook Price t :" << price; } }; void main(void) { book_bank book1; clrscr(); book1.Input(); book1.Display(); getch(); }
ये प्रोग्राम देख कर शायद आप Confuse हो जाएं कि ये किस प्रकार से Structure को Use किया गया है। इसलिए पहले हम इसी Program को समझते हैं।
हम जानते हैं कि एक Structure विभिन्न प्रकार के Data Type के, आपस में Logically Related Data का समूह होता है। यानी हम एक Structure में विभिन्न प्रकार (Data Type) के Data रख सकते हैं। जब हम विभिन्न प्रकार के Data Type के Members किसी Structure में रख सकते हैं, तो उसी Structure में हम विभिन्न प्रकार के Functions भी रख सकते हैं और जिस तरह से किसी Structure प्रकार के Variable Declare करके, हम उन Variables द्वारा, Structure के विभिन्न Members को Access करते हैं, उसी प्रकार से इन Functions को Dot Operator या Arrow Operator का प्रयोग करके Access कर सकते हैं।
मान लो कि हमें किसी Book का नाम इस Structure में रखना है, तो हम book_bank प्रकार का एक Structure प्रकार का Variable Declare करते हैं। ये काम हम निम्न Statement द्वारा कर सकते हैं :-
book_bank book;
इसी Structure Variable “book” के साथ Dot Operator का प्रयोग करके, हम Structure में स्थित Member title में निम्नानुसार एक नाम स्टोर कर सके हैं :-
book.title = "Ramayan";
इस Statement से Structure के title नाम के Member में “Ramayan” Store हो जाता है। हम ठीक इसी प्रक्रिया को अपनाते हुए किसी Structure में Declare व Define किए गए Function को भी Dot Operator का प्रयोग करके Access कर सकते है।
उपरोक्त Program के Structure में हमने दो Functions को Structure के Members के रूप में लिखा है, साथ ही उन्हें Define भी कर दिया है। फिर हमने book1 नाम का एक Structure प्रकार का Variable Declare किया है और book1.Input() Statement द्वारा Structure book_bank के एक Member, जो कि एक Function है, को Call किया है।
ये Statement Compiler को ये बताता है कि Input नाम का एक Function है, जिसे book_bank Structure में Define किया गया है और ये Function उस Structure का Member Function है, इसीलिए इसे Dot Operator के साथ Use किया जा रहा है।
जैसे ही Program को Run किया जाता है, Variable Declare होने के बाद Program Control जब book1.Input() Statement को Execute करता है, तो Program Control सीधे ही Structure में पहुंच जाता है और Input() Function के Statements का Execution करना शुरू कर देता है।
ये Function एक Statement Block {} में है, और यहीं पर सभी Members Declare किए गए हैं, इसलिए Function को ये नहीं बताना पडता है कि हम किसी Structure के Members को मान दे रहे हैं, क्योंकि Function स्वयं उसी Structure में है। Input() Function मान प्राप्त करके Structure में रख देता है और Display() Function Structure में Store मानों को Print कर देता है।
अब इसी Program को यदि class के रूप में बनाया जाए, तो ये Program निम्नानुसार बनेगा जो कि बिल्कुल उसी प्रकार से काम करेगा जिस प्रकार से ये Program कर रहा है। चूंकि जैसाकि हमने पहले ही बताया कि class के Members Default रूप से Private होते हैं, इसलिये यदि इसी Program में केवल struct Keyword के स्थान पर class Keyword को Replace कर दें और Class में public Keyword का प्रयोग किया जाए, तो ये Structure निम्नानुसार एक Class में बदल जाएगा।
#include <iostream.h> #include <conio.h> class book_bank { public: char title[20]; char author[30]; int page; float price; void Input(void) { cout<< "Enter Book's Title t"; cin>>title; cout<< "nEnter Book's Author t"; cin>>author; cout<< "nEnter Book's Page t"; cin>>page; cout<< "nEnter Book's Price t"; cin>>price; } void Display(void) { cout<< "Book Name t :" << title; cout<< "nBook Author t :" << author; cout<< "nBook Page t :" << page; cout<< "nBook Price t :" << price; } }; void main(void) { book_bank book1; clrscr(); book1.Input(); book1.Display(); getch(); }
जिस तरह से हम किसी Structure के Members को Directly Access कर सकते हैं, उसी प्रकार से किसी Class में public Area में Declare किए गए Members को भी Use कर सकते हैं। जैसे माना हम किसी Book का नाम व उसकी कीमत को इस Class में Store करना चाहें, तो हम निम्न Statement के अनुसार ये कर सकते हैं-
book1.title = “Ramayana”;
book1.price = 1230;
साधारण रूप से Class के अन्दर किए जाने वाले Declarations को Header Files में लिख कर रख दिया जाता है और उस Header File को Program में Include कर लिया जाता है, लेकिन हम चाहें तो हम Class में किए जाने वाले Declarations को Main Program File में भी रख सकते हैं, जैसाकि अभी बनाए गए Program में किया गया है।
Program के Member Functions को दो जगह Define किया जा सकता है। या तो जहां Member Function को Declare किया जाता है, वहीं पर उसे Define कर दिया जाए। जैसाकि ऊपर के Program में किया गया है। इसे Inside The Class Definition कहा जाता है। दूसरे तरीके में Class के अन्दर केवल Member Function को Declare किया जाता है और Member Function को Class के बाहर Define किया जाता है। इस तरह के Definition को Outside The Class Definition कहा जाता है। इस प्रक्रिया को नीचे के Program में Use किया गया है।
#include <iostream.h> #include <conio.h> class book_bank { public: char title[20]; char author[30]; int page; float price; void Display(void); void Input(void); }; void main(void) { book_bank book1; clrscr(); book1.Input(); book1.Display(); getch(); } void book_bank::Display(void) { cout<< "Book Name t :"<< title; cout<< "nBook Author t :"<< author; cout<< "nBook Page t :"<< page; cout<< "nBook Price t :"<< price; } void book_bank::Input(void) { cout<< "Enter Book's Title t"; cin>>title; cout<< "nEnter Book's Author t"; cin>>author; cout<< "nEnter Book's Page t"; cin>>page; cout<< "nEnter Book's Price t"; cin>>price; }
इस Program में Member Functions को Class के बाहर Define किया गया है। जब किसी Member Function को Class के बाहर Define किया जाता है, तब हमें Compiler को ये बताना जरूरी होता है कि जिस Function को Define किया जा रहा है, वह Function किस Class में Declare किया गया है।
ये बताने के लिए हमें उस Class को Member Function के साथ Scope Resolution Operator द्वारा जोडना पडता है। जैसे कि void book_bank::Input(void) Statement Compiler को बताता है कि जिस Function को Define किया जा रहा है, वह Function book_bank Class का एक Member Function है।
जब भी हम “C++” में कोई Function Define करते हैं, तब Compiler को ये भी बताना पडता है कि वह Function किस प्रकार के Argument लेगा और किस प्रकार का मान Return करेगा। चूंकि ये Function किसी प्रकार का कोई मान Return नहीं कर रहा है इसलिए Function की Return Value void Declare की है तथा ये Function किसी प्रकार का कोई Argument ले भी नहीं रहा है, इसलिए Function के कोष्ठक में भी void का प्रयोग किया है।
अभी हमने जो प्रोग्राम बताया है उस Program में class book_bank के सभी Members को public रखा है। चूंकि, OOP में Data को ज्यादातर Hide रखा जाता है, इसलिए Data Members के Variables को private Area में लिखा जाता है।
जब हम Data Members को Private Area में लिखते हैं, तब हमें ऐसे Member Function लिखने होते हैं जो कि public हों, क्योंकि केवल class के वे Member Function ही उस Data के साथ प्रक्रिया कर सकते हैं।
जैसे माना हमें किसी Book की कीमत व पृष्ठों की संख्या Object में Initialize करनी है और हम पिछले Program में यदि book1.price = 123; और book1.page = 123; Statement Use करें, तो Program काम करेगा और Object में Price व Page Initialise हो जाएंगे।
लेकिन यदि Class book_bank के Data Members को private Area में Declare किया जाए, तो ये Statement Illegal होंगे। क्योंकि Class की ये विशेषता है कि Private Area में Declare किए गए Data Members को केवल उसी class के Public Area में Declared Member Function ही Access कर सकते हैं। (How to Create Class in C++)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF