OOP और POP के बीच अंतर
विषय
तुलना चार्ट- ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) की परिभाषा
- ऑब्जेक्ट-ओरिएंटेड कॉन्सेप्ट्स
- प्रक्रिया उन्मुख प्रोग्रामिंग (पीओपी) की परिभाषा
- पीओपी विशेषताओं
- लाभ
- नुकसान
- निष्कर्ष
प्रक्रिया-उन्मुख प्रोग्रामिंग (POP) तथा ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) दोनों प्रोग्रामिंग दृष्टिकोण हैं, जो प्रोग्रामिंग के लिए उच्च-स्तरीय भाषा का उपयोग करता है। एक कार्यक्रम दोनों भाषाओं में लिखा जा सकता है, लेकिन यदि कार्य अत्यधिक जटिल है, तो पीओपी पीओपी की तुलना में अच्छी तरह से संचालित होता है। पीओपी में, 'डेटा सुरक्षा' जोखिम में है क्योंकि प्रोग्राम में डेटा स्वतंत्र रूप से चलता है, साथ ही, 'कोड पुन: प्रयोज्य' प्राप्त नहीं किया जाता है जो प्रोग्रामिंग को लंबा और समझने में कठिन बनाता है।
बड़े कार्यक्रमों में अधिक कीड़े होते हैं, और यह डीबगिंग के समय को बढ़ाता है। ये सभी दोष एक नए दृष्टिकोण को जन्म देते हैं, जिसका नाम है "ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग"। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में प्राथमिक चिंता ’s पर दी गई हैडाटा सुरक्षा'; यह डेटा को उन कार्यों के करीब से बांधता है जो उस पर काम करते हैं। यह the की समस्या का समाधान भी करता हैकोड पुन: प्रयोज्य', जैसे कि एक वर्ग बनाया जाता है, इसके कई उदाहरण (ऑब्जेक्ट) बनाए जा सकते हैं जो एक वर्ग द्वारा परिभाषित सदस्यों और सदस्य कार्यों का पुन: उपयोग करता है।
कुछ अन्य अंतर हैं जिनकी तुलना चार्ट की सहायता से की जा सकती है।
-
- तुलना चार्ट
- परिभाषा
- मुख्य अंतर
- लाभ
- नुकसान
- निष्कर्ष
तुलना चार्ट
तुलना के लिए आधार | पॉप | OOP |
---|---|---|
बुनियादी | प्रक्रिया / संरचना उन्मुख। | वस्तु के उन्मुख। |
पहुंच | ऊपर से नीचें। | नीचे से ऊपर। |
आधार | मुख्य ध्यान "कैसे कार्य प्राप्त करने के लिए है" अर्थात् किसी कार्यक्रम की प्रक्रिया या संरचना पर। | मुख्य फोकस डेटा सुरक्षा पर है। इसलिए, केवल वस्तुओं को किसी वर्ग की संस्थाओं तक पहुंचने की अनुमति है। |
विभाजन | बड़े कार्यक्रम को इकाइयों में विभाजित किया जाता है जिन्हें फ़ंक्शन कहा जाता है। | संपूर्ण कार्यक्रम वस्तुओं में विभाजित है। |
एंटिटी एक्सेसिंग मोड | कोई पहुंच निर्दिष्ट नहीं देखी गई। | एक्सेस स्पेसियर "पब्लिक", "प्राइवेट", "प्रोटेक्टेड" हैं। |
ओवरलोडिंग / बहुरूपता | न तो यह ओवरलोड कार्यों और न ही ऑपरेटरों। | यह फ़ंक्शंस, कंस्ट्रक्टर्स और ऑपरेटरों को ओवरलोड करता है। |
विरासत | उनकी विरासत का कोई प्रावधान नहीं है। | तीन मोड में निजी और संरक्षित में विरासत हासिल की। |
डेटा छिपाना और सुरक्षा | डेटा को छिपाने का कोई उचित तरीका नहीं है, इसलिए डेटा असुरक्षित है | डेटा सार्वजनिक, निजी और संरक्षित तीन मोड में छिपा हुआ है। इसलिए डेटा सुरक्षा बढ़ जाती है। |
डेटा साझा करना | कार्यक्रम में कार्यों के बीच वैश्विक डेटा साझा किया जाता है। | सदस्य कार्यों के माध्यम से वस्तुओं के बीच डेटा साझा किया जाता है। |
मित्र कार्य / कक्षाएं | मित्र समारोह की कोई अवधारणा नहीं। | कक्षाएं या फ़ंक्शन कीवर्ड "मित्र" के साथ किसी अन्य वर्ग का मित्र बन सकता है। नोट: "दोस्त" कीवर्ड का उपयोग केवल c ++ में किया जाता है |
आभासी कक्षाएं / समारोह | आभासी कक्षाओं की कोई अवधारणा नहीं। | विरासत के दौरान आभासी कार्य की अवधारणा दिखाई देती है। |
उदाहरण | सी, वीबी, फोरट्रान, पास्कल | C ++, JAVA, VB.NET, C # .NET। |
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) की परिभाषा
OOP की मुख्य चिंता किसी वर्ग के गैर-सदस्य कार्यों से डेटा छिपाना है, जो इसे "महत्वपूर्ण जानकारी" की तरह मानता है। डेटा एक वर्ग के सदस्य कार्यों के साथ निकटता से जुड़ा हुआ है, जो उस पर काम करता है। यह किसी भी गैर-सदस्य फ़ंक्शन को उसके अंदर डेटा को संशोधित करने की अनुमति नहीं देता है। ऑब्जेक्ट अपने डेटा तक पहुंचने के लिए सदस्य कार्यों के माध्यम से एक दूसरे के साथ बातचीत करते हैं।
OOP को "ऑब्जेक्ट", "क्लासेस", "डेटा एनकैप्सुलेशन या एब्स्ट्रैक्शन", "इनहेरिटेंस" और "पॉलीमोर्फिज़्म / ओवरलोडिंग" की मूल अवधारणा पर विकसित किया गया है। ओओपी में, डेटा और फ़ंक्शंस को विभाजित करके कार्यक्रमों को मॉड्यूल में विभाजित किया जा सकता है, जिसे आगे ज़रूरत पड़ने पर मॉड्यूल की नई प्रतियां बनाने के लिए टेम्पलेट के रूप में उपयोग किया जा सकता है। इसलिए, यह एक दृष्टिकोण है जो डेटा और कार्यों के लिए एक विभाजन स्मृति क्षेत्र का निर्माण करके कार्यक्रमों को संशोधित करने में सुविधा प्रदान करता है।
ऑब्जेक्ट-ओरिएंटेड कॉन्सेप्ट्स
- वस्तुओं: इसे एक प्रकार का वर्ग और एक वर्ग के उदाहरण के रूप में माना जाता है।
- कक्षा: यह समान प्रकार की वस्तुओं का एक समूह है। डेटा और ऑब्जेक्ट का कोड का एक पूरा सेट एक वर्ग का उपयोग करके उपयोगकर्ता-परिभाषित डेटा प्रकार बनाता है।
- डेटा एब्स्ट्रक्शन और इनकैप्सुलेशन: अमूर्त कुछ भी नहीं है, लेकिन पृष्ठभूमि के विवरण को छिपाने और आवश्यक सुविधाओं का प्रतिनिधित्व करने की एक विधि है। एनकैप्सुलेशन डेटा और फ़ंक्शंस को एक इकाई में पैक करने की एक विधि है।
- विरासत: इनहेरिटेंस एक वर्ग से दूसरे वर्ग की वस्तुओं की वस्तुओं को प्राप्त करने की एक तकनीक है। दूसरे शब्दों में, यह मौजूदा वर्ग से एक नए वर्ग को प्राप्त करने में मदद करता है।
- बहुरूपता: बहुरूपता एकल फ़ंक्शन नाम का उपयोग करके फ़ंक्शन के कई रूपों को बनाने की एक विधि प्रदान करता है।
- गतिशील बंधन: यह निर्दिष्ट करता है कि किसी विशेष प्रक्रिया से जुड़ा कोड रन टाइम पर कॉल के क्षण तक ज्ञात नहीं है।
- मृत्यु: यह ओओपी अवधारणा विभिन्न वर्गों के बीच सूचनाओं को संचारित करने और प्राप्त करने में सक्षम बनाता है।
प्रक्रिया उन्मुख प्रोग्रामिंग (पीओपी) की परिभाषा
पीओपी प्रोग्रामिंग का एक पारंपरिक तरीका है। प्रक्रियात्मक प्रोग्रामिंग वह है जहां प्राथमिक ध्यान कार्य को क्रमबद्ध रूप से पूरा करने पर होता है। फ़्लोचार्ट कार्यक्रम के नियंत्रण के प्रवाह को व्यवस्थित करता है। यदि कार्यक्रम व्यापक है, तो इसे कुछ छोटी इकाइयों में संरचित किया जाता है, जिन्हें फ़ंक्शन कहा जाता है, जो वैश्विक डेटा साझा करता है। यहां, डेटा सुरक्षा की चिंता उत्पन्न होती है, क्योंकि कार्यों द्वारा कार्यक्रम में अनजाने में परिवर्तन होता है।
पीओपी विशेषताओं
- प्रोग्राम डिजाइन करते समय, पीओपी एक टॉप-डाउन प्रोग्रामिंग दृष्टिकोण का अनुसरण करता है।
- अधिकांश कार्य वैश्विक डेटा को साझा करने की अनुमति देते हैं।
- यह बड़े कार्यक्रमों को छोटे भागों में विभाजित करता है जिन्हें फ़ंक्शन कहा जाता है।
- यह फ़ंक्शंस से फ़ंक्शंस तक सिस्टम के चारों ओर मुफ़्त डेटा मूवमेंट की अनुमति देता है।
- डेटा एक रूप से दूसरे रूप में कार्यों द्वारा रूपांतरित होता है।
- यह कार्यों की अवधारणा को महत्व देता है।
- पीओपी प्रक्रिया-उन्मुख प्रोग्रामिंग है, जबकि OOP ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग है।
- पीओपी का मुख्य फोकस "कैसे कार्य प्राप्त करने के लिए"यह कार्य करने के लिए फ्लो चार्ट का अनुसरण करता है। OOP का मुख्य ध्यान केंद्रित है डाटा सुरक्षा जैसे कि किसी वर्ग की वस्तुओं को किसी वर्ग की विशेषताओं या कार्यों तक पहुंचने की अनुमति है।
- कार्यों बड़े कार्यक्रमों या उप-कार्यक्रम की छोटी इकाइयाँ हैं जो मुख्य कार्य को पूरा करने के लिए निष्पादित करती हैं। इसके विपरीत, OOP विशेषताओं और कार्यों के वर्ग के बीच विभाजित हैं वस्तुओं.
- पीओपी में, कार्यक्रम में विशेषताओं या कार्यों तक पहुंचने के लिए कोई विशिष्ट एक्सेसिंग मोड नहीं है। इसके विपरीत, OOP में तीन एक्सेसिंग मोड "पब्लिक", "प्राइवेट", "प्रोटेक्टेड" होते हैं, जो कि एट्रिब्यूटिंग मेथड के रूप में उपयोग किए जाते हैं।
- पीओपी ओवरलोडिंग / बहुरूपता की अवधारणा का समर्थन नहीं करता है। इसके विपरीत, OOP ओवरलोडिंग / बहुरूपता का समर्थन करता है, जिसका अर्थ है विभिन्न कार्यों को करने के लिए एक ही फ़ंक्शन नाम का उपयोग करना। हम OOP में कार्यों, निर्माणकर्ता और ऑपरेटरों को अधिभारित कर सकते हैं।
- पीओपी में विरासत की कोई अवधारणा नहीं है जबकि, ओओपी विरासत का समर्थन करता है जो विरासत के अन्य वर्ग की विशेषता और कार्यों का उपयोग करके अनुमति देता है।
- OOP की तुलना में POP कम सुरक्षित है क्योंकि OOP में पहुंच विनिर्देश उन विशेषताओं या कार्यों तक पहुंच को सीमित करता है जो सुरक्षा बढ़ाते हैं।
- पीओपी में अगर कार्यक्रम में सभी कार्यों के बीच कुछ डेटा साझा किया जाना है, तो इसे सभी कार्यों के बाहर वैश्विक रूप से घोषित किया जाता है। जबकि OOP में कक्षा के डेटा सदस्य को कक्षा के सदस्य कार्यों के माध्यम से पहुँचा जा सकता है।
- पीओपी में फ्रेंड फंक्शन की कोई अवधारणा नहीं है। जैसा कि OOP में, मित्र फ़ंक्शन की एक अवधारणा है जो वर्ग का सदस्य नहीं है, लेकिन क्योंकि यह मित्र सदस्य है क्योंकि यह डेटा सदस्य और वर्ग के सदस्य कार्यों तक पहुंच सकता है।
- पीओपी में आभासी वर्गों की कोई अवधारणा नहीं है जबकि ओओपी में, आभासी कार्य बहुरूपता का समर्थन करते हैं।
लाभ
पीओपी (प्रक्रिया ओरिएंटेड प्रोग्रामिंग)
- विभिन्न स्थानों पर समान कोड का पुन: उपयोग करने की क्षमता प्रदान करता है।
- कार्यक्रम के प्रवाह पर नज़र रखने में सुविधा।
- मॉड्यूल का निर्माण करने में सक्षम।
OOP (ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग)
- ऑब्जेक्ट परियोजना में कार्य विभाजन में मदद करते हैं।
- डेटा छुपाकर सुरक्षित कार्यक्रमों का निर्माण किया जा सकता है।
- यह संभावित रूप से वस्तुओं को मैप कर सकता है।
- विभिन्न वर्गों में वस्तुओं के वर्गीकरण को सक्षम करता है।
- ऑब्जेक्ट-ओरिएंटेड सिस्टम को आसानी से अपग्रेड किया जा सकता है।
- वंशानुक्रम का उपयोग करके अनावश्यक कोड को समाप्त किया जा सकता है।
- पुन: प्रयोज्य का उपयोग करके कोड बढ़ाया जा सकता है।
- बृहत्तर प्रतिरूपता प्राप्त की जा सकती है।
- डेटा अमूर्तता विश्वसनीयता बढ़ाती है।
- गतिशील बाध्यकारी अवधारणा के कारण लचीले।
- सूचना छिपाई का उपयोग करके इसके कार्यान्वयन से आवश्यक विनिर्देश घोषित करता है।
नुकसान
पीओपी (प्रोसीजर ओरिएंटेड प्रोग्रामिंग)
- वैश्विक डेटा असुरक्षित हैं।
- डेटा एक कार्यक्रम के भीतर स्वतंत्र रूप से आगे बढ़ सकता है
- डेटा स्थिति को सत्यापित करना कठिन है।
- कार्य क्रिया-प्रधान होते हैं।
- कार्य समस्या के तत्वों से संबंधित होने में सक्षम नहीं हैं।
- वास्तविक दुनिया की समस्याओं का मॉडल नहीं बनाया जा सकता है।
- कोड के हिस्से अन्योन्याश्रित हैं।
- अन्य एप्लिकेशन में एक एप्लिकेशन कोड का उपयोग नहीं किया जा सकता है।
- फ़ंक्शन का उपयोग करके डेटा स्थानांतरित किया जाता है।
OOP (ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग)
- इसके लिए अधिक संसाधनों की आवश्यकता होती है।
- वस्तुओं के गतिशील व्यवहार के लिए रैम स्टोरेज की आवश्यकता होती है।
- गुजरने पर प्रदर्शन और जटिल अनुप्रयोगों में डिबगिंग कठिन होती है।
- वंशानुक्रम उनकी कक्षाओं को कसकर युग्मित बनाता है, जो वस्तुओं की पुन: प्रयोज्यता को प्रभावित करता है।
निष्कर्ष
पीओपी की खामियां OOP की जरूरत है। OOP "ऑब्जेक्ट" और "क्लासेस" की अवधारणा को शुरू करके पीओपी की खामियों को ठीक करता है। यह डेटा सुरक्षा और वस्तुओं के स्वत: आरंभ और क्लियर-अप को बढ़ाता है। OOP बिना किसी हस्तक्षेप के ऑब्जेक्ट के कई उदाहरण बनाना संभव बनाता है।