C++ Classes & Objects

Introduction to C++ Classes

C language में आप structure के बारे में पढ़ चुके है। Structure एक बहुत ही important concept है। C++ में object oriented paradigm को support करने के लिए structures को classes के रूप में extend करके include किया गया है।

एक class भी structure की तरह ही अलग अलग data type के variables का group होती है। लेकिन classes में आप functions भी create कर सकते है, जो की structures में possible नहीं है। एक class data (variables) और उससे related functions को एक साथ bind करने का माध्यम होती है। Classes में आप variables और functions को outside यूज़ से hide भी कर सकते है।

जैसा की आपको data types की tutorial में पहले बताया गया class एक user defined data type होती है। Class type किसी normal built in type की तरह ही act करती है। Class type के variables को objects कहा जाता है। इन objects पर आप normal variables की तरह different operations perform कर सकते है।

Classes के अंदर create किये गए variables को data members कहा जाता है और functions को member functions कहा जाता है।

आप देखेंगे तो पाएंगे की structures और classes का basic format एक जैसा ही होता है। लेकिन structures limited होते है। Structures की कुछ limitations निचे दी जा रही है।

  1. Structure variables में आपस में कोई भी operations perform नहीं किये जा सकते है।
  2. Structure में data को hide करने का कोई mechanism नहीं होता है। पूरा data public होता है।
  3. एक structure के द्वारा declare किये गए members को दूसरा structure नहीं यूज़ कर सकता है।
  4. Structure में function नहीं declare किया जा सकता है।

Structures में जँहा पर ऊपर दी गयी limitations पायी जाती है। वँही ये ही limitations classes में features बन जाती है। Classes के कुछ features के बारे में निचे दिया जा रहा है।

  1. Class objects(variables) के साथ आप operations perform कर सकते है।
  2. Classes में आप data(Variables, Functions) को hide कर सकते है। इसके लिए आपको access modifiers provide किये जाते है।
  3. एक class में declare किये गए public members को दूसरी class यूज़ कर सकती है। इसे inheritance कहा जाता है।
  4. Classes reference type होती है। यानि सभी operations सीधे original variables को effect करते है।

Access Modifiers

Data protection classes का एक बहुत ही विशेष feature है। Classes आपको data के access को control करने की capabilities provide करती है। इसके लिए C++ आपको 3 access modifiers provide करती है। जब आप variables या functions create करते है तो इन modifiers को data type से पहले define करते है। इनके बारे में निचे दिया जा रहा है।

  1. Public - जो variables या functions public declare किये जाते है, उनको कोई भी दूसरी class access कर सकती है।
  2. Private - जो variables या functions private declared होते है, उन्हें आप class के बाहर नहीं access कर सकते है। By default सभी members private होते है।
  3. Protected - जो variables या functions protected होते है उन्हें सिर्फ वही class access कर सकती है जो current class को extend करती है।

Access modifiers को यूज़ करने का example निचे दिया जा रहा है।

public int age;

ऊपर दिए गए उदाहरण में int type का variable create किया गया है। इस variable को public access modifier के साथ declare किया गया है। इस variable को class के बाहर आसानी से access किया जा सकता है।

Creating a Class

Class create करना C language में structure create करने जैसा ही है। इसके लिए आप class keyword यूज़ करते है। Class create करने का general syntax निचे दिया जा रहा है।

class class-name
{

   private :
              variables declaration;
              functions declaration;

   public :
              variables declaration;
              functions declaration;
};

जैसा की आप ऊपर दिए गए syntax में देख रहे है, सबसे पहले class keyword define किया गया है। इसके बाद class का नाम दिया गया है। एक program में एक से अधिक classes हो सकती है, इसलिए सभी classes का नाम unique होना चाहिए।

Class के अंदर आप access modifiers का यूज़ करते हुए data members और member functions define करते है। सबसे पहले private data members और functions को define किया जाता है। इसके बाद public data members और functions को define किया जाता है। यदि आप कोई modifier define नहीं करते है तो by default सब कुछ private होता है।

इसलिए यदि आप चाहे तो private modifier को ना define करके सीधे भी variables और functions define कर सकते है। जैसा की निचे दिए हुए syntax में दिया जा रहा है।

