oop - How to think about polymorphism with subtyping -


Liskov प्रतिस्थापन सिद्धांत कहता है:

सुपरटिप के इन परिवर्तकों को एक उपप्रकार में संरक्षित किया जाना चाहिए ।

मैं विशेष रूप से इस सिद्धांत और बहुरूपता के प्रतिच्छेदन में दिलचस्पी रहा हूँ। हालांकि, विशेष रूप से उपप्रकार- बहुरूपता में, वास्तव में, यह पैरामीट्रिक पॉलीमॉर्फिज़्म और हास्केल प्रकार वर्गों के साथ ऐसा मामला है।

इसलिए, मुझे पता है कि कार्य उप-प्रकार होते हैं, जब उनके तर्क दूषित हैं और उनकी वापसी प्रकार संप्रदाय। हम यह मान सकते हैं कि विधियां केवल एक अंतर्निहित "स्वयं" तर्क के साथ कार्य हैं हालांकि, यह यह दर्शाता है कि यदि कोई उपवर्ग अभिभावक की एक विधि को ओवरराइड करता है, तो यह अब एक उपप्रकार नहीं है, क्योंकि इसमें से कोई एक तरीका अब उपप्रकार नहीं है।

उदाहरण के लिए। निम्नलिखित छद्म कोड लें:

  वर्ग अभिभावक: गिनती: इंट इंरंसमेंट: पेरेंट - & gt; () {Count + = 1} वर्ग बाल विरासत में मिला है: वेतन वृद्धि: बाल - & gt; () {Count + = 2}   

तो एलएसपी वापस जा रहे हैं: क्या हम कह सकते हैं कि Parent.increment () की एक संपत्ति Child.increment () भले ही ये दो सख्त उप-प्रकार के रिश्ते का पालन नहीं करते हैं?

अधिक सामान्यतः मेरा प्रश्न यह है कि उप-प्रकार के अंतरफलक के नियमों को बहुरूपिक कार्य और ये दोनों अवधारणाओं के साथ मिलकर सोचने का सही तरीका क्या है?

विकिपीडिया के लेख का हवाला देते हुए

अधिक औपचारिक रूप से, Liskov प्रतिस्थापन सिद्धांत (एलएसपी) एक उप-प्रकार के संबंध की एक विशेष परिभाषा , जिसे (मजबूत) व्यवहार उपप्रकार कहा जाता है। ।]

व्यवहार उपप्रकार प्रकार सिद्धांत की परिभाषा में विशिष्ट कार्यों की तुलना में एक मजबूत धारणा है , जो केवल बहस प्रकारों के उल्लुओं पर निर्भर करता है और वापसी प्रकार का सहप्रयोजन होता है। व्यवहारिक उपप्रकार सामान्य तौर पर सामान्य रूप से अनिर्णायक होता है [...]

कई प्रकार की व्यवहारिक स्थितियां हैं जो उपप्रकार को मिलना चाहिए:

  • उपप्रकार में प्राथमिकताएं मजबूत नहीं की जा सकतीं।
  • उप-प्रकार में पोस्टकंडिशन कमज़ोर नहीं किया जा सकता है।
  • सुपरटाइप के इन परिवर्तकों को एक उपप्रकार में संरक्षित किया जाना चाहिए।

    इस प्रकार एलएसपी उप-टाइपिंग के लिए एक मजबूत परिभाषा है, जो कि प्रकार-सिद्धांत से परे सुविधाओं पर निर्भर करता है।

    आपके उदाहरण में, यह बढ़ जाता है और आपके अपरिवर्तक पर पड़ जाता है।

      

    स्पष्ट रूप से बच्चे माता-पिता के संदर्भ में व्यक्त नहीं किए जा सकते हैं। Em> क्योंकि अपरिवर्तनीय टूटा हुआ है यह सिंटैक्स से अकेले नहीं किया जा सकता है।

    एलएसपी आपको माता-पिता और बच्चे को अलग से परिभाषित करने के लिए प्रेरित कर सकता है, उन्हें दोनों को वृद्धिशील से वंचित किया जाता है, जिसकी कमजोर पोस्ट स्थिति है।

Comments

Popular posts from this blog

Delphi: missing interface declarations for UI Automation methods -

php - how to change mysql_result($res, 0, "url"); to mysqli -

android - How to attach an image from an app to gmail -