Define Class and Object in C++

Define Class and Object in C++: अब एक Complete Class Specification के सारे अवयव हमारे पास हैं। हमें पता है कि हमारे Data को Store करने के लिए Basic Data Type के Variable कैसे Declare करने हैं, उन Data से Interact करने के लिए Member Functions कैसे Create करने हैं और कुछ उपयोगी काम करने के लिए Keyboard से Input कैसे लेना है और Screen पर Output कैसे Print करना है। अब हम निम्नानुसार Book Stall Class की पूरी Specification बना सकते हैं :

//Creating First Class in C++
class BookStall // एक Class जिसका नाम BookStall है।
{ // Class Specification की शुरूआत
  private: 
    int BooksInHand; // Variables जिसमें Books व Magagines की संख्‍या Store होगी।
    int MagazinesInHand;

  public:
    void InputData() // Variables में Data को Input करने के लिए Member Function
    {
      cout << “Enter Books on Hand : “ ;
      cin >> BooksInHand ;
      cout << “Enter Magazines On Hand : “ ;
      cin >> MagazinesInHand ;
    }

    void SoldOneBook() // Book के संख्‍या को Adjust करने के लिए
    { 
      --BooksInHand ; // यहां Function की Body
    }

    void SoldOneMagazine() // Magazines की संख्‍या को Adjust करने के लिए
    {
      --MagazinesInHand ; // यहां Function की Body
    }

    void DisplayStock() // Stock को Display करने के लिए
    {
      cout << “Books In Hand = “ << BooksInHand << endl ;
      cout << “Magazines In Hand = “ << MagazinesInHand << endl ; 
    }
}; // Class Specification का अन्त करने के लिए

अब हम देख सकते हैं कि सभी Member Function Data पर Operations करने के लिए किस तरह से आपस में अलग-अलग तरीके से Related हैं। InputData() Member Function Keyboard से Data Input में ले कर Variables में Store करने का काम कर है। DisplayStock() Function Variables के Data को Screen पर Display करने का काम करता है।

Object Create करना और Object के साथ प्रक्रिया करना

अभी तक हमने सीखा कि किस प्रकार से Data और Data पर काम करने वाले Member Functions द्वारा एक Class Specification बनाते हैं। हालांकि Class Specification का उद्‌देश्‍य एक Blueprint या नक्‍शा बनाना होता है जिसके आधार पर हम Object Create कर सकते हैं। चलिए, समझने की कोशिश करते हैं कि Object किस प्रकार से Create करते हैं और Create किए गए Objects के साथ हम किस प्रकार से Interact कर सकते हैं।

Class Specification द्वारा Objects बनाना

हम ठीक उसी प्रकार से Objects Create कर सकते हैं जिस प्रकार से हम किसी Basic Data Type का Variable Create करते हैं। C++ में Objects ठीक उसी प्रकार से Handle किए जाते हैं जिस प्रकार से Variables को और Class को उसी प्रकार से Handle किया जाता है जिस प्रकार से Data Types को। यानी हम सरल भाषा में कहें तो Class एक नए प्रकार का Abstract Data Type होता है और Objects उस Class प्रकार के Data Type के Variables होते हैं। निम्न Statement BookStall का एक Object stall1 Create करता है:

BookStall stal1;

जब Program का ये Statement Execute होता है, तब सबसे पहले Program BookStall Class की Specification को Program में खोजता है जो कि हमें पहले ही बनानी होती है। ये तय करता है कि इस Class का Object memory में कितनी Byte Reserve करेगा और Object को उतनी Memory Assign कर देता है। फिर Program Object को Assign की गई Memory को एक नाम Stall1 दे देता है। ये सब काम बिल्कुल उसी तरह से होता है जिस तरह से एक Basic Data Type का Variable Create करते समय होता है। फिर भी, Stall1 Object सामान्य Variable से अधिक जटिल है क्योंकि इसमें विभिन्न प्रकार के DataMember Functions हैं। एक बार Class की Specification बनाने के बाद हम उस Class के जितने चाहें उतने Objects Create कर सकते हैं। जैसे :

BookStall Stall1 ;
BookStall Stall2 ;
BookStall Stall3 ;

हम निम्नानुसार भी Object Create कर सकते हैं :

BookStall Stall1, Stall2, Stall3 ;

Class की Specification बनाना एक जटिल काम होता है लेकिन Class के Object बनाना बिल्कुल सरल है।

