विज्ञापन
अगर आपने कुछ किया है शुरुआत प्रोग्रामिंग, या यहां तक कि अलग-अलग भाषाओं को देखने के लिए शुरू किया, आप शायद "ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग" (या "ओओपी") वाक्यांश के पार आएंगे।
सभी तकनीकी व्याख्याएँ हैं कि यह क्या है, लेकिन आज हम एक सरल तरीके से ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को परिभाषित करने जा रहे हैं।
इससे पहले कि हम शुरू करें: प्रक्रियात्मक भाषाएँ
यह समझने के लिए कि ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज क्या है, आपको यह समझने की जरूरत है कि इसकी जगह क्या आई। प्रारंभिक प्रोग्रामिंग भाषाएं प्रक्रियात्मक थीं - तथाकथित, क्योंकि प्रोग्रामर प्रक्रियाओं का एक बहुत विशिष्ट सेट परिभाषित करेगा जो कंप्यूटर शुरू करेगा।
शुरुआती दिनों में, प्रक्रियाओं को पंच कार्डों पर लिखा गया था। डेटा में उठाए गए उन कदमों ने उस डेटा पर कार्रवाई का एक क्रम प्रदर्शित किया, फिर नए डेटा का उत्पादन किया।
प्रक्रियात्मक भाषाओं ने एक समय के लिए अच्छा काम किया (और कुछ अभी भी उपयोग में हैं)। लेकिन जब आप चरणों के मूल अनुक्रम से परे कुछ प्रोग्राम करना चाहते हैं, तो प्रक्रियात्मक भाषाओं को प्रबंधित करना मुश्किल हो सकता है। जहाँ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग आती है।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का उद्देश्य
तो फिर, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग क्या है?
पहली ऑब्जेक्ट-ओरिएंटेड भाषा (आमतौर पर सिमूला होने के लिए सहमत) के विचार को पेश किया वस्तुओं. ऑब्जेक्ट्स जानकारी का संग्रह है जो एक विलक्षण इकाई के रूप में माना जाता है।
हम एक उदाहरण के साथ एक सेकंड में वास्तव में इसका क्या अर्थ है, में गहराई से गोता लगाते हैं, लेकिन पहले हमें इसके बारे में बात करनी होगी कक्षाएं. कक्षाएं पूर्व-वस्तुओं की तरह हैं। उनमें उन विशेषताओं की एक सूची होती है, जो परिभाषित करते समय, एक वस्तु बन जाती हैं।
आइए एक शतरंज के खेल की प्रोग्रामिंग का उदाहरण लें। हमारे पास एक वर्ग हो सकता है जिसे टुकड़ा कहा जाता है। टुकड़ा के भीतर, हमारे पास विशेषताओं की एक सूची है:
- रंग
- ऊंचाई
- आकार
- आंदोलन की अनुमति दी
एक वस्तु बस उस वर्ग से संबंधित एक विशेष उदाहरण को परिभाषित करती है।
इसलिए हमारे पास वाइटक्वीन नामक एक वस्तु हो सकती है। उस वस्तु की चारों विशेषताओं (श्वेत, लम्बी, बेलनाकार के साथ बेलनाकार, किसी भी दिशा में किसी भी स्थान पर) के लिए परिभाषाएँ होंगी। यह भी हो सकता है तरीके या कार्य.
प्रक्रियात्मक दृष्टिकोण की तुलना में यह इतना बेहतर क्या है?
संक्षेप में, वस्तु-उन्मुख प्रोग्रामिंग भाषाएं (जावा की तरह) डेटा और कोड को इस तरह से व्यवस्थित करना आसान बनाता है जो बड़ी परियोजना के लिए अधिक बहुमुखी हो।
इस पर थोड़ा और विस्तार से चर्चा करने के लिए, हम ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के चार बेसिक्स के बारे में बात करेंगे।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग: एब्स्ट्रेक्शन
सिर्फ इसलिए कि आप कुछ का उपयोग नहीं करना चाहते हैं, इसका मतलब है कि आपको यह जानना होगा कि यह कैसे काम करता है। एक एस्प्रेसो मशीन, उदाहरण के लिए, जटिल है। लेकिन आपको यह जानने की जरूरत नहीं है कि यह कैसे काम करता है। आपको बस यह जानना होगा कि जब आप "ऑन" हिट करते हैं, तो आप एस्प्रेसो प्राप्त करने जा रहे हैं।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में वस्तुओं का भी यही हाल है। हमारे शतरंज उदाहरण में, हमारे पास एक चाल () विधि हो सकती है। उस विधि को बहुत सारे डेटा और अन्य तरीकों की आवश्यकता हो सकती है। इसे प्रारंभिक स्थिति और अंतिम स्थिति चर की आवश्यकता हो सकती है। यह निर्धारित करने के लिए एक अन्य विधि का उपयोग कर सकता है कि क्या यह एक टुकड़ा है।
लेकिन आपको यह जानने की जरूरत नहीं है आपको बस यह जानने की जरूरत है कि जब आप टुकड़े को स्थानांतरित करने के लिए कहते हैं, तो यह चलता है। यह अमूर्तता है।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग: एनकैप्सुलेशन
इनकैप्सुलेशन एक तरीका है कि ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग एब्सट्रैक्शन बनाता है। प्रत्येक ऑब्जेक्ट डेटा का एक संग्रह है जिसे एकल इकाई के रूप में माना जाता है। और उन वस्तुओं के भीतर डेटा हैं - दोनों चर और तरीके।
किसी वस्तु के भीतर के चर आम तौर पर निजी रखे जाते हैं, जिसका अर्थ है कि अन्य वस्तुएं और विधियां उन तक नहीं पहुंच सकती हैं। ऑब्जेक्ट केवल उनके तरीकों का उपयोग करके प्रभावित हो सकते हैं।
एक बिशप वस्तु में कई जानकारी हो सकती है। उदाहरण के लिए, यह "स्थिति" नामक एक चर हो सकता है। वह चर चाल () विधि का उपयोग करने के लिए आवश्यक है। और, ज़ाहिर है, इसका एक रंग है।
स्थिति चर को निजी और चाल () विधि को सार्वजनिक करके, एक प्रोग्रामर चाल चर को किसी अन्य चीज से प्रभावित होने से बचाता है। और यदि रंग एक निजी चर है, तो किसी अन्य ऑब्जेक्ट के लिए इसे बदलने का कोई तरीका नहीं है जब तक कि कोई विधि न हो जो परिवर्तन की अनुमति देता है। (जो संभवतः आपके पास नहीं होगा, क्योंकि टुकड़े का रंग स्थिर रहना चाहिए।)
इन चर और विधियों को बिशप वस्तु के भीतर रखा जाता है। क्योंकि वे एनकैप्सुलेटेड हैं, एक प्रोग्रामर सार्वजनिक इंटरफ़ेस के बारे में चिंता किए बिना ऑब्जेक्ट की संरचना या सामग्री में बदलाव कर सकता है।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग: इनहेरिटेंस
कक्षाओं के अलावा, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज में सब-क्लास भी होते हैं। इनमें मूल श्रेणी के सभी गुण शामिल हैं, लेकिन इनमें अन्य विशेषताएँ भी हो सकती हैं।
हमारे शतरंज के खेल में, मोहरे के टुकड़ों को एक ऐसी विधि की आवश्यकता होती है जो उन्हें बोर्ड के अंत तक बना सके। हम इसे रूपांतर () विधि कहते हैं।
हर टुकड़े को ट्रांसप्लीनस () विधि की आवश्यकता नहीं है। इसलिए हम इसे टुकड़ा वर्ग में नहीं रखना चाहेंगे। इसके बजाय, हम प्यादा नामक एक उप-वर्ग बना सकते हैं। क्योंकि यह एक उप-वर्ग है, यह टुकड़ा से सभी विशेषताओं को प्राप्त करता है। इसलिए उप-वर्ग प्यादा के एक उदाहरण में एक रंग, ऊंचाई, आकार और आंदोलन शामिल है।
लेकिन इसमें ट्रांसफॉर्मपैन () पद्धति भी शामिल है। अब हमें कभी भी गलती से उस फंक्शन का इस्तेमाल किसी बदमाश पर नहीं करना चाहिए। यहाँ एक तकनीकी व्याख्या है:
उप-कक्षाएं बनाने से बहुत समय बचता है। सब कुछ के लिए नई कक्षाएं बनाने के बजाय, प्रोग्रामर एक बेस क्लास बना सकते हैं और फिर जब जरूरत होती है तो इसे नए उप-वर्गों तक बढ़ा सकते हैं। (हालांकि, यह ध्यान देने योग्य है कि विरासत पर निर्भरता खराब है 10 मूल प्रोग्रामिंग सिद्धांतों हर प्रोग्रामर का पालन करना चाहिएहमेशा वह कोड लिखें जो आपके सॉफ़्टवेयर पर काम करने वाले किसी भी व्यक्ति द्वारा बनाए रखा जा सकता है। उस अंत तक, यहां कई प्रोग्रामिंग सिद्धांत हैं जो आपको अपने कार्य को साफ करने में मदद करते हैं। अधिक पढ़ें .)
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग: पॉलिमॉर्फिज़्म
बहुरूपता विरासत का परिणाम है। पूरी तरह से बहुरूपता को समझने में कुछ प्रोग्रामिंग ज्ञान लगता है, इसलिए हम बस यहां की मूल बातों से चिपके रहेंगे। संक्षेप में, बहुरूपता प्रोग्रामर को एक ही नाम के तरीकों का उपयोग करने की अनुमति देता है, लेकिन साथ विभिन्न वस्तुओं.
उदाहरण के लिए, हमारे टुकड़ा वर्ग में एक चाल () विधि हो सकती है जो किसी भी दिशा में एक स्थान को एक स्थान पर ले जाती है। वह राजा के टुकड़े के लिए काम करता है, लेकिन किसी और चीज के लिए नहीं। इस समस्या को ठीक करने के लिए, हम रूक उप-वर्ग में नई चाल () पद्धति को परिभाषित कर सकते हैं जो आगे, पीछे, बाएं या दाएं की असीमित संख्या के रूप में आंदोलन को परिभाषित करती है।
अब, जब एक प्रोग्रामर चाल () विधि को लागू करता है और एक टुकड़े को तर्क के रूप में उपयोग करता है, तो प्रोग्राम को ठीक से पता चल जाएगा कि टुकड़ा कैसे चलना चाहिए। यह पता लगाने की कोशिश कर रहा है कि आप का उपयोग करना चाहिए जो कई अलग अलग तरीकों की एक टन बचाता है।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग इन नटशेल
यदि आपका सिर पिछली चार परिभाषाओं के बाद थोड़ा घूम रहा है, तो बहुत ज्यादा चिंता न करें। यहाँ मुख्य बातें हैं जो आपको याद रखने की आवश्यकता है:
- ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग ऑब्जेक्ट्स नामक एकल संस्थाओं में जानकारी एकत्र करता है।
- प्रत्येक वस्तु एक वर्ग का एक मात्र उदाहरण है।
- अमूर्तता किसी वस्तु के आंतरिक कामकाज को छुपाती है जब उन्हें देखना आवश्यक नहीं होता है।
- एन्कैप्सुलेशन वस्तुओं के भीतर संबंधित चर और विधियों को संग्रहीत करता है और उनकी सुरक्षा करता है।
- वंशानुक्रम उप-वर्गों को मूल वर्गों से विशेषताओं का उपयोग करने की अनुमति देता है।
- बहुरूपता वस्तुओं और विधियों को एक ही इंटरफ़ेस के साथ कई अलग-अलग स्थितियों से निपटने की अनुमति देता है।
यदि आप उन बिंदुओं को याद रख सकते हैं, तो आपके पास ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग पर एक अच्छा हैंडल होगा। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की चार मूल बातें, जैसा कि मैंने उल्लेख किया है, एक हैंडल प्राप्त करना थोड़ा मुश्किल हो सकता है। लेकिन एक बार जब आप प्रोग्रामिंग शुरू करते हैं, तो वे अधिक स्पष्ट हो जाते हैं।
याद रखें कि हमने इस लेख में केवल सामान्यताओं पर चर्चा की है। अलग-अलग ऑब्जेक्ट-ओरिएंटेड भाषाओं में अपने स्वयं के quirks और चीजें बनाने के तरीके होंगे। आप एक बार अपने लिए सही भाषा चुनें सर्वश्रेष्ठ प्रोग्रामिंग भाषाओं की तलाश है? यहाँ से प्रारंभ करें!क्या आप प्रोग्रामिंग भाषाओं में पूरी तरह से नए हैं या नई तरह की प्रोग्रामिंग में कूदना चाहते हैं, यह पूछने के लिए सबसे महत्वपूर्ण प्रश्नों में से एक है: "कौन सी प्रोग्रामिंग भाषा मेरे लिए सही है?" अधिक पढ़ें , आप सीखना शुरू करेंगे कि यह ओओपी सिद्धांतों को कैसे व्यवहार में लाता है।
Dann एक कंटेंट स्ट्रैटेजी और मार्केटिंग कंसल्टेंट है, जो कंपनियों को डिमांड और लीड जेनरेट करने में मदद करता है। वह dannalbright.com पर रणनीति और सामग्री विपणन के बारे में भी ब्लॉग करता है।