class class-name
{
     variables declarations;
     function declarations;

     public :
             variables declarations;
             functions declarations;
};   

यदि आप कोई भी private variable declare नहीं करना चाहते है तो सीधा public modifier भी define कर सकते है। इसका syntax निचे दिया जा रहा है।

class class-name
{
     public:
              variable declarations;
              functions declarations;
};   

आइये अब इसे एक उदाहरण के माध्यम से समझने का प्रयास करते है।

class Employeeinfo
{
   private:
             int salary=10,000;
   public:
             char name [10];
             int age;

             void insertinfo(void);

             void displayinfo(void)
             {
                 cout<<"Name is :"<<name<<endl;
                 cout<<"Age is:"<<age<<endl;
                 cout<<"Salary is:"<<salary;
             }
};                

Creating Objects

Integer, float और character आदि की तरह class भी एक type होती है। Class type के variables को objects कहा जाता है। एक बार जब आप class type declare कर ले तो आप उसके objects (variables) create कर सकते है। ऐसा किसी भी normal type के variable की तरह ही किया जाता है।

इन objects के माध्यम से आप class के public member functions को class के बाहर से call कर सकते है, और class के public variables को initialize भी कर सकते है।

एक class के आप कितने भी objects create कर सकते है। जैसे ही आप कोई object create करते है तो उसे class members की size के according memory allocate हो जाती है।

Class objects create करने का general syntax निचे दिया जा रहा है।

class-name object-name;

आप चाहे तो एक ही statement में एक साथ कई objects create कर सकते है।

class-name obj1, obj2,.....objN;  

आइये अब इसे एक उदाहरण से समझने का प्रयास करते है। मान लीजिये आप ऊपर declare की गयी Employeeinfo class का object create करना चाहते है तो ऐसा आप इस प्रकार कर सकते है।

Employeeinfo emp1;

Defining Functions For Classes

किसी भी class के लिए आप function 2 प्रकार से create कर सकते है। पहले में तो आप class के अंदर ही function को define करते है। जब आप इस तरीके से class के लिए function define करते है तो आपको function को declare करने की आवश्यकता नहीं होती है। आप सीधा ही function की definition लिखते है।

दूसरे तरीके में आप scope resolution operator (::) के माध्यम से class के बाहर function define करते है। इस तरीके में पहले आप class के अंदर function को declare करते है। उसके बाद आप class के बाहर function की definition provide करते है।

Class के अंदर function किसी भी normal function की तरह ही define किया जाता है। Class के बाहर function define करने का general syntax निचे दिया जा रहा है।

function-return-type class-name :: function-name(parameters-list)
{
       //statements to be executed
}

सबसे पहले आप function का return type define करते है। इसके बाद आप class का नाम define करते है। इसके बाद scope resolution operator (::) लगाया जाता है। उसके बाद function का नाम और brackets में parameters की list दी जाती है।

Example

निचे C++ में classes के use का एक complete उदाहरण दिया जा रहा है। इस उदाहरण में 2 functions create किये गए है। एक function को class के अंदर define किया गया है और दूसरे को class के बाहर define किया गया है। ये उदाहरण आपको बताता है की आप किस प्रकार class create कर सकते है, classes के लिए functions define कर सकते है और objects create कर सकते है।

#include <iostream>
using namespace std;

class EmployeeInfo
{
       private:
             int salary=10,000;
       public:
             char name [20];
             int age;

             void insertinfo(void);

             void displayinfo(void)
             {
                 cout<<endl;
                 cout<<"Name is :"<<name<<endl;
                 cout<<"Age is:"<<age<<endl;
                 cout<<"Salary is:"<<salary;
             }

             EmployeeInfo()  
             {
                   salary = 10000;
             }
};

void EmployeeInfo :: insertinfo(void)
 {
      cout<<"Enter your name...";
      cin.getline(name,20,'\n');
      cout<<"Enter your age...";
      cin>>age;
}

int main()
{
     EmployeeInfo obj1;
     obj1.insertinfo();
     obj1.displayinfo();
     return 0;
}

ऊपर दिया गया program निचे दिया गया output generate करता है।

Enter your name  
Best Hindi Tutorials
Enter your age
29
Name is : Best Hindi Tutorials
Age is : 29
Salary is : 10000