क्या ओओपी के पीछे एक सिद्धांत / अमूर्तता है?


13

फंक्शनल प्रोग्रामिंग में बहुत ही सुंदर लैंबडा कैलकुलस और इसके वेरिएंट एक बैकअप सिद्धांत के रूप में हैं। क्या OOP के लिए ऐसा है? ऑब्जेक्ट ओरिएंटेड मॉडल के लिए एक अमूर्त क्या है?


5
भार और भार। क्या आपने Google आज़माया है? उदाहरण के लिए, एक कार्यशाला श्रृंखला है, जिसे एफओओएल कहा जाता है, जो 1993 से चल रही ऑब्जेक्ट ओरिएंटेड लैंग्वेजेस की नींव के लिए समर्पित है। यह केवल सतह को खुरचती है।
डेव क्लार्क

@DaveClarke। मैं काफी सहमत नहीं हूँ। लैम्ब्डा कैलकुलस बहुत सटीक अर्थों में कार्यात्मक प्रोग्रामिंग के लिए एक आधार है। उदाहरण के लिए, हास्केल की रिपोर्ट कहती है कि संपूर्ण हास्केल भाषा को मुख्य भाषा के लिए सिंटैक्टिक चीनी माना जा सकता है जो टाइप किए गए लैम्ब्डा कैलकुलस के बराबर है। मैं ऐसी किसी भी वस्तु-उन्मुख भाषा के बारे में नहीं जानता, जो कैलकुलस के संबंध में समान दावा करती है। तो, आप सही हैं कि "लोड" है। लेकिन इसमें से कोई भी सही नहीं है।
उदय रेड्डी

@UdayReddy: यह शायद वस्तु-उन्मुख भाषा की समृद्धि के कारण है।
डेव क्लार्क

1
@DaveClarke एक विषय की समृद्धि का मतलब यह हो सकता है कि (1) यह एक अच्छा चर्चा है, (2) हम वास्तव में एक आम सहमति के निर्माण के लिए विषय को पर्याप्त रूप से नहीं समझते हैं, (3) हम कई मुद्दों को मिला रहे हैं जो बहुत ही सुंदर हैं। । यद्यपि मैंने OO प्रोग्रामिंग पर निकट (हाल के) साहित्य का बारीकी से पालन नहीं किया है, मुझे हमेशा यह महसूस होता था कि यह इसके बारे में बहुत स्पष्ट रूप से ध्यान दिए बिना मुद्दों को मिला रहा था (बेशक यह सैद्धांतिक कार्य की तुलना में भाषाओं पर अधिक लागू होता है)। इन मुद्दों में टाइपिंग, अमूर्तता, स्थिति, समानता, कोड का पुन: उपयोग शामिल है। सभी वेरिएंट के लिए A (एक) सिद्धांत की संभावना नहीं है।
Babou

जवाबों:


15

