C++ Introduction

    C++ Programing Language(प्रोग्रामिंग लैंग्वेज) का विकास AT&T Bell Laboratories, USA में सन् 1980 के प्रारंभ में हुआ। इसे Bjarne Stroustrup(बर्जने स्ट्रॉस्ट्रुप) ने विकसित किया। सिम्यूला 67 एवं C Language(C लैंग्वेज) Stroustrup की पसंदीदा लैंग्वेज थी। किन्तु उन्हें C में कुछ कमियां महसूस होती थी, जो कि सिम्युला 67 में नहीं थी। सिम्युला 67, जहां एक ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज थी, वहीं C में बने प्रोग्राम की गति काफी अच्छी होती थी। ऐसे में उन्होंने दोनों लैंग्वेज की खूबियों को एक साथ लेते हुए नई प्रोग्रामिंग लँग्वेज विकसित की।

    इस नई लैंग्वेज को उन्होंने "C with classes" का नाम दिया। बाद में उनके एक सहयोगी ने C के ऑपरेटर से प्रेरित होकर इसका नया नाम C++ पेश किया। यह नई लैग्वेज ऑब्जेक्ट ओरिएंटेड के साथ-साथ C की खूबियों को भी अपने में समेटे हुई थी।



    सन् 1990 में इस लँग्वेज में कुछ सुधार किए गए तथा ANSI/ISO स्टैण्डर्ड कमेटी ने इन सुधारों / परिवर्तनों पर अपनी मुहर लगा दी। ANSi/ISO द्वारा जारी नवीनतम C++ स्टैण्डर्डस डॉक्यूमेंट 2003 में जारी किए गए हैं। उपरोक्त विवेचन से यह स्पष्ट है कि C एवं C++ में समानताएं हैं किन्तु ध्यान दें कि कुछ नए फीचर्स

    इसे C से अलग बनाते हैं, जिनका विवरण इसी अध्याय में आगे दिया गया है। 

    Structured Programming Language:-

    Structured Programming Language (स्ट्रक्चर्ड प्रोग्रामिंग लैंग्वेज) से आशय ऐसी लैंग्वेज से है, जिसमें sequence, branching तथा iteration  का प्रयोग किया जाता हो। Sequence यह बताता है कि किसी प्रोग्राम के विभिन्न स्टेटमेंट एक निश्चित क्रम में ही एन होंगे।  

    Branching यह बताती है कि किसी कंडीशन के आधार पर उपलब्ध विभिन्न विकल्पों में से किसी एक विकल्प का चुनाव कैसे किया जाए।

     Iteration से आशय लूपिंग से है, जो एक या एक से अधिक स्टेटमेंट्स को एक या अधिक बार रन कराने की प्रक्रिया है।

    Procedural Programming Language:-

     ऐसी programming Language(प्रोग्रामिंग लैंग्वेज) जिसमें प्रोग्राम के Logic(लॉजिक ) को छोटे छोटे टुकड़ों (modules) में तोड़ दिया जाए तथा प्रत्येक मॉड्यूल के लिए अलग से Coding(कोडिंग) की जाए उसे Procedural Programming Language(प्रोसिजरल प्रोग्रामिंग लैंग्वेज) कहते हैं। दूसरे शब्दों में यह कहा जा सकता है कि ऐसी प्रोग्रामिंग लैंग्वेज जिसमें प्रोग्राम बनाने के लिए फंक्शन (जिन्हें मॉड्यूल या सब-रूटीन भी कहा जाता है) का प्रयोग किया जाता हो, प्रोसिजरल (मॉड्यूलर) प्रोग्रामिंग लैंग्वेज कहलाती हैं।

    सामान्यतः इस प्रकार बनाया जाने वाला फंक्शन किसी एक विशेष कार्य को करने के लिए उत्तरदायी होता है। इससे फायदा यह होता है कि जब भी प्रोग्राम में वही विशेष कार्य करवाना होता है तो उस हिस्से के लिए वापस से कोडिंग करने की बजाय सिर्फ उस फंक्शन को कॉल करवा दिया जाता है। 

    उदाहरण के लिए यदि किसी प्रोग्राम में 4 बार आयत का क्षेत्रफल ज्ञात करना है तो चारों बार अलग-अलग क्षेत्रफल की गणना करने की बजाए area() नाम से एक फंक्शन बनाया जा सकता है, जिसे 4 बार कॉल करवा दिया जाए। ऐसी स्थिति में प्रत्येक बार हमें आयत की चौड़ाई और लंबाई उस फक्शन को देनी होगी। इन दी गई वैल्यूज़ के आधार पर वह फंक्शन गणना करते हुए क्षेत्रफल ज्ञात कर लेगा।

    इस आधार पर यह कहा जा सकता है कि प्रोसिजरल प्रोग्रामिंग में फंक्शन प्रयोग में लिए जाते हैं, जिन्हें कुछ वैल्यूज आरम्यूमेंट के रूप में पास कराई जाती हैं तथा यह फंक्शन कुछ वैल्यू वापस मुख्य प्रोग्राम को लौटाते (return) है।)

    इस आधार पर यह कहा जा सकता है कि procedural programing(प्रोसिजरल प्रोग्रामिंग) ऐसी प्रणाली है, जिसमें फंक्शन्स का प्रयोग किया जाता है। इन फंक्शन्स में वैल्यूज़ पास कराने तथा रिटर्न कराने का विकल्प होता है। प्रोसिजरल प्रोग्रामिंग में इस बात पर जोर दिया जाता है कि कार्य कैसे किया जाए। इसमें कमी है कि डेटा को कम महत्वपूर्ण माना जाता है। जबकि हम जो भी प्रोग्राम बनाते हैं, उसके पीछे मुख्य अवयद डेटा है, ना कि फंक्शन कोई प्रोग्राम जिसमें income tax की गणना की जा रही हो. में पहली प्राथमिकता income होनी चाहिए।

    Drawbacks of Procedural Programming

    • इसमें पहली प्राथमिकता इस बात को दी जाती है कि कार्य कैसे किया जाए। डेटा की प्राथमिकता को दूसरे स्थान पर रखा जाता है।
    • इसमें विभिन्न फंक्शन किसी global वेरिएबल की वैल्यू में परिवर्तन करने में सक्षम होते हैं। ऐसे में प्रोग्रामर की गलती से यदि किसी फंक्शन द्वारा किसी global वेरिएबल में परिवर्तन कर दिया जाए, तो ऐसी गलती को काफी बड़े प्रोग्राम में पकड़ पाना एक मुश्किल कार्य हो जाता है।
    • इसमें वास्तविक जिंदगी से मिलते जुलते ऑब्जेक्ट (जैसे कार, पंखा, पक्षी, बैंक आदि) नहीं बनाए जा सकते हैं। जबकि किसी समस्या का समाधान ढूंढने में ऑब्जेक्ट का प्रयोग कार्य को आसान बना देता है।

    Object Oriented Programming :-

     Object Oriented Programming Language (ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज) से आशय ऐसी programming Language (प्रोग्रामिंग लैंग्वेज)  से है, जिसमें फंक्शन की जगह डेटा को प्राथमिकता दी जाती है। इसे विस्तार से समझने के लिए सर्वप्रथम Object(ऑब्जेक्ट) को समझना होगा।

    ऑब्जेक्ट से आशय किसी वास्तविक अथवा काल्पनिक वस्तु से है। उदाहरण के लिए  'मारूति कार', 'अरावली पर्वत', 'डाबर का शहद' आदि ऑब्जेक्ट है। जहां प्रोसिजरल प्रोग्रामिंग में सर्वप्रथम यह तय किया जाता है कि किसी समस्या के समाधान के लिए कौन-कौन से फंक्शन बनाए जाएंगे, वहीं ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की स्थिति में पहले यह तय किया जाता है कि प्रोग्राम में कौन-कौन से ऑब्जेक्ट प्रयोग में लिए जाएंगे।

    उदाहरण के लिए यदि किसी संस्था के कर्मचारियों की salary की गणना करने के लिए प्रोग्राम बनाना हो तो. 

    • प्रोसिजरल प्रोग्रामिंग में यह सोचा जाएगा कि कर्मचारियों के अलग-अलग भत्तों (जैसे मकान किराया भत्ता आदि) की गणना करने के लिए अलग-अलग फंक्शन बना लिए जाएंगे, जैसे

      • da(..):-  महंगाई भत्ते (dearness allowance) की गणना के लिए तथा
      • hra (..):-  मकान किराए भत्ते (house rent allowance) की गणना के लिए 

    • ऑब्जेक्ट ओरिएटेड प्रोग्रामिंग में यह सोचा जाएगा कि एक कर्मचारी स्वयं ऑब्जेक्ट है, अतः पहले इस ऑब्जेक्ट की विशेषताएं तय की जाएं। इन विशेषताओं में कर्मचारी का नाम, उसका मूल वेतन उसे मिलने वाले विभिन्न भत्ते आदि हो सकते हैं।

    इस प्रकार Object Oriented Programming(ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग) प्रणाली में सर्वप्रथम यह सुनिश्चित किया जाता है कि प्रोग्राम में कौन-कौन से Object(ऑब्जेक्ट्स) प्रयोग में लिए जाएंगे। इसके अतिरिक्त Object Oriented Programming(ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग) में  polymorphism(पोलिमोफ़िज़्म),  inheritance(इनहेरिटेंस), Encapsulate (एनकैप्सूलेशन) (PIE) आदि सिद्धांतों का भी प्रयोग किया जाता है।

    इस प्रकार कहा जा सकता है कि ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग से आशय ऐसी प्रोग्रामिंग से है जिसमें प्रथम प्राथमिकता डेटा को दी जाती है तथा जिसमें पोलिमोफिज्म, इनहेरिटेंस एनकैप्सूलेशन आदि सिद्धांतों का प्रयोग किया जाता हो।

    Object Oriented Programming Concepts

    ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में प्रयोग में आने वाले विभिन्न बिंदु निम्नानुसार है:

    Class and Object(क्लास एवं ऑब्जेक्ट

    क्लास ऐसी यूनिट है, जो यह बताती है कि उसके आधार पर बनाए जाने वाले ऑब्जेक्ट में कौन-कौन से तत्व होंगे। एक क्लास में बेरिएबल तथा फक्शन, दोनों हो सकते हैं। इन्हें क्रमशः Data Member(डेटा मैम्बर) तथा member function(मैम्बर फंक्शन) कहा जाता है। एक प्रकार से क्लास एक स्ट्रक्चर बताती है, जिसके आधार पर एक या अधिक ऑब्जेक्ट बनाए जा सकते हैं।

    उदाहरण के लिए employee एक क्लास हो सकती है, जिसमें name, salary grade आदि डेटा मैम्बर तथा da(), hra() आदि मैम्बर फंक्शन हो सकते हैं। इस employee क्लास के आधार पर अलग-अलग ऑब्जेक्ट बनाते हुए उनमें अलग-अलग कर्मचारियों का डेटा स्टोर करवाया जा सकता है।

    इस आधार पर कहा जा सकता है कि क्लास से आशय ऐसे यूनिट से है जो किसी श्रेणी को इंगित करती हो। इस क्लास के आधार पर ऑब्जेक्ट को बनाया जा सकता है। 

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

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

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

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

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

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

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

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

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

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

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

    फक्शन ओवरलोडिग तथा ऑपरेटर ओवरलोडिंग, दोनों को विस्तार से  हम आने वाले अध्यायों में समझेंगे 

    Features of C++ :-

    • यह case sensitive लैंग्वेज है। उदाहरण के लिए main, Main तथा MAIN तीनों के ही अलग-अलग अर्थ हो सकते हैं। साधारणतः इसमे सभी कमांड छोटे अक्षरों में ही टाइप किए जाते हैं।
    • यह portable Language(पोर्टेबल लँग्वेज)  है अर्थात इसमें बने प्रोग्राम में लगभग बिना परिवर्तन किए उसे विभिन्न प्रकार के Computers(कम्प्यूटरों) पर रन कराया जा सकता है।
    • इसमें 63 कीवर्ड हैं। C++ की कार्यकुशलता इन्हीं Key-words(कीवर्ड्स) में निहित है। इन्हीं कीवर्ड्स के विभिन्न संयोजनों से ही पूरा प्रोग्राम बनता है।
    • बिल्ट-इन-लायब्रेरी फक्शनों के माध्यम से हम किसी भी जटिल समस्या का प्रोग्राम बड़ी आसानी एवं कम समय में बना सकते हैं।
    • C++ में बना प्रोग्राम अन्य प्रोग्रामिंग भाषाओं की तुलना में तेज गति से कार्य करने में सक्षम होता है।
    • इसमें इनहेरिटेंस, पोलिमोर्फिज्म, एनकैप्सूलेशन जैसे फीचर्स का प्रयोग किया जाता है।
    • इसमें रेफ्रेंस वेरिएबल का प्रयोग होता है।

    • इसमें कंस्ट्रक्टर / डिस्ट्रक्टर का प्रयोग किया जाता है।

    Difference Between C Language and C++

    • C Language, procedural programming Language(प्रोसिजरल प्रोग्रामिंग लैंग्वेज है) हैं, वहीं C++ object oriented programming  Language(ऑब्जेक्ट ओरिएटेड प्रोग्रामिंग लैंग्वेज) है।
    • C में Identifier(आइडेंटिफायर ) की अधिकतम लंबाई 8 अक्षर तक होती है, जबकि C++ में यह 32 अक्षर तक हो सकती हैं। यह तथ्य अलग-अलग कंपाइलर के लिए अलग-अलग हो सकता है।
    • C Language, में 32 कीवर्ड  होते हैं वही C++ में  63 कीवर्ड होते हैं। 
    • C में कुछ स्थितियों में फंक्शन को Declare (डिक्लेयर) करना आवश्यक नहीं होता है, जबकि C++ में  सभी स्थितियों में फंक्शन को Declare(डिक्लेयर) करना आवश्यक होता है।
    • C में किसी भी अन्य स्टेटमेंट से पूर्व वेरिएबल को Dcleare(डिक्लेयर) करना आवश्यक होता है, वहीं C++ में वेरिएबल को प्रोग्राम में कहीं भी प्रयोग से पहले डिक्लेयर किया जा सकता है। 
    • C top-down(टॉप-डाउन) प्रणाली पर आधारित है, वही C++ bottom-up(बॉटम-अप) प्रणाली पर आधारित है।
    • C में रेफ्रेस वेरिएबल नहीं होते, वहीं C ++ होते हैं।
    • C Language में Structure में function  नहीं होते हैं, वहीं  C++ में होते हैं। 
    • Dynamic memory Allocation तथा  deallocation के लिए में malloc()/free() function का प्रयोग किया जाता हैं, वही C++ में new/delete का प्रयोग किया जाता हैं।  

    Most Important Point Of C++ 

    • C++ प्रोग्रामिंग लैंग्वेज का विकास AT&T Bell Laboratories, USA में सन् 1980 के प्रारंभ में हुआ। इसे Bjarne Stroustroup ने विकसित किया।
    • स्ट्रक्चर्ड प्रोग्रामिंग लैंग्वेज से आशय ऐसी लैंग्वेज से है, जिसमें sequence, branching तथा iteration का प्रयोग किया जाता हो।
    • प्रोसिजरल प्रोग्रामिंग ऐसी प्रणाली है, जिसमें फंक्शन्स का प्रयोग किया जाता है।
    • ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज से आशय ऐसी लँग्वेज से है, जिसमें फंक्शन की जगह  डेटा को प्राथमिकता दी जाती है।
    • प्रोसिजरल प्रोग्रामिंग में पहली प्राथमिकता फंक्शन को दी जाती है, वहीं ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में पहली प्राथमिकता डेटा को दी जाती है। 
    • क्लास से आशय ऐसे यूनिट से है जो किसी श्रेणी को इंगित करती हो। एक क्लास में वेरिएबल तथा फंक्शन, दोनों हो सकते हैं।
    • ऑब्जेक्ट को run-time-entity भी कहते हैं।
    • एब्सट्रेक्शन से आशय ऐसी प्रक्रिया से है, जिसमें सिर्फ वही तत्व रखे जाते हैं, जिनकी आवश्यकता होती है, तथा  अनावश्यक तत्वों को हटा दिया जाता है।
    • एनकैप्सूलेशन ऐसी प्रक्रिया है जिसमें डेटा और फंक्शन को एक साथ बांध दिया जाता है।
    • डेटा हाइडिंग में क्लास के डेटा को बाहरी तत्वों की पहुंच से छुपा दिया जाता है।
    • पोलिमोर्फिज्म से आशय एक-से-अधिक रूप से होता है।

    Post a Comment

    1 Comments