C++ Object Oriented Programming - W3 Coding Club

    Object Oriented Programming (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) - जैसा कि नाम से पता चलता है प्रोग्रामिंग में Object (ऑब्जेक्ट)  का उपयोग करना। Object Oriented Programming (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) उद्देश्य प्रोग्रामिंग में real-world (वास्तविक दुनिया) की Entities जैसे Inheritance, hiding, polymorphism आदि को लागू करना है। OOP का मुख्य उद्देश्य Data(डेटा) और उन पर काम करने वाले Functi
    on को एक साथ बांधना है ताकि Code का कोई अन्य भाग उस Function (फ़ंक्शन) को छोड़कर इस डेटा तक नहीं पहुंच सके।

    Characteristics of an Object Oriented Programming language

    OOPs Concept, W3 coding club, W3codingclub


    Class 

     C++ का building block(बिल्डिंग ब्लॉक) जो Object Oriented Programming (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) एक class है। यह एक user-defined data type है, जो अपने स्वयं के data members और member functions को रखता है, जिसे उस class का एक instance बनाकर access और use किया जा सकता है। एक class किसी Object के लिए एक blueprint की तरह होता है।

    उदाहरण के लिए: कारों के class पर विचार करें। अलग-अलग नाम और ब्रांड वाली कई कारें हो सकती हैं, लेकिन उनमें से सभी कुछ सामान्य गुणों को साझा करेंगे जैसे कि उन सभी में 4 wheels , Speed Limit, Mileage रेंज आदि होंगे। तो यहाँ, car class है औरwheels , Speed Limit, Mileage रेंज आदि इस की properties हैं।

    • एक class user-defined data-type है जिसमें data members और member functions होते हैं।
    • Data members, data variables हैं और member functions इन variables में हेरफेर करने के लिए उपयोग किए जाने वाले function हैं। data members और member functions एक class में Object के properties और behaviour को define करते हैं।
    • Car class के example में, data member, speed limit, mileage आदि होगा और member functions brakes, increase speed आदि हैं।

    हम कह सकते हैं कि C++ में Class एक blue-print  है जो objects  के group (समूह) का है।

    Objects:-

    एक Object एक class का एक उदाहरण है। जब एक class define की जाती है, तो कोई memory allocate नहीं की जाती है, लेकिन जब Object को instantiate किया जाता है (यानी एक Object बनाया जाता है) memory allocate की जाती है।


        class person
        {
            char name[20];
            int id;
        public:
            void getdetails(){}
        };

        int main()
        {
        person p1; // p1 is a object
        }


    चूंकि किसी प्रोग्राम के रन होने के दौरान ही ऑब्जेक्ट मैमोरी में जगह घेरता है. अतः इसे run-time entity भी कहते हैं। एक क्लास के आधार पर कई ऑब्जेक्ट बनाए जा सकते हैं तथा इन अलग-अलग ऑब्जेक्ट में अलग-अलग डेटा स्टोर करवाया जा सकता है। उदाहरण के लिए employee क्लास के 10 अलग-अलग ऑब्जेक्ट बनाए जा सकते हैं, जिनमें 10 अलग-अलग कर्मचारियों की सूचनाओं को स्टोर किया जा सकता है।


    Encapsulation(एनकैप्सूलेशन)

    यह ऐसी प्रक्रिया है जिसमें डेटा और फंक्शन को एक साथ बांध दिया जाता है। ये फंक्शन डेटा पर कार्य करने के लिए उत्तरदायी होते हैं। डेटा और फक्शन को एक साथ बांधने का कार्य class के माध्यम से किया जाता है। इस प्रकार यह कहा जा सकता है कि यदि किसी class(क्लास) के Data(डेटा) को प्रयोग करना हो तो सामान्यतः यह कार्य उसी class(क्लास) के फंक्शन के माध्यम से किया जा सकता है।

    OOPs Concept, W3 coding club, W3codingclub
    encapsulation(एनकैप्सुलेशन) को real-life Example से Consider करके समझते हैं, एक कंपनी में, विभिन्न sections हैं जैसे कि accounts section, finance section, sales section आदि। finance section सभी financial transactions(लेनदेन) को संभालता है और finance(वित्त) से संबंधित सभी Data का रिकॉर्ड रखता है। इसी तरह, sales section, sales से related सभी activities को संभालता है और सभी sales (बिक्री) का रिकॉर्ड रखता है। अब ऐसी स्थिति उत्पन्न हो सकती है जब किसी कारण से finance section के किसी अधिकारी को किसी विशेष महीने में sales(बिक्री) के बारे में सभी डेटा की आवश्यकता हो। इस मामले में, उसे सीधे sales section के डेटा तक पहुंचने की अनुमति नहीं है। उसे पहले sales section में किसी अन्य अधिकारी से संपर्क करना होगा और फिर उससे विशेष डेटा देने का अनुरोध करना होगा।  इसी तरह  encapsulation(एनकैप्सुलेशन)  काम करता  है।

    Abstraction(एब्सट्रेक्शन):-

    एब्सट्रेक्शन से आशय ऐसी प्रक्रिया से है, जिसमें सिर्फ वही तत्व रखे जाते हैं, जिनकी आवश्यकता होती है, तथा अनावश्यक तत्वों को हटा दिया जाता है। उदाहरण के लिए किसी लायब्रेरी के लिए सॉफ्टवेयर बनाने के लिए Books नाम की क्लास बनानी होगी। इस क्लास में Books की सिर्फ वही details रखी जाएंगी जो कि लायब्रेरी के लिए आवश्यक हो। आवश्यक तत्वों में book name, author name, book price आदि हो सकते हैं, वहीं अनावश्यक तत्वों में book width, book height आदि हो सकते हैं।

    अतः एब्सट्रेक्शन प्रक्रिया में Books क्लास में सिर्फ book name, author name, book price को ही रखा जाएगा।

    Polymorphism(पॉलिमोफिज्म)

    पॉलिमॉफिज्म से आशय एक-से-अधिक रूप से है। इसके माध्यम से अलग-अलग परिस्थितियों में अलग-अलग प्रकार के कार्य किए जा सकते हैं। C++ में पॉलिमॉफिज्म दो प्रकार से प्रयोग में लिया जा सकता है

    • फंक्शन ओवरलोडिंग में, तथा
    • ऑपरेटर ओवरलोडिंग में

    फंक्शन ओवरलोडिंग में एक ही नाम के एक से अधिक फंक्शन हो सकते हैं। एक ही नाम के एक से अधिक फंक्शन बनाने के पीछे उद्देश्य यह होता है कि वे समान प्रकार का कार्य अलग-अलग तरीकों से करें।

    ऑपरेटर ओवरलोडिंग के माध्यम से पहले से मौजूद ऑपरेटर्स को किसी क्लास के संदर्भ में नया अर्थ प्रदान करने से है। सरल शब्दों में कहा जा सकता है कि ऑपरेटर ओवरलोडिंग के माध्यम से यह तय किया जा सकता है कि किसी क्लास के ऑब्जेक्ट के लिए कोई ऑपरेटर कैसे कार्य करेगा।

    polymorphism शब्द का अर्थ है कई रूपों का होना। सरल शब्दों में, हम polymorphism को एक message के एक से अधिक रूपों में प्रदर्शित करने की क्षमता के रूप में परिभाषित कर सकते हैं।

    एक ही समय में एक व्यक्ति की अलग-अलग विशेषता हो सकती है। एक आदमी की एक ही समय में एक पिता, एक पति, एक कर्मचारी है। तो एक ही व्यक्ति का अलग-अलग परिस्थितियों में अलग-अलग व्यवहार होता है। इसे polymorphism कहते हैं।

    Example : मान लीजिए हमें कुछ integers को जोड़ने के लिए एक function लिखना है, कभी 2 integers होते हैं, कभी 3 integers होते हैं। हम अलग-अलग parameters वाले एक ही नाम से Addition Method लिख सकते हैं, संबंधित Method को parameters के अनुसार call जाएगा।

    Inheritance:

    Inheritance (इनहेरीटेन्स) एक ऐसी प्रक्रिया है जिसमे एक class के Object दूसरी class के Object (ऑब्जेक्ट) की प्रोपर्टीज़ (विशेषताओं) को प्राप्त कर सकते हैं। Inheritance (इनहेरीटेन्स) की सहायता से पहले बनाई गई क्लास में बिना बदलाव किए उसमें अन्य अवयवों को जोड़ा जा सकता है।

    Inheritance (इनहेरीटेन्स) Object-Oriented Programming(ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) की सबसे important features में से एक है।

    1. Sub-Class : वह class जो किसी अन्य class से properties inherit करती है, Sub class या Derived Class कहलाता है।
    2. Super Class(सुपर क्लास): जिस class की properties Sub class या Derived Class को विरासत में मिलते हैं, उसे Base Class(बेस क्लास) या Super class(सुपर क्लास) कहा जाता है।
    3. Reusability : Inheritance "reusability" के concept का समर्थन करता है, अर्थात जब हम एक नयी class बनाना चाहते हैं और पहले से ही एक class मोजूद है जिसमें से कुछ code हम अपनी new class में शामिल करना चाहते हैं, तो हम अपनी new class के code को existing class से प्राप्त कर सकते हैं। ऐसा करके हम existing class के fields और methods का पुन: उपयोग कर रहे हैं।

    उदाहरण : मान लेते हैं की Animal Base Class बनी हुई  हैं जिससे हम Dog, Cat, Cow आदि new class बना सकते हैं।

    OOPs Concept, W3 coding club, W3codingclub



    Object Oriented Programming(OOP) के फायदे:-

    traditional प्रोग्रामिंग लैंग्वेज से यदि तुलना की जाए तो Object-Oriented Programming(ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) Language(लैंग्वेज) कई मायनों में बेहतर साबित होती है। long perspective में इसकी श्रेष्ठता प्रोग्रामर की मेहनत को काफी हद तक कम कर देती है. जिसका परिणाम बेहतर प्रोग्राम के रूप में मिलता है, जिसका Maintenance बहुत ही आसान हो जाता है।

    OOPs के विभिन्न फायदों को निम्न बिंदुओं से भली-माति समझा जा सकता है

    Security: OOP में डेटा तक पहुंच सिर्फ उस class विशेष के Method(मैथड्स) के अलावा सामान्यतः किसी अन्य को नहीं होती है। इसे हम Data Hiding(डेटा हाइडिंग) के नाम से भी जानते हैं। इससे डेटा में unwanted tampering होने की संभावना समाप्त हो जाती है।

    Code repetition में कमी:- OOP में हम किसी भी class को बनाते वक्त उसे पहले से बनी हुई किसी Class पर आधारित कर सकते हैं। इससे नई class में automatically ही उस क्लास के Members आ जाएंगे, जिस पर उसे आधारित किया गया है। ऐसा भी संभव है कि एक ही Base class के आधार पर विभिन्न Sub class या Derived Class बनाई जा सकती है। इससे Base class के Members को प्रत्येक क्लास में बनाने की आवश्यकता समाप्त हो जाती है। इसे हम OOP में Inheritance (इनहेरीटेन्स) के नाम से जानते हैं।

    Time की बचत:- Inheritance (इनहेरीटेन्स) के कारण से ही कोई नया प्रोग्राम बनाते वक्त पहले से बनी हुई क्लास को प्रयोग किया जा सकता है, जो श्रम और समय दोनों की बचत करती है।

    Less Errors:- चूंकि कोड में repetition कम हो जाता है, अतः automatically  ही Error होने की संभावना भी उतनी ही कम हो जाती है।

    Easy to change Design:- यदि किसी Object(ऑब्जेक्ट) को Design(डिजाइन) में परिवर्तन करना हो तो पूरे प्रोग्राम में changes की जरूरत नहीं रहती है। changes सिर्फ संबंधित class में करने होंगे, उसका प्रभाव स्वतः उस पर Object(ऑब्जेक्ट) पर आ जाएगा।

    Ease of project extension:- Object(ऑब्जेक्ट) की अपने आप में पूर्णता होने से किसी छोटे प्रोग्राम को आसानी से बड़े प्रोजेक्ट को Developed करने में प्रयोग किया जा सकता है। जब भी पहले से बने किसी Object(ऑब्जेक्ट)  को प्रयोग करना होता है तो programmer(प्रोग्रामर) को सिर्फ यह जानना होता है कि उसे किस प्रकार प्रयोग करता है। उसे यह जानने की कोई आवश्यकता नहीं है कि वह Object(ऑब्जेक्ट) किस प्रकार कार्य कर रहा है।

    Object-Oriented Program(ऑब्जेक्ट-ओरिएंटेड प्रोग्राम) बनाते वक्त इसके सभी नियमों को ध्यान में रखने से ही इसके सभी फायदे मिलते हैं। यह हो सकता है कि कोई छोटा प्रोग्राम बनाते वक्त हम इन नियमों की अनदेखी कर दें। किन्तु इसका bad effects प्रोग्राम (प्रोजेक्ट) का आकार बढ़ने पर महसूस होगा और प्रोग्रामर OOP के फायदों से वंचित हो जाएगा।


    Post a Comment

    1 Comments