अध्याय 3: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग क्या है?

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (या OOP) प्रोग्रामिंग का एक प्रतिमान या प्रतिरूप है, जिससे प्रोग्रामिंग समस्या का समाधान सहयोग करने वाली वस्तुओं के संग्रह के रूप में तैयार किया जाता है। ऑब्जेक्ट एक-दूसरे को संदेश भेजकर सहयोग करते हैं। यह बड़ी, जटिल समस्याओं के प्रबंधन के लिए सबसे उपयुक्त है।

एक वस्तु एक इकाई है जो राज्य (या गुण या गुण) और व्यवहार दोनों के पास है। एक और तरीका रखो, एक ऑब्जेक्ट डेटा और उस डेटा पर काम करने वाले कार्यों को इनकैप्सुलेट करता है। डेटा आमतौर पर अन्य वस्तुओं से छिपा होता है ताकि डेटा को प्रभावित करने का एकमात्र तरीका ऑब्जेक्ट के कार्यों (या विधियों) के माध्यम से हो।

एक वस्तु का एक उदाहरण एक कार है। एक कार में विशेषताएँ हैं (जैसे, रंग, आकार, वजन, ईंधन क्षमता, यात्रियों की संख्या, आदि)। एक कार में उसके तरीकों (जैसे, स्टार्ट इंजन, टर्न लेफ्ट / राइट, टर्न, स्टॉप, वाइपर्स वगैरह) को दर्शाते हुए व्यवहार होता है।

एक वर्ग एक विशेष प्रकार की वस्तु है जिसका उपयोग स्वयं के उदाहरण बनाने के लिए एक टेम्पलेट के रूप में किया जाता है। इसे कुकी कटर की तरह सोचें जो कुकीज़ (या ऑब्जेक्ट) का उत्पादन करता है।

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

यहाँ बहुरूपता का एक उदाहरण दिया गया है:

स्मॉलटाक एक वर्ग को केवल एक वर्ग से विरासत में लेने की अनुमति देता है। कुछ ओओपी भाषाएँ एक वर्ग को कई वर्गों से विरासत में मिलती हैं; इसे मल्टीपल इनहेरिटेंस के रूप में जाना जाता है। मल्टीपल इनहेरिटेंस जटिलता का एक बड़ा कारण बनता है, यही वजह है कि आमतौर पर इसे टाला जाता है। हम फिर से कई उत्तराधिकार की बात नहीं करेंगे।

जबकि विरासत OOP का एक महत्वपूर्ण पहलू है, यह प्रोग्राम बनाने का एकमात्र तरीका नहीं है। विरासत के बजाय, रचना या एकत्रीकरण का उपयोग किया जा सकता है। एक वर्ग में कुछ भी वारिस किए बिना अन्य वर्गों के उदाहरण शामिल हो सकते हैं। यह एक "एक" के रूप में संबंध है: कक्षा ए में एक सदस्य के रूप में एक क्लास बी उदाहरण है। यदि आपने विरासत का उपयोग किया है, तो क्लास बी एक प्रकार का क्लास ए ऑब्जेक्ट होगा; यह एक "रिश्ते का एक प्रकार" है। उदाहरण के साथ इसका उदाहरण दें…

एक कार एक तरह की मोटर चालित वाहन (मूल श्रेणी) है। तो एक मोटरसाइकिल है। तो एक मोटर बोट है। तो एक विमान है। इनमें से प्रत्येक एक मोटर चालित वाहन की विशेषताओं और व्यवहार को विरासत में मिला सकता है। लेकिन वे स्वयं के लिए मूल वर्ग की विशेषताओं और विधियों को भी अनुकूलित कर सकते हैं।

एक कार में स्वयं के हिस्से के रूप में अन्य वस्तुएं या कक्षाएं होती हैं, जैसे कि एक इंजन, पहियों, स्टीयरिंग व्हील, आदि। इन वर्गों के लिए कुछ भी विरासत में नहीं मिलता है।

उदाहरण के लिए, किसी वस्तु (वस्तु का डेटा) के गुण उदाहरण चर द्वारा दर्शाए जाते हैं। आमतौर पर, आप उनके लिए "गेट्टर" तरीके (एक इंस्टेंस वैरिएबल की वैल्यू प्राप्त करेंगे) और "सेटर" मेथड बनाएंगे (इंस्टेंट वैरिएबल के वैल्यू को सेट या मॉडिफाई करें), क्योंकि इंस्टेंस वेरिएबल बाहरी दुनिया से छिपे होते हैं।

चरणो में, उदाहरण चर वर्ग परिभाषा में बनाए जाते हैं, उदाहरण के लिए:

परिमाण उपवर्ग: # समय
   instVariableNames: 'सेकंड नैनो'
   classVariableNames: ''
   पूल डिक्शनरी: 'क्रोनोलॉजीकॉन्स्टेंट्स'
   पैकेज: 'कर्नेल-कालक्रम'

#Time क्लास में (#Time में हैश टाइम को स्मॉलटाक सिंबल के रूप में नामित करता है), दो उदाहरण चर हैं: ables सेकंड ’और’ नैनो ’। ऑब्जेक्ट की विधियाँ इन चरों पर चलेंगी, जो ऑब्जेक्ट की छिपी हुई और आंतरिक स्थिति का प्रतिनिधित्व करती हैं।

वैसे, # टाइम क्लास से व्युत्पन्न होता है, या विरासत में मिलता है, # मैग्निट्यूड क्लास। वैकल्पिक रूप से, आप मैग्नेटिट वर्ग "उपवर्ग" को टाइम क्लास कह सकते हैं। यह विशिष्ट स्मॉलटॉक पार्लानेंस है।

एक ऑब्जेक्ट पारंपरिक मॉड्यूल अवधारणा जैसा दिखता है जिसका उपयोग सी और पास्कल जैसी सरल प्रक्रियात्मक प्रोग्रामिंग भाषाओं में किया जाता है। एक मॉड्यूल में डेटा संरचना और संरचना पर काम करने वाले कार्य शामिल होते हैं। हालाँकि, डेटा छिपा नहीं है; डेटा तक कोई भी पहुंच सकता है। सबसे महत्वपूर्ण बात, मॉड्यूल अन्य मॉड्यूल से विरासत में नहीं मिल सकता है।

मॉड्यूल की तुलना में ऑब्जेक्ट आमतौर पर बहुत बारीक होते हैं। इस प्रकार, वे मॉडलिंग जटिल प्रणालियों के लिए आदर्श हैं।

तो यह बात है। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए आपका परिचय। यदि आप इस दिलचस्प विषय का गहराई से अध्ययन करना चाहते हैं, तो उदाहरण के लिए OOP और स्मालटाक को समर्पित पुस्तकों और सामग्रियों का खजाना है:

  • उदाहरण के लिए एलेक शार्प द्वारा स्मॉलटाक
  • स्मॉलटॉक, ऑब्जेक्ट्स, और डिज़ाइन, चामंड लियू द्वारा
  • फेरा उदाहरण के लिए, स्टीफन डुकासे, दिमित्रीस क्लॉपीस, निकोलई हेस, दिमित्री ज़गिडुलिन द्वारा