"ऑब्जेक्ट-ओरिएंटेशन" शब्द डॉ। एलन काय द्वारा गढ़ा गया था, इसलिए वह इसका अर्थ क्या है, इस पर आधिकारिक स्रोत है, और वह इसे इस प्रकार परिभाषित करता है :
ओओपी टू का मतलब केवल मैसेजिंग, लोकल रिटेंशन और प्रोटेक्शन और स्टेट-प्रोसेस को छुपाना, और सभी चीजों की एक्सट्रीम लेट-बाइंडिंग है।
चलो कि नीचे तोड़:
- मैसेजिंग ("वर्चुअल मेथड डिस्पैच", यदि आप स्मॉलटाकल से परिचित नहीं हैं)
- राज्य-प्रक्रिया होनी चाहिए
- स्थानीय रूप से बनाए रखा
- संरक्षित
- छिपा हुआ
- सभी चीजों की अत्यधिक देर से बाध्यकारी
कार्यान्वयन-वार, मैसेजिंग एक लेट-बाउंड प्रक्रिया कॉल है, और यदि प्रक्रिया कॉल लेट-बाउंड हैं, तो आप डिज़ाइन समय पर यह नहीं जान सकते हैं कि आप क्या कॉल करने जा रहे हैं, इसलिए आप राज्य के ठोस प्रतिनिधित्व के बारे में कोई धारणा नहीं बना सकते हैं। इसलिए, यह वास्तव में संदेश देने के बारे में है, देर-बाध्यकारी संदेश का कार्यान्वयन है और इसके परिणामस्वरूप एनकैप्सुलेशन होता है।
बाद में उन्होंने स्पष्ट किया कि " बड़ा विचार 'संदेश' है , और पछतावा होने के कारण इसे" संदेश-उन्मुख "के बजाय" ऑब्जेक्ट-ओरिएंटेड "कहा जाता है, क्योंकि" ऑब्जेक्ट-ओरिएंटेड "शब्द का महत्व महत्वहीन वस्तुओं (वस्तुओं) पर केंद्रित है ) और जो वास्तव में महत्वपूर्ण है (संदेश) से विचलित:
बस एक सौम्य अनुस्मारक जो मैंने पिछले OOPSLA में कुछ दर्द उठाकर सभी को यह याद दिलाने की कोशिश की कि स्मॉलटाक न केवल इसका सिंटैक्स या क्लास लाइब्रेरी है, यह कक्षाओं के बारे में भी नहीं है। मुझे खेद है कि मैंने बहुत पहले इस विषय के लिए "ऑब्जेक्ट" शब्द गढ़ा था क्योंकि यह बहुत से लोगों को कम विचार पर ध्यान केंद्रित करने के लिए मिलता है।
बड़ा विचार "मैसेजिंग" है - जो कि स्मालटाक / स्क्वेक की गुठली के बारे में है (और यह कुछ ऐसा है जो हमारे ज़ेरॉक्स PARC चरण में कभी पूरा नहीं हुआ था)। जापानी में एक छोटा शब्द है - मा - "जो कि बीच में है" के लिए - शायद निकटतम अंग्रेजी समकक्ष "इंटरस्टिशियल" है। महान और विकसित करने की प्रणाली बनाने में महत्वपूर्ण यह है कि इसके मॉड्यूल अपने आंतरिक गुणों और व्यवहारों के बजाय कैसे संवाद करते हैं। इंटरनेट के बारे में सोचो - जीने के लिए, (ए) को कई अलग-अलग प्रकार के विचारों और अहसासों की अनुमति देना है जो किसी भी एकल मानक से परे हैं और (बी) इन विचारों के बीच सुरक्षित अंतर की डिग्री को अलग करने की अनुमति देते हैं।
(बेशक, आज, ज्यादातर लोग वस्तुओं पर नहीं बल्कि कक्षाओं पर भी ध्यान केंद्रित करते हैं, जो और भी गलत है।)
संदेश OO के लिए मौलिक है, दोनों रूपक और एक तंत्र के रूप में।
यदि आप किसी को संदेश भेजते हैं, तो आप नहीं जानते कि वे इसके साथ क्या करते हैं। केवल बात यह है कि आप देख सकते हैं, उनकी प्रतिक्रिया है। आप नहीं जानते कि क्या उन्होंने स्वयं संदेश को संसाधित किया है (अर्थात यदि वस्तु में कोई विधि है), यदि उन्होंने संदेश किसी और को भेजा (प्रतिनिधि / समीपता), यदि वे इसे समझ भी गए। यही सब कुछ है, यही OO है। आप वास्तविक चीज़ से एक प्रॉक्सी को भी अलग नहीं कर सकते, जब तक कि यह जवाब नहीं देता कि आप उससे कैसे उम्मीद करते हैं।
"मैसेजिंग" के लिए एक अधिक "आधुनिक" शब्द "डायनेमिक विधि प्रेषण" या "वर्चुअल मेथड कॉल" है, लेकिन यह रूपक खो देता है और तंत्र पर ध्यान केंद्रित करता है।
इसलिए, एलन के की परिभाषा को देखने के दो तरीके हैं: यदि आप इसे अपने आप खड़े देखते हैं, तो आप देख सकते हैं कि संदेश मूल रूप से एक देर से बाध्य प्रक्रिया है और देर से बाध्यकारी इसका मतलब है कि अतिक्रमण है, इसलिए हम यह निष्कर्ष निकाल सकते हैं कि # 1 और # 2 वास्तव में बेमानी हैं, और OO सभी देर से बाध्यकारी है।
हालांकि, बाद में उन्होंने स्पष्ट किया कि महत्वपूर्ण चीज संदेश है, और इसलिए हम इसे एक अलग कोण से देख सकते हैं: संदेश देर से बाध्य है। अब, यदि मैसेजिंग केवल एक ही चीज संभव थी, तो # 3 तुच्छ रूप से सच होगी: यदि केवल एक ही चीज है, और वह चीज देर से-बाध्य है, तो सभी चीजें देर से-बाध्य हैं। और एक बार फिर, संदेश से एनकैप्सुलेशन निम्नानुसार है।
इसी तरह के अंक ऑन अंडरस्टैंडिंग डेटा एबस्ट्रेक्शन, विलियम आर। कुक द्वारा पुनरीक्षित और "ऑब्जेक्ट" और "ऑब्जेक्ट ओरिएंटेड" के सरलीकृत, आधुनिक परिभाषाओं के लिए उनके प्रस्ताव में भी किए गए हैं ।
संचालन का गतिशील प्रेषण वस्तुओं की अनिवार्य विशेषता है। इसका अर्थ है कि लागू किया जाने वाला ऑपरेशन वस्तु का एक गतिशील गुण है। संचालन को सांख्यिकीय रूप से पहचाना नहीं जा सकता है, और किसी भी अनुरोध के जवाब में ऑपरेशन को निष्पादित करने के लिए सामान्य रूप से कोई रास्ता नहीं है, इसे छोड़कर। यह प्रथम श्रेणी के कार्यों के साथ बिल्कुल वैसा ही है, जो हमेशा गतिशील रूप से भेजा जाता है।
स्मालटाक -72 में, कोई वस्तु भी नहीं थी! केवल संदेश धाराएँ थीं , जिन्हें लिखा गया, फिर से लिखा गया और पुन: प्रकाशित किया गया। पहले तरीके आए (संदेश धाराओं को पार्स और पुन: व्यवस्थित करने के मानक तरीके), बाद में ऑब्जेक्ट्स (कुछ निजी राज्य को साझा करने वाले तरीकों के समूह) आए। वंशानुक्रम बहुत बाद में आया, और वर्गों को केवल विरासत के समर्थन के तरीके के रूप में पेश किया गया था। अगर काय के अनुसंधान समूह को पहले से ही प्रोटोटाइप के बारे में पता था, तो उन्होंने शायद पहली बार में कक्षाएं शुरू नहीं की होंगी।
प्रकार और प्रोग्रामिंग भाषाओं में बेंजामिन पियर्स का तर्क है कि ऑब्जेक्ट-ओरिएंटेशन की परिभाषित विशेषता ओपन रिकर्सन है ।
तो: एलन Kay के अनुसार, OO मैसेजिंग के बारे में है। विलियम कुक के अनुसार, OO गतिशील विधि प्रेषण के बारे में है (जो वास्तव में एक ही बात है)। बेंजामिन पियर्स के अनुसार, OO सभी ओपन रिकर्सियन के बारे में है, जिसका मूल अर्थ है कि स्व-संदर्भों को गतिशील रूप से हल किया जाता है (या कम से कम यह सोचने का एक तरीका है), या, दूसरे शब्दों में, संदेश।
जैसा कि आप देख सकते हैं, "ओओ" शब्द का इस्तेमाल करने वाले व्यक्ति की वस्तुओं पर एक बहुत ही व्यापक विचार है, कुक के पास एक व्यावहारिक दृष्टिकोण है, और एक बहुत ही कठोर गणितीय दृष्टिकोण पियर्स। लेकिन महत्वपूर्ण बात यह है: दार्शनिक, व्यावहारिक और सैद्धांतिक सभी सहमत हैं! मैसेजिंग OO का एक स्तंभ है। अवधि।
ध्यान दें कि यहाँ विरासत का कोई उल्लेख नहीं है! OO के लिए वंशानुक्रम आवश्यक नहीं है। सामान्य तौर पर, ज्यादातर OO भाषाओं में कार्यान्वयन के कुछ तरीके पुन: उपयोग होते हैं, लेकिन यह जरूरी नहीं है कि इनहेरिटेंस हो। उदाहरण के लिए, यह प्रतिनिधिमंडल का कुछ रूप भी हो सकता है। वास्तव में, ऑरलैंडो की संधि , प्रतिनिधिमंडल को विरासत के विकल्प के रूप में चर्चा करती है और प्रतिनिधिमंडल और विरासत के विभिन्न रूपों से ऑब्जेक्ट-ऑयंटेड भाषाओं के डिज़ाइन स्थान के भीतर अलग-अलग डिज़ाइन बिंदुओं की ओर जाता है। (ध्यान दें कि वास्तव में जावा की तरह विरासत का समर्थन करने वाली भाषाओं में भी, लोगों को वास्तव में इससे बचने के लिए सिखाया जाता है, फिर से संकेत मिलता है कि यह OO के लिए आवश्यक नहीं है।)