Object को Message भेजना

एक बार Object Create हो जाए, तब हमें इसके साथ Interaction करना होता है। Object के साथ Interaction करने के लिए हम उन Member Functions का प्रयोग करते हैं, जिन्हें Class Specification में Describe या परिभाषित किया है। हम Object के Member Function को Call करते हैं। इसे ऐसा भी कह सकते हैं कि हम Object को एक Message Send करते हैं।

इस काम के लिए एक विशेष Syntax का प्रयोग किया जाता है। जब हम किसी Object को Message Send कर रहे होते हैं तब हमें दो बाते ध्यान में रखनी होती हैं। पहली ये कि हम किस Object के साथ Communicate कर रहे हैं या किस Object को Message Send कर रहे हैं और दूसरी ये कि हम Object को क्या Message Send कर रहे हैं। इसी बात को हम दूसरे शब्दों में कहें तो ऐसा भी कह सकते हैं कि हम किस Object के Member Function को Call कर रहे हैं। इस तरह हमारे Syntax के दो भाग हो जाते हैं : Object का नाम और Member Function का नाम।

हम निम्नानुसार Syntax द्वारा stall1 Object को Data Display करने का Message Send कर रहे हैं :

stall1.DisplayStock() ;

Object का नाम व Function का नाम एक Dot से Connected रहता है। इसे Dot Operator या Class Member Access Operator कहते हैं। इस तरीके से हम किसी विशेष Object के Member Function या Data को Access कर सकते हैं। जब ये Statement Execute होता है तब निम्नानुसार Output Display होता है :

Books In Hand = 60
Magazines In Hand = 40

हम इसी तरह का Message दूसरे Object को भी भेज सकते हैं। जैसे

stall2.DisplayStock() ;

ये Syntax दूसरे Object के Data को Output में Display करेगा। जैसे

Books In Hand = 6
Magazines In Hand = 140

इसी तरह हम तीसरे Object में User से Data Input करने के लिए Message Send कर सकते हैं। जैसे

stall3.InputData() ;

जब ये Statement Execute होगा, तब Program User से निम्नानुसार Interact करेगा –

Enter Books In Hand : 65
Enter Magazines in hand : 100

एक बार stall3 Object को मान Initialize करने के बाद हम इस Stall से Book व Magazines को Sell कर सकते हैं। Selling की सूचना Object को देने के लिए हम SoldOneBook() या SoldOneMagazine() Member Function का प्रयोग कर सकते हैं। जैसे

stall3.SoldOneBook() ;

अब यदि Stock देखना हो तो हम stall3 को Stock Display करने का Message Send करते हैं। यानी

stall3.DisplaySock() ;

Program हमें Stock Display कर देता है।

Define Class and Object in C++: सारांश

हमने देखा कि एक C++ Program का आधारभूत अवयव Objects हैं जो कि किसी Class Specification के अनुसार बनाए जाते हैं। किसी Program को Design करने का मतलब है कि हम ये तय करें कि Program में Object क्या होगा और वह किस प्रकार से काम करेगा।

किसी भी Object की दो बातें मुख्‍य होती हैं :

  • Object के Data और
  • Member Functions

एक Object के Data को Program के अन्य भागों से सामान्यतया Private रखते हैं, ताकि Program का कोई भी अन्य भाग Data को Directly Access ना कर सके। यदि Data को Access करना है तो उसके साथ लिखे गए Member Functions का उपयोग करना पडता है। इस तरीके की वजह से Data Accidentally Modify या Corrupt नहीं होता।

एक बार Class Specify करने के बाद और उस Class के Objects Create करने के बाद, Program Object को Message Send करता है। यानी Object को कुछ काम करने का Order देने के लिए उसके Member Function को Call करता है।

चलिए, अब हम Book Stall का पूरा Program Access करते हैं –

// BookStall1.cpp
// Book Stall inventory database program

#include <iostream.h>
class BookStall 
{ 
  private: 
    int BooksInHand;
    int MagazinesInHand;

  public:
    void InputData()
    {
      cout << “Enter Books on Hand : “ ;
      cin >> BooksInHand ;
      cout << “Enter Magazines On Hand : “ ;
      cin >> MagazinesInHand ;
    }

    void SoldOneBook()
    { 
      --BooksInHand ; 
    }

    void SoldOneMagazine()
    {
      --MagazinesInHand ; 
    }

