C# Classes

Introduction to C# Classes

एक class एक framework होती है जिसके द्वारा आप अपना custom type define करते है। Class द्वारा define किया गया custom type composite होता है। यानी की इसे कई अलग अलग type के variables, properties, methods और events के संयुक्त मिश्रण से बनाया जाता है।

Class एक blueprint होती है। जिसमें data (variables, properties) और उसका behaviour (methods, events) define किया जाता है। Class define करने के बाद उसके objects create किये जाते है। जिस प्रकार आप normal types जैसे की int, float आदि के variables create करते है उसी तरह class type के भी variables create किये जाते है जिन्हें objects कहा जाता है।

यदि आसान भाषा में कहा जाए तो class किसी मकान के नक़्शे की तरह होती है। जिसके आधार पर कई मकान (objects) बनाए जा सकते है। एक object class (नक़्शे) के आधार पर बनायीं गयी concrete (real) entity होती है। जबकि class जैसा की मैने पहले कहा सिर्फ एक framework या नक्शा होती है।

Class के माध्यम से आप कई अलग अलग variables, properties, methods और events को एक ही नाम (object) द्वारा handle कर पाते है। इससे आप data के बिखराव से बच जाते है।

उदाहरण के लिए आप किसी organization में sales से सम्बंधित data को एक class बनाकर उसमें manage कर सकते है और production से related data को एक दूसरी class बनाकर उसमे manage कर सकते है।

Class के अंदर define किये गए सभी variables, properties, methods और events class members कहलाते है। इसके क्रमशः member variables, member properties, member methods और member events कहा जाता है।

यदि class को static define किया जाता है तो ऐसी class के objects नहीं create किये जा सकते है और उसके members को सिर्फ class के नाम द्वारा ही access किया जा सकता है। ऐसा करने से memory में class की एक ही copy create होती है।

जब class non-static होती है तो उसके objects create करके आप उसकी memory में कई copies create कर सकते है। जब तक कोई object use किया जाता है तब तक वह copy memory में होती है इसके बाद उसके garbage collection को enable कर दिया जाता है।

Classes object oriented programming का बहुत ही महत्वपूर्ण concept है जो आपको data centric approach provide करती है। Classes inheritance को भी support करती है।

Declaring C# Classes

Classes को class keyword द्वारा define किया जाता है। C# में class create करने का general syntax निचे दिया जा रहा है।

access-modifier class-keyword class-name
{
     // variables, properties, methods and events code here...
}

जैसा की आप ऊपर दिए गए syntax में देख सकते है class keyword से पहले access modifier define किया जाता है। Access modifiers द्वारा किसी भी class का access level define किया जाता है।

Class keyword के बाद class का नाम define किया जाता है। Class का नाम पुरे program में unique होना चाहिए।

इसके बाद curly brackets में class की body आती है जो variables, properties आदि से मिलकर बनी होती है।

Creating Objects of C# Classes

Objects को new keyword द्वारा create किया जाता है। C# classes के objects create करने का general syntax निचे दिया जा रहा है।

class-name object-name = new-keyword class-name();

सबसे पहले आप उस class का नाम लिखते है जिसका object आप create करना चाहते है। इसके बाद आप एक unique object का नाम लिखते है। इसके बाद assignment operator लगकर new keyword define करते है। इसके बाद वापस class का नाम लिखा जाता है और brackets define किये जाते है।

Brackets में मुख्यतः arguments pass किये जाते है जो constructors के द्वारा members को assign किये जाते है। Constructors के बारे में विस्तृत जानकारी के लिए सम्बंधित tutorial पढ़े।

ऊपर दिए गए syntax से एक complete object create होता है। आप चाहे तो सिर्फ object का reference भी create कर सकते है। इसके लिए syntax निचे दिया जा रहा है।

class-name object-name;

एक object reference real object नहीं होता है और memory में भी किसी location को point नहीं करता है। इस तरह के objects को आप उसी class के दूसरे real objects assign कर सकते है।

