ऑब्जेक्ट ओरिएंटेड मॉडल के "ऑब्जेक्ट" के लिए गणित में औपचारिक परिभाषा / काउंटर पार्ट


9

यह एक प्रश्न है जिसे मैंने गणित एसई फोरम में पूछा था, और मुझे यहां संदर्भित किया गया था। तो यहाँ सवाल है-

मैं औपचारिक गणित और सैद्धांतिक कंप्यूटर विज्ञान दोनों में नौसिखिया हूं, इसलिए कृपया मेरे साथ सहन करें यदि आपको लगता है कि मेरा प्रश्न ठीक से तैयार नहीं है। ऑब्जेक्ट ओरिएंटेड मॉडलिंग वास्तविक दुनिया का अनुकरण करते समय जटिल इंटरैक्शन को परिभाषित करने में बहुत उपयोगी लगती है। लेकिन इसका इस्तेमाल ज्यादातर प्रोग्रामिंग में किया जाता है। मैं सोच रहा था कि क्या हमारे पास गणित में एक समान अवधारणा है। जब हम प्रोग्रामिंग कर रहे होते हैं, तो हम "ऑब्जेक्ट्स" और "ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग" की अवधारणा को समझ सकते हैं और इसे लागू कर सकते हैं। लेकिन क्या हमारे पास सेट थ्योरी के संदर्भ में "ऑब्जेक्ट" की औपचारिक परिभाषा है? या उस मामले के लिए, कोई अन्य औपचारिक गणितीय सिद्धांत?

क्या हम तीन प्राथमिक वस्तु उन्मुख मॉडलिंग अवधारणाओं को औपचारिक रूप से लागू / परिभाषित कर सकते हैं- 1. इनकैप्सुलेशन 2. वंशानुक्रम 3. बहुरूपता

मुझे पता है कि प्रश्न बहुत व्यापक है, लेकिन अगर आप कुछ संकेत प्रदान कर सकते हैं तो वास्तव में सराहना करेंगे ताकि मैं इन अवधारणाओं को बेहतर ढंग से समझ सकूं।


2
जैसा कि मैं इसे देखता हूं, वास्तव में दो प्रश्न हैं। एक वस्तु-उन्मुख अवधारणाओं की औपचारिकता के लिए पूछ रहा है। दूसरा गणित में ऑब्जेक्ट-ओरिएंटेड अवधारणाओं के लिए कह रहा है। शायद दो अलग-अलग सवाल पूछना बेहतर होगा। वहाँ बहुत सारी सामग्री है, पहला सवाल का जवाब देना, हालांकि दूसरे के लिए शायद थोड़ा ही है। (और शायद कल मुझे इस सवाल का जवाब देने का समय मिल जाएगा।)
डेव क्लार्क

धन्यवाद .. क्या आप कृपया मुझे वस्तु उन्मुख अवधारणाओं के औपचारिककरण के लिए एक सामग्री का सुझाव दे सकते हैं जिसे मानक या "पाठ्य पुस्तक" माना जाता है? मैं दूसरे उत्तर के लिए आपके उत्तर की प्रतीक्षा करूँगा .... :)
user1260776

2
मानक पुस्तक (कुछ साल पहले की) वस्तु का सिद्धांत है । अधिक हालिया काम फेदरवेट जावा है । कार्यशालाओं की एक श्रृंखला है, जिसे फाउंडेशन ऑफ ऑब्जेक्ट-ओरिएंटेड लैंग्वेजेज कहा जाता है जो इन मुद्दों से संबंधित है।
डेव क्लार्क

धन्यवाद! उनके माध्यम से जाना होगा ... इसके अलावा, मैं "
लंबदा

जवाबों:


9