    void DisplayStock() 
    {
      cout << “Books In Hand = “ << BooksInHand << endl ;
      cout << “Magazines In Hand = “ << MagazinesInHand << endl ; 
    }
}; 

void main()
{
  BookStall stall1; // BookStall Object Created
  BookStall stall2;

  // set initial data
  cout << "nInitialize data for stall 1";
  stall1.InputData();
  cout << "nInitialize data for stall 2";
  stall2.InputData();

  // record some sales
  cout << "nSelling 2 Books from stall1";
  stall1.SoldOneBook();
  stall1.SoldOneBook();
  cout << "nSelling 3 Magazines from stall2";
  stall2.SoldOneMagazine();
  stall2.SoldOneMagazine();
  stall2.SoldOneMagazine();
  cout << endl;

  // display current data
  cout << "nStock in hand, Stall1";
  stall1.DisplayStock();
  cout << "nStack in hand, Stall2";
  stall2.DisplayStock();
}

हम Class Specification करना जान चुके हैं और Object Create करके उसके साथ प्रक्रिया करने वाले Statement लिखना भी सीख चुके हैं। इस Program में हमने IOSTREAM.H Header File को Include किया है। इसका प्रयोग किए बिना हम cin व cout Objects, << व >> Operators व endl Manipulator का प्रयोग करके Input व Output की सुविधा प्राप्त नहीं कर सकते। इनकी और अन्य बहुत सी चीजों की Specifications इस Header File में है जो कि हमारे Compiler के साथ आती है। ये एक Text File होती है ठीक उसी तरह जिस तरह हमारी C++ की Source File होती है।

इस Header File को हमारे Program में Insert करने के लिए हमें इसके नाम के पहले एक Preprocessor Directive का प्रयोग करना पडता है। इसे हम #include Keyword के साथ निम्नानुसार लिख कर Include करते हैं :

#include <iostream.h>

ये Directive Compilation के समय इस Text File के सारे Source Codes को हमारे Program में Insert कर देता है। Preprocessor Directives सीधे ही Compiler के लिए दी गई Instructions होती हैं। जैसे Beta = 60; Microprocessor के लिए एक Instruction है, जिसे Compiler Machine Language में Translate करके Microprocessor पर भेजता है और Micro Processor उसे समझता है। Preprocessor Directive हमेंशा # चिन्ह से शुरू होता है।

जैसे ही Compiler को #include Preprocessor Directive मिलता है, ये IOSTERAM.H नाम की File को खोजना शुरू कर देता है। हमारे Compiler के साथ कुछ Sub Directories भी होती हैं जिनमें include नाम की एक Directory होती है। यदि ये File Include नाम के Folder में ना हो, तो हमें Compiler को इस फाईल का पाथ देना जरूरी होता है, अन्यथा हमारा Program Compile नहीं होता। Compiler को जैसे ही ये File मिल जाती है, Compiler इस File को वहां पर Insert कर देता है, जहां पर हमने #include Preprocessor Directive का प्रयोग किया है।

#include Directive को Specify करने के दो तरीके हैं। सही तरीका Use करने पर Program की Speed अच्छी होती है। इसमें हम header File को <> के बीच में लिखते हैं। ऐसा करने पर Compiler Header File को Include नाम के Sub Folder में ही खोजता है। दूसरे तरीके में हम Header File या अन्य किसी Source File को “” के बीच में लिखते हैं। इस तरह लिखने पर Compiler header File को वहां खोजता है जहां हमारी Source File होती है।

C++ की Library में कई प्रकार के कामों के लिए अलग-अलग Header Files हैं। जैसे गणितीय कामों के लिए हम MATH.H नाम की Header File को अपने Program में Insert कर सकते हैं और Data Conversion से सम्बंधित कामों के लिए हम STDLIB.H नाम की Header File को।

Enter Books In Hand : 64
Enter Magazines in hand : 100

Main Function

हर चीज की एक शुरूआत होती है और हमारा Program जहां से शुरू होता है, उसे main() Function कहते हैं। ये किसी Class का Member Function नहीं होता है। ये एक Standalone Function है जिससे Program का Control Operating System से Transfer होता है। main() Statement किसी भी Program का सबसे पहले Execute होने वाला Statement है। Program के अन्य सभी Statements main() Function के अन्दर ही लिखे जाते हैं। (Define Class and Object in C++)

CPP Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C++ Programming Language in Hindi | Page: 666 | Format: PDF

BUY NOW GET DEMO REVIEWS