चार मुख्य दृष्टिकोण हैं, हालांकि ये केवल उपलब्ध सतह को खरोंचते हैं:

  • लैम्ब्डा और रिकॉर्ड्स के माध्यम से: विचार अधिक पारंपरिक निर्माणों के संदर्भ में वस्तुओं, वर्गों और विधियों को सांकेतिक शब्दों में बदलना है। 90 के दशक के मध्य से बेंजामिन पियर्स का काम इस दृष्टिकोण का प्रतिनिधि है।
  • आबिदी और कार्डेली की वस्तु गणना (आबिदी और कार्डेली की किताब देखें वस्तुओं का सिद्धांत : उनका मुख्य अमूर्त तरीकों का एक रिकॉर्ड है, और दृष्टिकोण ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के प्रोटोटाइप-आधारित अहसास के करीब है, हालांकि कक्षाओं और विरासत को इनकोड किया जा सकता है। अधिक आदिम तत्वों की शर्तें।
  • Castagna के मल्टीमिथोड कैलकुलस (Castagna की पुस्तक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग ए यूनिफाइड फाउंडेशन देखें ): उनका दृष्टिकोण मल्टीमिथोड लेता है जो महत्वपूर्ण अमूर्तता है।
  • क्लास-आधारित कैल्कुली (जैसे कि किम ब्रूस की पुस्तक फ़ाउंडेशन ऑफ़ ऑब्जेक्ट-ओरिएंटेड लैंग्वेजेज़: टाइप्स एंड सेमेंटिक्स या फ़ेदरवेट जावा ): इन तरीकों का उद्देश्य क्लास आधारित प्रोग्रामिंग के सार को पकड़ना और कक्षाओं और वंशानुक्रम पर ध्यान केंद्रित करना है।

12

ऑब्जेक्ट मॉडल कोर और सेट सिद्धांत के बीच संबंध निम्नलिखित दस्तावेजों में वर्णित है:

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

दस्तावेजों में, कक्षाएं ऑब्जेक्ट हैं दृष्टिकोण लिया जाता है ताकि कोर संरचना एकल-क्रमबद्ध हो। मुख्य रूप में, संरचना के रूप में व्यक्त किया जा सकता (ओ, ε , ≤, .ec) जहां

  • वस्तुओं का समूह है ,
  • ϵ (वस्तु) सदस्यता संबंध है, उदाहरण के संबंध का परिशोधन ,
  • The वंशानुक्रम संबंध है , और
  • .ec एक पॉवरक्लास मैप है जो एक प्रतिष्ठित, संभवतः खाली, of का सबरलेशन है।

रूबी ऑब्जेक्ट मॉडल के अनुसार एक नमूना कोर संरचना निम्नलिखित चित्र द्वारा दिखाया गया है। से एक नीले रंग की लिंक - ग्रीन लिंक कर्मकर्त्ता सकर्मक कमी में विरासत संबंध, नीले लिंक "Subsumption कमी" में सदस्यता संबंध दिखाने दिखाने एक्स के कम से कम कंटेनर के लिए अंक एक्स । पॉवरक्लास का नक्शा .ec क्षैतिज नीले लिंक द्वारा बनता है। इस मानचित्र की छवि से ऑब्जेक्ट पॉवरक्लास (ग्रे में) हैं। रूबी में उन्हें ईगेंक्लास या एकल वर्ग भी कहा जाता है (बाद वाला शब्द बल्कि पदावनत)। वस्तुओं रों , यू और वी (गुलाबी में) कर रहे हैं टर्मिनलशेष वस्तुएँ वंशानुक्रम रूट r के वंशज हैं ।

  r = BasicObject; c = Class; A = c.new(r); B = c.new(A); s = A.new; u = B.new; v = B.new; class << s; end; class << v; end

उपरोक्त सभी भाषाओं के ऑब्जेक्ट मॉडल के मुख्य भागों को संरचना के विशेषज्ञताओं के रूप में देखा जा सकता है, जिनमें कुछ या सिर्फ अतिरिक्त घटक नहीं हैं। सैद्धांतिक दृष्टिकोण से, एक अतिरिक्त घटक का सबसे महत्वपूर्ण मामला सिलेन द्वारा पेश किया गया सिंगलटन मैप (निरूपित .ɛϲ ) है। यह डायलन को केवल प्रोग्रामिंग भाषा बनाता है (उपर्युक्त में से) थैस मोनोटोनिकिटी कंडीशन (○) ≤ (ϵ) ⊆ (ϵ) के अधीन नहीं है जहां रचना प्रतीक ○ की व्याख्या बाएं से दाएं की जाती है।

ऑब्जेक्ट मॉडल कोर और सेट सिद्धांत के बीच संबंध को औपचारिक रूप देने का एक तरीका संरचनाओं के परिवार के माध्यम से है (हे, ≤, r, .ec।।।) को संदर्भित दस्तावेज़ों में मेटाोबिज़ संरचना कहा जाता है क्योंकि x.ec या x.ɛϲ पर विचार किया जा सकता है। एक्स के मेटाबेस के रूप में । इन संरचनाओं में x.ec के लिए हर वस्तु परिभाषित किया गया है एक्स और x.ɛς के लिए हर परिभाषित किया गया है घिरा ( "छोटे") वस्तु एक्स । संरचनाएं नीचे नौ स्वयंसिद्धों के अधीन हैं। स्वयंसिद्ध एक निश्चित विस्तार का उपयोग करता है जो पहले आठ स्वयंसिद्धों ( टी) के लिए काफी सरल हैउन जो के वंशज नहीं हैं - टर्मिनल वस्तुओं के सेट को दर्शाता है आर , और .ec * की कर्मकर्त्ता सकर्मक बंद है .ec ) बल्कि पिछले स्वयंसिद्ध के लिए शामिल किया गया।

  1. वंशानुक्रम, , एक आंशिक क्रम है।
  2. पॉवरक्लास मैप, .ec , अपने आप में (O, into ) का एक ऑर्डर-एम्बेडिंग है।
  3. से वस्तुओं T.ec * बहुत कम हैं।
  4. हर पॉवरक्लास आर का वंशज है ।
  5. सेट r.ec की कोई निचली सीमा नहीं है।
  6. सिंगलटन मानचित्र, .ɛϲ , इंजेक्टिव है।
  7. से वस्तुओं O.ɛς.ec * बहुत कम हैं।
  8. हर वस्तुओं के लिए x , y जैसे कि x.ɛϲ को परिभाषित किया गया है, x.≤। Y.ec ≤ xY।
  9. प्रत्येक ऑब्जेक्ट x के लिए , x.ɛϲ को <xd < x परिभाषित किया गया है ।