जवाब जटिल है, दो कारणों से।

  1. कंप्यूटर साइंस के विभिन्न लोग "ऑब्जेक्ट" शब्द की अलग-अलग व्याख्या करते हैं। एक यह है कि एक वस्तु में कुछ डेटा और संचालन एक साथ पैक किए जाते हैं। दूसरा यह है कि एक वस्तु वह सब है, लेकिन उसकी "स्थिति" भी है, अर्थात यह परिवर्तनशील इकाई का कुछ रूप है ।

  2. "परिवर्तन" (और क्या "इकाई" का अर्थ है, जैसा कि यह लगातार बदल रहा है) के साथ क्या करने के लिए गहरे दार्शनिक मुद्दे हैं, और क्या गणितीय विवरण वास्तव में परिवर्तनकारी संस्थाओं को पकड़ते हैं।

डेटा + संचालन के अर्थ में वस्तु : यह गणित में बहुत मानक है। किसी भी समूह सिद्धांत पाठ्य पुस्तक को लें। इसकी कहीं न कहीं एक परिभाषा होगी जैसेजी(एक्स)=जीएक्सजी-1। (यह एक संयुग्मन ऑपरेटर है।) दजीइस शब्दावली में एक "वस्तु" है। इसका कुछ डेटा है (जी) और एक ऑपरेशन एक्सजीएक्सजी-1। या आप जोड़ी बनाकर इसे और अधिक ऑब्जेक्ट-वाई बना सकते हैंजी,एक्सजीएक्सजी-1 या तिगुना जी,एक्सजीएक्सजी-1,एक्सजी-1एक्सजी। आप किसी भी कार्यात्मक प्रोग्रामिंग भाषा में इस तरह के "ऑब्जेक्ट्स" का निर्माण कर सकते हैं जिसमें लैम्ब्डा एब्सट्रैक्शन और ट्यूपल्स बनाने का कोई तरीका है। आबदी और कार्डेली की "वस्तुओं का सिद्धांत" इस तरह की वस्तुओं के साथ बड़े पैमाने पर व्यवहार करता है।

राज्य के साथ ऑब्जेक्ट (या ऑब्जेक्ट जो बदलते हैं ): क्या गणित में ऐसी चीजें हैं? मुझे ऐसा नहीं लगता। मैंने एक गणितज्ञ को ऐसी किसी भी चीज़ के बारे में बात करते नहीं देखा है जो उसके व्यावसायिक जीवन में नहीं, बल्कि उसके बदलाव के बारे में बात करती हो। न्यूटन लिखते थेएक्स एक कण की स्थिति के लिए, जो माना जाता है कि बदल रहा है, और एक्स˙परिवर्तन की अपनी दर के लिए। गणितज्ञों को अंततः पता चला कि न्यूटन किस बारे में बात कर रहा थाएक्स(टी) सदिश स्थान में वास्तविक संख्याओं से, और एक्स˙ एक और ऐसा समारोह था जो पहले व्युत्पन्न था एक्स(टी) इसके संबंध में टी। इससे, कई गहरी सोच वाले गणितज्ञों ने निष्कर्ष निकाला है कि परिवर्तन वास्तव में मौजूद नहीं है और आपके पास समय के सभी कार्य हैं। लेकिन न्यूटनियन यांत्रिकी में जो बदल रहा था वह स्थिति नहीं थी, बल्कि कण था । स्थिति इसकी तात्कालिक स्थिति है। कोई भी गणितज्ञ या भौतिकशास्त्री यह ढोंग नहीं करेगा कि एक कण एक गणितीय विचार है। यह एक भौतिक चीज है।

तो यह वस्तुओं के साथ है। वे "भौतिक" चीजें हैं, और राज्य उनके गणितीय गुण हैं। इस पहलू की अच्छी चर्चा के लिए, एबेल्सन और सुस्मैन की संरचना और कंप्यूटर प्रोग्राम की व्याख्या के अध्याय 3 देखें । यह एमआईटी में एक पाठ्य-पुस्तक है और वे इसे सभी वैज्ञानिकों और इंजीनियरों को सिखाते हैं, जो मुझे लगता है कि "भौतिक" चीजों को पूरी तरह से ठीक समझते हैं।

