एक अक्सर सुन सकता है कि ओओपी स्वाभाविक रूप से उस तरह से मेल खाता है जिस तरह से लोग दुनिया के बारे में सोचते हैं। लेकिन मैं इस कथन से पूरी तरह असहमत हूं: हम (या कम से कम मैं) दुनिया के सामने उन चीजों के बीच संबंधों के संदर्भ में वैचारिकता रखते हैं, लेकिन OOP का ध्यान व्यक्तिगत कक्षाओं और उनके पदानुक्रमों को डिजाइन कर रहा है।
ध्यान दें, रोजमर्रा की जिंदगी में, रिश्ते और कार्य ज्यादातर उन वस्तुओं के बीच मौजूद होते हैं जो OOP में असंबंधित वर्गों के उदाहरण होते थे। ऐसे रिश्तों के उदाहरण हैं: "मेरी स्क्रीन तालिका के शीर्ष पर है"; "मैं (एक इंसान) एक कुर्सी पर बैठा हूँ"; "एक कार सड़क पर है"; "मैं कीबोर्ड पर टाइप कर रहा हूं"; "कॉफी मशीन पानी उबालती है", "पाठ टर्मिनल विंडो में दिखाया गया है।"
हम द्विभाजक के रूप में सोचते हैं (कभी-कभी ट्रिटेंट के रूप में, उदाहरण के लिए, "मैंने आपको फूल दिए") क्रिया जहां क्रिया एक क्रिया (संबंध) है जो कुछ परिणाम / कार्रवाई का उत्पादन करने के लिए दो वस्तुओं पर काम करती है। फोकस कार्रवाई पर है, और दो (या तीन) [व्याकरण] वस्तुओं को समान महत्व है।
विरोध करें कि OOP के साथ जहां आपको पहली बार एक ऑब्जेक्ट (संज्ञा) ढूंढनी है और इसे किसी अन्य ऑब्जेक्ट पर कुछ कार्रवाई करने के लिए कहें। सोचने का तरीका संज्ञाओं पर काम करने वाले क्रिया / क्रिया से संज्ञा पर स्थानांतरित किया जाता है - यह ऐसा है जैसे कि सब कुछ निष्क्रिय या रिफ्लेक्सिव आवाज में कहा जा रहा है, उदाहरण के लिए, "टर्मिनल विंडो द्वारा पाठ दिखाया जा रहा है"। या हो सकता है "पाठ टर्मिनल विंडो पर खुद को खींचता है"।
न केवल संज्ञाओं पर ध्यान केंद्रित किया जाता है, बल्कि संज्ञाओं में से एक (इसे व्याकरणिक विषय कहते हैं) को अन्य (व्याकरणिक वस्तु) की तुलना में अधिक "महत्व" दिया जाता है। इस प्रकार किसी को टर्मिनलविंडो.शो (someText) या someText.show (terminalWindow) कहेंगे। लेकिन ऐसे तुच्छ निर्णयों के साथ लोगों पर कोई परिचालन परिणाम क्यों नहीं होता है, जब वास्तव में शो का मतलब होता है (टर्मिनलविंडो, someText)? [परिणाम ऑपरेशनल रूप से महत्वहीन हैं - दोनों ही मामलों में टेक्स्ट को टर्मिनल विंडो पर दिखाया गया है - लेकिन क्लास पदानुक्रम के डिजाइन में बहुत गंभीर हो सकता है और "गलत" विकल्प कोड को बनाए रखने के लिए जटिल और कठिन हो सकता है।]
इसलिए मैं तर्क दूंगा कि OOP (वर्ग-आधारित, एकल-प्रेषण) करने का मुख्य मार्ग कठिन है क्योंकि यह UNNATURAL है और यह इस बात से मेल नहीं खाता कि मनुष्य दुनिया के बारे में कैसे सोचते हैं। CLOS से सामान्य तरीके मेरे सोचने के तरीके के करीब हैं, लेकिन, अफसोस, यह व्यापक दृष्टिकोण नहीं है।
इन समस्याओं को देखते हुए, यह कैसे / क्यों हुआ कि OOP करने का वर्तमान मुख्यधारा का तरीका इतना लोकप्रिय हो गया? और क्या, अगर कुछ भी हो, तो इसका पता लगाने के लिए क्या किया जा सकता है?