ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग का परिचयObject Oriented Programming
ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग का मुख्य उद्देश्य प्रोसीजरल ओरियँंटेड प्रोग्रामिंग (POP) में आने वाले दोषों को दूर करना होता है ऑब्जेक्ट ओरियेंटड प्रोग्रामिंग के अंतर्गत डाटा (Data) तथा डाटा के साथ कार्य कर रहे कोड को एक अलग भाग एकाकी इकाई - (Single Unit) में निहित किया जाता है, जिसे Object कहते है।इस तरह से ऑब्जेक्ट ओरियेंटड प्रोग्रामिंग (OOP) उच्च स्तरीय सुरक्षा (High Level Security) प्रदान करती है।
ऑब्जेक्ट ओरियेटेड प्रोग्रामिंग का आधारभूत सिद्धान्त डाटा (Data) एवं उस डाटा पर क्रिया करने वाले Function (फक्शन) को एकाकी इकाई (Single Unit) में जोड़ना है। यह यूनिट ऑब्जेक्ट कहलाती है। अत: O0P का मुख्य सिद्धान्त ऑब्जेक्ट है।Object Oriented programming ( ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग) का सिद्धान्त वास्तविक विषय को वस्तुओं के द्वारा प्रदर्शित करना है। वास्तविक विषय में प्रत्येक वस्तु एक ऑब्जेक्ट (Object) है. जिनहें एक-दूसरे से भौतिक (Physical) दृष्टिकोण और स्वाभाविक दृष्टिकोण की विविधता से पृथक किया जाता है ।
इस प्रकार वास्तविक विषय की वस्तुओं के उदाहरण निम्नलिखित हैं-
(अ) कार, रेल, मोटर साइकल,
(ब) आम, नारंगी, सेव,
(स) प्रोग्राम
(द) टी.वी., रेडियो आदि।
वास्तविक विषय में सभी वस्तुए एक-दुसरे के सम्पर्क में आ सकती हैं चाहे ये वस्तुऐं एक श्रेणी या वर्ग (Class) की हों या अलग - वर्ग की हों। इसे मैसेज पासिंग (Message Passing) कहते है ।एक वस्तु यह जानती है कि कौन सा संदेश उसके लिये है, और कैसे वस्तु से व्यवहार करना है।
उदाहरण-एक पेन और स्केल बस्तुएं है और उनके परस्पर सम्पर ( Communication) से कागज पर एक रेखा खींची जाती है।
OOp में समस्या अनेक वस्तुओं से मिलकर बनी होती है। अर्थात समस्याएँ (Problen) वस्तुओं का समूह होती हैं और ऑब्जेक्ट मैसेज पासिंग (Object Message Passing) से समस्या का समाधान होता है ।OOP का सबसे छोटा उदाहरण C++ भाषा है। C++ में वस्तु तैयार की जाती है। इसके लिये किसी वस्तु का खाका (Template) तैयार किया जाता है।इसे वस्तु की वर्ग परिभाषा कहते हैं।इस वर्ग में वे भौतिक भाग होते हैं जिनसे मिलकर वस्तु निर्मित होती है ।इस वर्ग को वस्तु विधि (Objc Method) से संलग्न किया जाता है।
उदाहरण- भौतिक भाग-रंग, पहिये, स्टीयरिंग।
विधियाँ- ड्राइविंग, मोड़ना, रोकना, गति देना
इस प्रकार कोई कार एक कार टेम्पलेट निर्मित करती है और उस कार का कोई रंग, कार वस्तु कहलाता है ।
इस प्रकार एक कार के भौतिक भाग इसके वस्तु टेम्पलेट ( खाका) हैं, जब इन सभी भौतिक भागों को जोड़कर इसे कार का रूप दिया जाता है, तो कार के वस्तु टेम्पलेट (Template) के सभी सदस्य अवयव (Element) संयोजित हो जाते हैं।इस प्रकार कार एक वस्तु है और उसकी क्रियायें जैसे- चलाना, मोड़ना, रोकना आदि पद्धतियाँ (Methods) कहलाती हैं।
अतः जब डाटा को श्रेणीबद्ध में रखकर वस्तु (Object) के द्वारा उस पर विभिन्न क्रियायें की जाती हैं, तो प्रोग्रामिंग की यह विधि ऑब्जेक्ट ओरियंटेड प्रोग्रामिंग कहलाती है। OOP का प्रयोग जटिल समस्याओं को सरलतापूर्वक हल करने में किया जाता है ।
ऑब्जेक्ट-ओरियेंटेड पेराडिज्म Object Oriented Paradigm
ऑब्जेक्ट ओरियेंटेड पेराडिज्म का मुख्य उद्देश्य प्रोसीजरल ओरियंटेड प्रोग्रामिंग (POP) में आने वाली समस्याओं को दूर करने के साथ नई तकनीक का निर्मांण करना होता है।|POP के अन्तर्गत डाटा स्वतंत्र रूप से पूरे प्रोग्राम में (Move) करता है, जो Data Global होता है उस पर सुरक्षा (Security) का अभाव होता है।
ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग के अन्तर्गत डाटा तथा डाटा पर कार्य करने वाले फलन ( Function) को एक सिंगल यूनिट (Single Unit) में निहित करते हैं, जिसे ऑब्जेक्ट कहते हैं।
जो फंक्शन ऑब्जेक्ट के अन्तर्गत निहित होते हैं सिर्फ वही फंक्शन ऑब्जेक्ट के डाटा की गणना कर सकते हैं कोई बाहरी फंक्शन जो Class का मेम्बर नहीं है वह उस श्रेणीबद्ध (Class) के ऑब्जेक्ट के डाटा सदस्य की गणना नहीं कर सकता है ।
ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग में समस्या को एंटिटीज में विभाजित किया जा सकता है । जिन्हें ऑब्जेक्ट कहते हैं, और फिर इन ऑब्जेक्ट के लिये डाटा एवं फंक्शन (Function) बनाते हैं। ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग में डाटा में Function का संगठन निम्नांकित चित्र में प्रदर्शित किया गया है। एक ऑब्जेकट का डाटा केवल एक उस ऑब्जेक्ट से जुड़े हुये फंक्शन द्वारा एक्सेस (Acces) किया जा सकता है। जबकि एक ऑब्जेक्ट के फंक्शन दूसरे ऑब्जेक्ट के फंक्शन को एक्सेस कर सकते हैं।
OOP में डाटा और फंक्शन का ऑर्गैंनाइजेशन-
ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग के कुछ महत्वपूर्ण तथ्य निम्नलिखित हैं-
(i) प्रोसीजर की अपेक्षा डाटा पर ज्यादा ध्यान केन्द्रित किया जाता है ।
(ii) फंक्शन जो ऑब्जेक्ट के डाटा पर ऑपरेट करते हैं, डाटा सरंचना में एक-दूसरे से बँधे रहते हैं।
(iii) फंक्शन का उपयोग करते हुये एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट में डाटा आदान-प्रदान किया जा सकता है।
(iv) आवश्यकतानुसार नये फंक्शन तथा डाटा को आसानी से जोड़ा जा सकता है ।
(v) ऑब्जेक्ट ओरियेटेड प्रोग्रामिंग में बॉटम-अप (Bottom-up) विधि का उपयोग किया जाता है ।
(vi) डाटा श्रेणी में निहित होने के कारण किसी बाहरी फंक्शन के द्वारा एक्सेस (Access) नहीं किया जा सकता है
(vii) प्रोग्राम की समस्या को ऑब्जेक्ट में विभक्त किया जाता है ।
ऑब्जेक्ट ओरियेन्टेड प्रोग्रामिंग की मूल अवधारणा Basic Concept of Object Oriented Programming
ये अवधारणाएँ (Concept) निम्नांकित हैं
(i) Object
(ii) Classes
(iii) Data Abstraction
(iv) Encapsulation
(v) Inheritance
(vi) Polymorphism
(vii) Dynamic Binding
(vii) Message Passing
(i) Object ( ऑब्जेक्ट )-
ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग (OOP) के अन्तर्गत रन टाइम ऐन्टिटीज (Run Time Entities) को ऑब्जेक्ट (Object) कहते हैं। ऑब्जेक्ट किसी भी भौतिक (Physical) ऐन्टिटी को प्रदर्शित करता है। जैसे-कार, मोटर, खाता संख्या आदि।
ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग में किसी प्रोग्रामिंग प्रोब्लम (Problem) को हल (Solve) करने के लिये ऑब्जेक्ट का उपयोग किया जाता है । प्रोग्राम के ऑब्जेक्ट का चयन इस प्रकार किया जाना चाहिये कि वे वास्तविक विषय के समान ही हों। ऑब्जेक्ट मैमोरी में स्थान लेते हैं अथवा पास्कल में रिकॉर्ड या C में स्ट्रक्चर के समान, उस मैमोरी स्थान से संलग्न (Associated) पता रखते हैं।
जब एक प्रोग्राम (Program) एक्जीक्यूट (Execute) होता है, तो ऑब्जेक्ट एक-दूसरे को संदेश भेजकर आपस में communicate करते हैं
उदाहरण-यदि कस्टमर (Customer) एवं एकाउन्ट (Account) एक प्रोग्राम में दो ऑब्जेक्ट हों, तब कस्टमर ऑब्जेक्ट, एकाउन्ट (Account) ऑब्जेक्ट को बँंक बेलेंस (Bank balance) के निवेदन के लिये संदेश भेज सकता है । प्रत्येक ऑब्जेक्ट में डाटा को फेर-बदल (Manipulate) करने के लिये कोड निहित रहता है।
निम्नांकित चित्र में ऑब्जेक्ट ओरियेंटड विश्लेषण एवं Design में लोकप्रिय रूप से प्रयुक्त करने वाले दो संकेतो (Notations) को प्रदर्शित किया गया है। चित्र में ऑब्जेक्ट के अवयवों (Contents) को बताया गया है, जिनसे मिलकर किसी Object का निर्माण होता है।
(ii) श्रेणी (Class)-
यह एक डिराइब्ड (Derived) डाटा टाइप (Data Type) होता है, जिसका उपयोग किसी ऑब्जेक्ट के व्यवहार (Behaviour) को व्यक्त करने के लिये किया जाता है । ऑब्जेक्ट के समूह को श्रेणी (Class) कहते हैं । एक बार श्रेणी बनने के पश्चात् इसे टेम्पलेट की तरह उपयोग किया जा सकता है। क्लास उन ऑब्जेक्स का समूह होती है, जिनके गुणधर्मं समान होते हैं। ऑब्जेक्ट में डाटा एवं उस डाटा को फेरबदल करने के लिये कोड निहित रहता है । एक ऑब्जेक्ट के डेटा एवं कोड का सम्पूर्ण समुच्चय क्लास की सहायता से प्रयोक्ता द्वारा परिभाषित Data प्रकार बनाया जा सकता है । वास्तव में ऑब्जेक्ट क्लास टाइप वेरियेबल होते हैं। एक बार क्लास के परिभाषित होने के पश्चात् उससे सम्बन्धित अनेक ऑब्जेक्ट बनाये जा सकते हैं ।
Class बनाने के लिये निम्न प्रारूप (Syntax) का उपयोग करते हैं -
Class Class-name
{
Data Member 1
Data Member2
Data Member n
member function 1 ()
{
code
}
member function 2 ()
{
code
}
};
उदाहरण- Fruit Mango, Bird Parrot जिसमें Fruit एक श्रेणी तथा Mango एक वस्तु है |
(iii) सारांश (Abstraction) -
इसके अन्तर्गत डाटा की सम्पूर्ण जटिलता को सरल किया जाता है । एब्सट्रेक्शन में किसी कार्य को सम्पन्न करने के लिये केवल आवश्यक ज्ञान ही पर्याप्त है, न कि उस कार्य की आन्तरिक प्रक्रिया एवं उससे सम्बन्धित अप्रत्यक्ष रूप से होने वाले कार्य का ज्ञान।
उदाहरण- कम्प्यूटर सिस्टम पर कार्य करते समय माउस को क्लिक करने पर वह कार्य करता यह कार्य कैसे होता उसे छुपाना ही एब्सट्रेकशन कहलाता है।
(iv) एनकेप्सुलेशन (Encapsulation) -
डाटा एनकेप्सुलेशन से तात्पर्य डाटा तथा फंक्शन को एक सिंगल यूनिट में निहित करने से होता है। OOP में एनकेप्सुलेशन सुरक्षा प्रदान करता है, क्योंकि सिर्फ उसी को एक्सेस करेगा जो क्लास का मेम्बर होगा अन्यथा नहीं।
(v) इनहेरीटेंस (Inheritance) -
इनहेरीटेन्स ऑब्जेक्ट ओरियेटेड प्रोग्रामिंग के अन्तर्गत पुर्नउपयोग (Reusability) को प्रदान करता है, जिसके अन्तर्गत कोई एक श्रेणी (Class) किसी दूसरी क्लास (Class) की सुविधा को उपयोग (Use) कर सकती है।
इनहेरीटेन्स का महत्वपूर्ण लाभ यह होता है कि बिना किसी श्रेणी (Class) को बदले उस क्लास की क्षमता को बढ़ाया जा सकता है।
उदाहरण-जैसे पुत्र अपने पिता की properties को इनहेरिट कर सकता है तथा पोता अपने पिता तथा दादा (Grandfather) दोनों को properties को इनहेरिट कर सकता है ।
मोटर साइकिल अपने आप में एक श्रेणी (Class) है एवं दुपहिया क्लास (Two Wheelers Class) का सदस्य है। दुपहिया श्रेणी ऑटोमेटिव क्लास (OOP) का सदस्य है। यह ऑटोमेटिव आधारभूत श्रेणी (Base Class) है और दुपहिया (Two Wheelers) Derived Class है। इस प्रकार मोटर साइकिल एक दुपहिया ऑटोमेटिव है, जिसे निम्न प्रकार प्रदर्शित किया जाता है
(vi) पॉलीमॉर्फिज्म (Polymorphism) -
पॉलीमॉर्फिज्म से तात्पर्य किसी एक वस्तु से अनेक कार्य करने से होता है । पॉलीमॉर्फिज्म में कोई एक वस्तु अलग-अलग परिस्थिति में अलग-अलग तरह से कार्य करती है।
उदाहरण - माना कि एक श्रेणी है, जिसका नाम आकार (Shape) है तथा उसका एक फक्शन Draw () है, जो किसी आकृति को डिजाइन (Design) करता है।आकार (Shape) जो कि एक फंक्शन है, अपनी आवश्यकतानुसार वृत्त ( आयत) वर्ग का निर्माण कर सकता है ।
(vii) गतिशील बाइन्डिंग (Dynamic Binding) -
बाइन्डिंग का अर्थ या आशय प्रोसीजर कॉल (Procedure Call) के काल को प्रत्युत्तर (Response) में क्रियान्वित (Execute) किये जाने वाले कोड (Code) को जोड़ने से है Dynamic Binding का मतलब यह है कि जो प्रोसीजर (Procedure) कॉल से सम्बन्धित (Relative) है, का तब तक पता न चले जब तक कि कॉल रन-टाइम (Run- Tine) की स्थिति में न आ जाये। इसका सम्बन्ध पॉलिमॉर्फिज्म (Polymorphism) तथा वंशानुक्रम (Inheritance) से है । उपर्युक्त चित्र में Draw Procedure पर विचार करने पर पता चला है कि सभी Object का प्रोसीजर Draw ही है किन्तु इसका तर्क एक दूसरे Object से भित्र है, इसलिए Draw हर Class, जो Object परिभाषित करता है, प्रत्येक बार इसकी परिभाषा दूसरी हैं, किन्तु रन-टाइम (Run- time) के समय, समान ऑब्जेक्ट वाला कोड वर्तमान रिफ्रेन्स (Reference) से कॉल किया जायेगा ।
(vii) संदेश प्रेषण (Message Passing) -
ऑब्जेक्ट प्रवृत्त प्रोग्राम का निर्माण ऑब्जेक्ट्स (Objects) के समूह (Group) पर बना होता है, जो एक-दूसरे के साथ संचार (Communication) स्थापित रखते हैं । Object Oriented Language में प्रोग्रामिंग के Process में निम्नलिखित पद (Step) सम्मिलित होते हैं
(a) Class का निर्माण जो Object तथा उनके व्यवहार को परिभाषित करता है ।
(b) Class की परिभाषा (Definition) से ऑब्जेक्ट का निर्माण करना ।
(c) Objects के मध्य संचार (Communication) स्थापित करना ।
ऑब्जेक्ट्स (Objects) एक-दूसरे से सूचना भेजते और प्राप्त करते हैं। उसी तरह जैसे एक व्यक्ति किसी दूसरे व्यक्ति के पास Message Pass (पहुँचाता) करता है Object एक संदेश (Message) किसी प्रोसीजर (Procedure) को क्रियान्वित करवाने के उदेश्य से होता है, जो उस प्रोसीजर या फंक्शन को प्राप्त किये गये Object में कार्यान्वित (Execute) करता है तथा अपेक्षित परिणाम प्रंदान करता है । संदेश संचार (Message Communication) में Object का Name, Function का Name तथा भेजी गयी सूचना सम्मिलित होते हैं। Objects एक जीवन-चक्र (Life-cycle) है। ये बनाये जाते हैं तथा नष्ट किये जाते हैं । ऑब्जेक्ट संचार तब तक चलता रहता है, जब तक यह नष्ट नहीं किये जाते हैं ।
ऑब्जेक्ट ओरियेन्टेड प्रोग्रामिंग की उपयोगिता Benefits of OOPs
OOP के मुख्य लाभ निम्नलिखित हैं
(i) प्रोग्रामिंग करना आसान है ।
(ii) किसी बने हुये प्रोग्राम में संशोधन (Modification) करना आसान है।
(iii) वंशानुक्रम (Inheritance) के द्वारा हम पहले से बनी हुई क्लास का उपयोग नई Class बनाने में कर सकते हैं, इसके कारण कोड में दोहराव नहीं होता है।
(iv) डाटा छुपाने का सिद्धान्त प्रोग्रामर को अपने प्रोग्राम को सुरक्षित रखने में सहायता करता है। कोई दूसरा प्रोग्राम इस कोड का प्रयोग नहीं कर सकता है।
(v) एक Object के बहुत सारे Instances (उदाहरण) सम्भव हैं, जो आपस में एक-दूसरे को Coexist बिना किसी रुकावट के कर सकते हैं।
(vi) Object Oriented System में छोटे सिस्टम को बड़े सिस्टम में आसानी से Upgrade किया जा सकता है ।
(vii) सॉफ्टवेयर (Software) उलझन को आसानी से Manage किया जा सकता है ।
(vii) सॉफ्टवेयर विकास (Software Development) आसान होता है ।
प्रोसीजर ओरियेंटेड तथा ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग में अन्तरDifference between POP and OOP
प्रोसीजर ओरियेंटेड प्रोग्रामिंग (POP) तथा ऑब्जेक्ट ओरियँटेड प्रोग्रामिंग (OOP) में निम्नलिखित अन्तर हैं
(i) प्रोसीजर ओरियेंटेड प्रोग्रामिंग में यदि कोई सॉफ्टवेयर बनता है तो उसकी शुरूआत नये सिरे से करनी पड़ती है।प्रोग्रामिंग की इस शैली में पहले से बने किसी प्रोग्राम को प्रयोग में नहीं लिया जाता है।
(ii) प्रोसीजर ओरियेंटड प्रोग्रामिंग में प्राथमिकता होने वाले कार्य को दी जाती है, न कि उपयोग हो रहे डाटा को।
प्रोसीजर ओरियेटेड प्रोग्रामिंग में आंकड़ों (Variables) को बदलने के लिये एक से अधिक फंक्शन (Function) का प्रयोग किया जाता है, जबकि ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग में वेरियेबल एवं प्रोग्राम को एक श्रेणी में निहित कर दिया जाता है, जिससे प्रोग्राम को नियंत्रित करना आसान हो जाता है।
(iii) प्रोसीजर ओरियेंटेड प्रोग्रामिंग में किसी बड़े प्रोग्राम को छोटे-छोटे भागों में विभक्त किया जाता है, जिसे फंक्शन (Function) कहते हैं, जबकि ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग में बडे प्रोग्राम को ऑब्जेक्ट में विभक्त करते हैं।
(iv) प्रोसीजर ओरियेटेड प्रोग्रामिंग में उच्च से निम्न (Top to Down) तकनीक का उपयोग किया जाता है, जबकि ऑब्जेक्ट ओरियेटेड प्रोग्रामिंग में नीचे से उच्च (Bottom to Up) तकनीक का उपयोग किया जाता है।
(v) ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग में वेरियेबल (Variable) एवं प्रोग्राम को एक श्रेणी में निहित कर दिया कर दिया जाता है, जिससे अन्य प्रोग्राम द्वारा किसी क्लास के आँकड़े प्रभावित न हो सकें, जबकि प्रोसीजर ओरियेंटेड प्रोग्रामिंग में वेरियेबल का प्रयोग फंक्शन के अन्दर करते हैं । इन्हीं वेरियेबल के आधार पर विभिन्न कार्य जैसे-गणनाएँ, आँकड़े प्रिनट करना, आँकड़े संग्रहित करना आदि कार्य सम्पन्न किये जाते हैं
(vi) प्रोसीजर ओरियेंटेड प्रोग्रामिंग में डाटा एक फंक्शन से दूसरे फंक्शन में भेजा जा सकता है, जबकि ऑब्जेक्ट ओरियेंटेड प्रोग्रामिंग में डाटा को एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट पर भेजा जाता है।
No comments:
Post a Comment