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