Accessing Class Members

जैसा की मैने आपको पहले बताया class में define किये गए variables, properties, events और methods उसके members कहलाते है। Class के members को आप दो प्रकार से use कर सकते है।

यदि class के members को आप class के अंदर ही access कर रहे है तो इसके लिए आप this keyword use करते है। This keyword current class के object की तरह ही work करता है। इसका syntax निचे दिया जा रहा है।

class class-name
{
     //class-members
    //this-keyword.class-member-name;

    static void Main(string[] args)
    {

    }
}

लेकिन this keyword Main() method के अंदर work नहीं करता है। इसलिए यदि आप class के members को उसी class के Main() method में access कर रहे है तो इसके लिए आपको Main() method में उस class का object create करना होगा। केवल तब ही आप उसके members को access कर सकते है। इसका syntax निचे दिया जा रहा है।

class class-name
{
    //class-members

    static void Main(string[] args)
    {
         //create object
         object-name.class-member-name;  //access member with object
    }
}

यदि आप class के members को class के बाहर किसी दूसरी class में access करना चाहते है तो इसके लिए आपको उस class का object create करना होगा। लेकिन ऐसा तब ही संभव है जब वह class और उसके members public define होंगे। इसका syntax निचे दिया जा रहा है।

public class yourClass
{
    //public members
}

class yourAnotherClass
{
    //create object of your class
    object-name.class-member-name;
}

जब भी आप किसी class के members को access करेंगे तो ऐसा आप object के नाम या this keyword के बाद dot (.) operator लगाकर करेंगे। जैसा की ऊपर दिए गए सभी syntaxes में show किया गया है।

Example of C# Classes

मान लीजिये आप 100 persons का नाम और उनकी age store करना चाहते है। यदि आप ऐसा variables के द्वारा करेंगे तो आपको 200 variables create करने होंगे और उसके बाद यह भी ध्यान रखना होगा की किस person की information किस variable में है।

Variables को ना use करके आप 100 index के 2 arrays create कर सकते है जिनमें एक array में आप persons के नाम store करेंगे और दूसरे में उनकी age store करेंगे। लेकिन ऐसा करने से भी हर person की information अलग अलग बिखरी हुई होगी।

इसके लिए सबसे बेहतर option यह होगा की आप एक class create कर सकते है। उस class में आप name और age दो member variables create कर सकते है।

इसके बाद आप उस class के 100 objects create कर सकते है। हर object के द्वारा आप एक person का नाम और उनकी age store कर पाएंगे। ऐसा करने से एक person की information एक ही जगह पर रहेगी और उसे आप एक single object द्वारा आसानी से access कर पाएंगे।

using System;

public class Person
{
       public String name;
       public int age;       
}

class personFinal
{
       static void Main(String[] args)
       {
            Person p1 = new Person();
            p1.name = "Best Hindi Tutorials";
            p1.age = 100;

            Console.WriteLine("Name : {0}",p1.name);
            Console.WriteLine("Age : {0}",p1.age);
       }
}

जैसा की आप ऊपर दिए गए उदाहरण में देख सकते है Person class का एक object create करके उसके द्वारा एक person की information store की गयी है। बाद में इसी object द्वारा उस person की information access करके display करवाई गयी है।

इसी तरह आप और भी objects create कर सकते है और हर person की information को एक जगह एक object द्वारा store कर सकते है और access कर सकते है।

जैसा की आप देख सकते classes के द्वारा data को handle करना बहुत आसान होता है। आप Person type के objects का एक array भी create कर सकते है जिसमें हर index एक person की information को represent करेगी।

इस प्रकार आप name और age के अलावा भी किसी person से related बहुत सा data store कर सकते है और उसे object द्वारा आसानी से manage कर सकते है। Class object oriented programming का सबसे powerful feature है।

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

Name : Best Hindi Tutorials
Age : 100