यह तथ्य कि कण गणितीय नहीं हैं, इसका मतलब यह नहीं है कि हम उनसे गणितीय तरीके से नहीं निपट सकते। यदि आप एक गणितज्ञ से दो-कण प्रणाली को मॉडल करने के लिए कहते हैं, तो वह तुरंत दो कार्य करेगा और उन्हें कॉल करेगाएक्स1(टी) तथा एक्स2(टी)। तो, दो कण दो अर्थहीन सूचकांकों (1 और 2) को कम कर देते हैं। यह गणितज्ञ का यह कहने का तरीका है कि हम नहीं जानते कि वे कण क्या हैं और हमें परवाह नहीं है। हम सभी को यह जानना चाहिए कि उनकी स्थिति स्वतंत्र रूप से (या अलग से) विकसित होती है। इसलिए, हम उन्हें दो अलग-अलग कार्यों से जोड़ेंगे।

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

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


[नोट जोड़ा गया:]

विलियम कुक के लेख " ऑन अंडरस्टैंडिंग डेटा एब्सट्रैक्शन, रिविजिंस " में वस्तुओं के गणितीय घटाव का एक अच्छा विश्लेषण पाया जा सकता है ।


2
मुझे पता था कि यहां कोई व्यक्ति उत्तर दे सकेगा ...
लेडी बाउर

धन्यवाद उदय, आपके समय के लिए, और विस्तृत जवाब। जब मैंने यह प्रश्न पूछा, तो मैं केवल "डेटा + संचालन" के अर्थ में सोच रहा था, और यह मेरे लिए कभी नहीं हुआ कि समूह सिद्धांत "डेटा + संचालन" के रूप में "ओजेक्ट" का प्रतिनिधित्व कर सकता है। इसके अलावा, मैं आपके द्वारा संदर्भित लिंक के माध्यम से भी जाऊँगा।
user1260776

@AndrejBauer। हाँ, मैं शायद पानी में गिर गया। ओपी शायद औपचारिकता के लिए एक शब्द के रूप में "गणित" का उपयोग कर रहा था, एक अनुशासन के विपरीत।
उदय रेड्डी

@ उदय, मैं ठीक से प्रश्न नहीं कर सकता था, लेकिन जब मेरा मतलब "गणित" था, तो मेरा स्पष्ट रूप से औपचारिक गणित था। मेरा विचार "सेट सिद्धांत 'गणित की नींव है, कैसे सेट सिद्धांत के संदर्भ में OO मॉडलिंग की वस्तुओं की' व्याख्या 'या' व्युत्पन्न 'किया जाता है। हम इन सभी को कैसे सेट करते हैं- सेट थ्योरी, ऑब्जेक्ट और औपचारिक तर्क (जैसे पहला आदेश तर्क) ... "हालांकि मैं आपके उत्तर को पूरी तरह से नहीं समझ पा रहा हूँ, मैंने जो कहा है, उसका" अर्थ "प्राप्त करने में सक्षम हूँ, और मैं आपको विश्वास दिलाता हूँ, यह वह उत्तर है जिसकी मुझे उम्मीद थी। धन्यवाद !! (मेरे विचार पूरी तरह से व्यवस्थित नहीं हैं, plz मुझे माफ कर दो मैं अभी भी नौसिखिया :))
user1260776

2
@ user1260776। मै समझता हुँ। लेकिन मेरा कहना यह है कि "औपचारिक" और "गणित" अलग-अलग विचार हैं। आप उन्हें कम करने के लिए (या उनसे प्राप्त) गणित के बिना अवधारणाओं को औपचारिक रूप दे सकते हैं। न्यूटन ने यांत्रिकी को औपचारिक रूप दिया लेकिन "कणों" को "सेट" में कम करने की जहमत नहीं उठाई। मैं व्यक्तिगत रूप से न्यूटन के नेतृत्व का पालन करने और उन चीजों को स्वीकार करने के लिए काफी खुश हूं, जिन्हें मैं सेट करने के लिए कम नहीं करता हूं। लेकिन, मुझे लगता है कि हमें यह जानना होगा कि कब कम करना है और कब कम नहीं करना है। एक भौतिक विज्ञानी के रूप में प्रशिक्षित होने के बाद, मुझे लगता है कि यह करना काफी आसान है। कई अन्य कंप्यूटर वैज्ञानिकों के लिए, यह इतना आसान नहीं हो सकता है।
उदय रेड्डी

