मैं स्मॉलटॉक के प्रारंभिक इतिहास को पढ़ रहा हूं और "असाइनमेंट" के कुछ उल्लेख हैं जो मुझे इसके बारे में मेरी समझ पर सवाल करते हैं:
हालांकि OOP कई प्रेरणाओं से आया था, दो केंद्रीय थे। बड़े पैमाने पर एक जटिल मॉड्यूल के लिए एक बेहतर मॉड्यूल योजना ढूंढनी थी जिसमें विवरणों को छिपाना शामिल था, और छोटे पैमाने पर एक असाइनमेंट का अधिक लचीला संस्करण खोजना था, और फिर इसे पूरी तरह से खत्म करने का प्रयास करना था।
( 1960-66 से - साठ के दशक के शुरुआती ओओपी और अन्य औपचारिक विचार , खंड I)
मुझे सिमुला से जो मिला वह यह था कि अब आप लक्ष्यों के साथ बाइंडिंग और असाइनमेंट को बदल सकते हैं । आखिरी चीज जिसे आप चाहते थे कि कोई भी प्रोग्रामर आंतरिक स्थिति के साथ गड़बड़ कर रहा है, भले ही लाक्षणिक रूप से प्रस्तुत किया गया हो। इसके बजाय, वस्तुओं को उच्च स्तर के व्यवहार के स्थान के रूप में प्रस्तुत किया जाना चाहिए जो गतिशील घटकों के रूप में उपयोग के लिए अधिक उपयुक्त है । (...) यह दुर्भाग्यपूर्ण है कि आज जो "ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग" कहा जाता है, उसमें से ज्यादातर पुराने स्टाइल की प्रोग्रामिंग है, जो कट्टरपंथियों द्वारा की जाती है। कई कार्यक्रमों को "असाइनमेंट-स्टाइल" संचालन के साथ लोड किया जाता है जो अब अधिक महंगी संलग्न प्रक्रियाओं द्वारा किया जाता है।
( "ऑब्जेक्ट ओरिएंटेड" स्टाइल , सेक्शन IV)
क्या मैं इस आशय की व्याख्या करने में सही हूं कि वस्तुओं को दोष और किसी भी विधि (या "संदेश") के लिए माना जाता है जिसका उद्देश्य किसी वस्तु पर एक उदाहरण चर सेट करना है (अर्थात "असाइनमेंट") उद्देश्य को हरा रहा है? यह व्याख्या खंड IV में दो बाद के बयानों द्वारा समर्थित प्रतीत होती है:
एक साथ उपयोग की जाने वाली चार तकनीकें - लगातार स्थिति, बहुरूपता, तात्कालिकता और वस्तु के लिए तरीके-जैसे-लक्ष्य - बहुत अधिक शक्ति के लिए खाते। इनमें से किसी को भी "ऑब्जेक्ट-ओरिएंटेड भाषा" नियोजित करने की आवश्यकता नहीं है - ALGOL 68 को लगभग इस शैली में बदल दिया जा सकता है - और OOPL केवल एक विशेष फलदायी दिशा में डिजाइनर के मन को केंद्रित करता है। हालाँकि, इनकैप्सुलेशन राइट करना एक प्रतिबद्धता है, जो न केवल राज्य का विस्तार करना है, बल्कि प्रोग्रामिंग से राज्य उन्मुख रूपकों को समाप्त करना है।
...तथा:
असाइनमेंट स्टेटमेंट - यहां तक कि सार वाले - बहुत कम-स्तरीय लक्ष्यों को व्यक्त करते हैं, और उनमें से कुछ भी प्राप्त करने के लिए अधिक आवश्यकता होगी। आमतौर पर, हम नहीं चाहते कि प्रोग्रामर राज्य के साथ खिलवाड़ करे, चाहे वह नकली हो या न हो।
क्या यह कहना उचित होगा कि यहाँ अपारदर्शी, अपरिवर्तनीय उदाहरणों को प्रोत्साहित किया जा रहा है? या यह केवल प्रत्यक्ष राज्य परिवर्तन है जो हतोत्साहित किया जाता है? उदाहरण के लिए, यदि मेरे पास एक BankAccount
वर्ग है, तो यह ठीक है GetBalance
, Deposit
और Withdraw
उदाहरण के तरीके / संदेश; बस सुनिश्चित करें कि कोई SetBalance
उदाहरण विधि / संदेश नहीं है?