पिछले स्वयंसिद्ध में, π एक निश्चित सीमा क्रमसूचक है, और .D है रैंक पारिभाषिक विस्तार से व्युत्पन्न कार्य करते हैं। ऑब्जेक्ट सदस्यता संबंध, ϵ, (( .∪ )। ( .Ec )) ○ (≤) के रूप में प्राप्त किया जाता है । अंतिम स्वयंसिद्ध के अनुसार, बाउंड ऑब्जेक्ट्स के सेट के लिए the का डोमेन-प्रतिबंध (.○) ɛϲ (○) के बराबर है । संदर्भित दस्तावेजों में, इस संबंध को बाध्य सदस्यता और निरूपित , कहा जाता है । एक महत्वपूर्ण विशेषताओं के रूप में, यह संबंध अच्छी तरह से स्थापित है। यह ε के विपरीत के बाद से जो गैर अच्छी तरह से की स्थापना की है में है आर ε आर। यह पता चला है कि वस्तु प्रौद्योगिकी और सेट सिद्धांत के बीच मुख्य पत्राचार के रूप में व्यक्त किया जा सकता है

∈ ∈ ∈

यानी बंधी हुई सदस्यता अच्छी तरह से स्थापित सेटों के बीच सदस्यता निर्धारित करने से मेल खाती है। एक विशेष मामले के रूप में, ϖ + 1 रैंक का आंशिक वॉन न्यूमैन ब्रह्मांड निश्चित विस्तार द्वारा एक मेटाबोजेक्ट संरचना है। सामान्य तौर पर, हर सार ( π + 1 ) - अधिरचना (ओ, ε ) definitionally एक के बराबर है पूरा metaobject संरचना। प्रत्येक मेटाबॉज संरचना को ईमानदारी से एक पूर्ण मेटाबोजेक्ट संरचना में एम्बेड किया जा सकता है जो बदले में वॉन न्यूमैन ब्रह्मांड में ईमानदारी से एम्बेडेड हो सकता है।

बुनियादी संरचना शब्द का उपयोग मेटाबोजेक्ट संरचनाओं के सामान्यीकरण के लिए किया जाता है। इस सामान्यीकरण में, .ec और .ɛϲ को आंशिक (संभवतः) खाली होने की अनुमति है। विशेष रूप से, परिमित मूल संरचनाएं संभव हैं, जिसमें न्यूनतम संरचना केवल वंशानुक्रम रूट आर है । हर बुनियादी संरचना को मेटाक्जेक्ट संरचना में विस्तारित किया जा सकता है पावरक्लास पूरा होने के बाद सिंगलटन पूरा होता है जो बुनियादी संरचनाओं को वॉन न्यूमैन ब्रह्मांड में विश्वासयोग्य रूप से एम्बेड करता है।


@ राफेल बहुत बेहतर - धन्यवाद, पॉन !
डेविड रिचरबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.