0

लगता है कि पुरानी क्लासिक पुस्तक "कंप्यूटर कार्यक्रमों की संरचना और व्याख्या" में वस्तुओं का एक बहुत अच्छा सैद्धांतिक वर्णन है, [1] एबेल्सन एंड ससमैन द्वारा, स्कीम (एक लिस्प संस्करण) पर आधारित है। अब मुफ्त ऑनलाइन! इससे पता चलता है कि कैसे वस्तु अभिविन्यास की अवधारणा को लैम्ब्डा कैलकुलस (~ उर्फ ​​लिस्प) में भी एम्बेड किया जा सकता है यदि आपके पास स्थानीय राज्य को संग्रहीत करने के लिए कुछ तंत्र है। जैसा कि मैं इसे समझता हूं, यह कई वर्षों के लिए एक std MIT पाठ्यपुस्तक थी। यह कहना नहीं है कि यह सबज पर सबसे अच्छा रेफरी है; मुझे यकीन है कि इस पीटी में अन्य बेहतर हैं।

मुझे नहीं लगता कि यह पूरी तरह से औपचारिक रूप से कहीं भी दर्ज किया गया है Ive के बारे में सुना है, लेकिन शिथिल रूप से बोलने वाले ऑब्जेक्ट मूल रूप से कोड + डेटा से बने होते हैं

  • तरीके (मापदंडों के साथ)
  • राज्य, उदाहरण के चर

कुछ संक्षिप्त रूप में। यकीनन अन्य पहलू जैसे वंशानुक्रम मौलिक नहीं हैं। जैसा कि abelson & sussman में कहा गया है, जिसे वे "सिंथैटिक शुगर" कहते हैं।

[१] एबेल्सन और ससमान द्वारा कंप्यूटर प्रोग्राम की संरचना और व्याख्या


3
बेशक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग सेंस में वस्तुओं को औपचारिक रूप दिया गया है। अबदी और कार्डेली, कैस्टंगा और किम ब्रूस की किताबें इस विषय के लिए समर्पित हैं। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की नींव के लिए समर्पित एफओओएल श्रृंखला में 10 साल की कार्यशालाएं हुई हैं। सम्मेलनों ECOOP और OOPSLA के पास नियमित रूप से OO की नींव पर कागजात थे। दरअसल, OO के शब्दार्थ पर पहला पेपर लगभग 20 साल पुराना है।
डेव क्लार्क

@vzn, उत्तर के लिए धन्यवाद। मैं आपके द्वारा सुझाई गई पुस्तकों के माध्यम से जाऊँगा ...
user1260776

DC-- मैंने इसे खराब बताया। अधिक सटीक रूप से, यह कहने के लिए अपनी सुरक्षित सोचें कि क्या वास्तव में एक "वस्तु" का गठन होता है या ओओपी के प्रमुख / मौलिक घटक साहित्य में काफी भिन्न होते हैं। समय के साथ परिभाषाओं में काफी विस्तार हुआ है। उदाहरण के लिए मुझे संदेह है कि विरासत में बाद में जोड़ा गया था और मूल विचार मुख्य रूप से एक संक्षिप्त रूप में कोड + डेटा था।
vzn

OOP सुविधा का एक और उदाहरण जो मैं बता सकता हूं से मौलिक के रूप में सहमत नहीं है, उदाहरण के लिए C ++ में देखा गया है, जो कई विरासत है, लेकिन इसके बजाय इंटरफेस के पक्ष में जानबूझकर जावा से बचा जाता है। आदि
vzn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.