2010-02-21 11 views
18

सेट सिद्धांत में, एक सेट एक सुपरसेट है यदि इसमें मूल सेट और संभवतः अधिक में सबकुछ शामिल है। हालांकि एक सबसेट में प्रारंभिक सेट की सब कुछ नहीं है।सुपर-क्लास और उप-वर्ग क्यों उलट रहे हैं?

इस बात को ध्यान में रखते हुए, अधिकांश ऑब्जेक्ट उन्मुख प्रोग्रामिंग भाषाओं में (मैं उद्देश्य-सी सोच रहा हूं लेकिन मुझे पता है कि यह जावा और अन्य के लिए भी सच है), मूल वर्ग को super वर्ग कहा जाता है, और कोई भी वर्ग जो सुपर से विरासत को subclass कहा जाता है।

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

+2

मुझे हमेशा एक या दूसरे को – pdr

उत्तर

21

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

सुपरक्लास के संभावित सदस्यों का सेट उस सुपरक्लास के उप-वर्ग के संभावित सदस्यों के सेट का एक सुपरसेट है।

+0

कहने से पहले खुद को जांचना होगा, लेकिन माता-पिता के * सेट * (सुपरक्लास) बच्चों के सेट का * सुपरसेट * है; बच्चों का सेट (सबक्लास) माता-पिता के सेट का * सबसेट * है। "सदस्य" उन वस्तुओं के सेट का जिक्र कर रहे हैं जो प्रकार के सदस्य हैं, सदस्य चर के सेट नहीं। – itowlson

+11

जेब्रेनन: आपको किसी वर्ग के गुणों के सेट के रूप में नहीं सोचना चाहिए। आपको इसके सभी संभावित उदाहरणों के सेट के रूप में इसके बारे में सोचना चाहिए। फिर यह समझ में आता है। गणित की तरह जेड एन का एक सख्त सुपरसैट है, क्योंकि सभी प्राकृतिक संख्याएं पूरी संख्या हैं, लेकिन सभी पूर्ण संख्या प्राकृतिक संख्या नहीं हैं, वस्तु जावा में स्ट्रिंग का सुपरक्लास है क्योंकि सभी तार वस्तुएं हैं, लेकिन सभी वस्तुएं तार नहीं हैं। – sepp2k

+1

@jbrennan: आप वर्ग के * विशेषताओं * के बारे में सोच रहे हैं, उस प्रकार के * मूल्य * संभव नहीं हैं (सेट शब्दों में, कक्षा द्वारा परिभाषित मूल्यों के सेट के सदस्य)। सभी संभावित 'आकार' मानों के सेट में कुछ मान होते हैं जो मंडल होते हैं और कुछ मान जो वर्ग होते हैं, लेकिन 'मंडल' और 'स्क्वायर' कक्षाएं हो सकती हैं जिनके पास सामान्य' आकार 'से संभावित सदस्यों को बहुत छोटा सेट सेट किया जाता है। (याद रखें कि प्रोग्रामिंग शब्द "क्लास सदस्य" के बजाय "सदस्य" शब्द का उपयोग "मूल्यों के सेट के सदस्य" के रूप में कर रहा है।) –

1

मैं पूरे सुपर/उप-वर्ग मुद्दे को हटा देता हूं और उन्हें "व्युत्पन्न" और "अभिभावक" वर्ग के रूप में संदर्भित करता हूं।

+0

यह शायद अधिक व्यावहारिक दृष्टिकोण हो सकता है –

2

संभवतः उसी कारण से जो ढेर नीचे गिरते हैं (शीर्ष पर नीचे), पेड़ नीचे गिरते हैं (शीर्ष पर रूट) और 2 डी ग्राफिक्स सिस्टम लगभग हमेशा चतुर्भुज चतुर्थ (0,0 ऊपरी बाईं ओर) होते हैं।

+1

तो अगला प्रश्न यह होगा कि :-) – DerMike

6

ग्रेग सही है। दो चीजें हैं जो विचार करने के लिए इसे और अधिक स्पष्ट कर सकता है: एक से परिभाषित किया गया

  • गुण और तरीके:

    1. propertes और तरीकों सेट सिद्धांत के रूप में उप/सुपर रिश्ते के लिए प्रासंगिक नहीं हैं सबक्लास अपने सुपरक्लास द्वारा प्रदान किए गए लोगों से परे बढ़ा सकता है (और वास्तव में, वे अक्सर करते हैं), लेकिन सबक्लास के उदाहरण सुपरक्लास

    2. के अन्य शब्दों में उदाहरण के सेट के सदस्य हैं, उप/सुपर रिलेशनशिप है संपत्तियों और विधियों द्वारा परिभाषित नहीं किया गया है, लेकिन कक्षाएं
  • Taxomony उदाहरण के नामकरण द्वारा इच्छित उदाहरण स्तरीय अर्थ विज्ञान द्वारा:

    • सभी लोगों के सेट सभी प्रोग्रामर्स
    • सेट लोग है के सेट से बड़ा है वास्तव में, सेट प्रोग्रामर्स के सुपरसेट
    • सेट प्रोग्रामर्स के सेट लोग एक सबसेट है
  • तो ओओपी शर्तों में, लोग एक सुपरक्लास होंगे और प्रोग्रामर उप-वर्ग होगा। प्रत्येक प्रोग्रामर एक व्यक्ति है, लेकिन हर व्यक्ति प्रोग्रामर नहीं है। इसलिए superclass और subclass। तथ्य यह है कि प्रोग्रामर वर्ग में प्राणघातक पुरुषों के केन से परे सुपर शक्तियां हो सकती हैं, क्लास-रिलेशनशिप (ए-ए) अर्थशास्त्र नहीं बदलती है।

    1

    उप-वर्ग में इसके सुपरक्लास के सभी [सदस्य] हैं [और अधिक]। क्या यह पीछे नहीं है?

    यह समस्या प्रोग्रामिंग भाषाओं में सभी फसलों को फसल देती है, और यह हमेशा मेरे सिर को चोट पहुंचाती है। (। विशेष रूप से Subtyping)

    यहाँ नियम हैं:

    • जब आप obejcts विचार कर रहे हैं, उपवर्ग/बच्चे/उप प्रकार अधिक तरीकों और सदस्यों है। इसका उपयोग में पर अधिक संदर्भों में किया जा सकता है। यह counterintuitive लगता है।

    • जब आप संदर्भ, या इंटरफेस या तर्क पर विचार कर रहे हैं, भूमिकाओं को उलट दिया जाता है। उदाहरण के लिए, सुपरटाइप/अभिभावक/सुपरक्लास के तर्क की अपेक्षा करने वाली विधि उपप्रकार के तर्क की अपेक्षा करने वाली विधि से अधिक तर्क स्वीकार कर सकती है।

    कौन सा शीर्ष पर है आपको लगता है वस्तुओं प्राथमिक रहे हैं, इस पर पूरी तरह से निर्भर है या फिर आपको लगता है संदर्भों उम्मीद वस्तुओं प्राथमिक रहे हैं। मैंने इस विषय का लगभग 15 वर्षों तक अध्ययन किया है और अभी भी मेरा अंतर्ज्ञान मुझे विश्वास दिलाता है। एक वर्ग घोषणा एक विनिर्देश, तो सुपर क्लास विनिर्देश अधिक वस्तुओं से satisifed है के रूप में माना जाता है

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

    क्या मैंने उल्लेख किया कि पूरा विषय मेरे सिर को चोट पहुंचाता है?

    +0

    सी ++: बेस क्लास, व्युत्पन्न कक्षा, समस्या हल हो गई ;-) –

    4

    ग्रेग का जवाब सही है। उदाहरण के द्वारा यहां एक स्पष्टीकरण दिया गया है:

    आपके पास बेस क्लास बेस है। आपके पास दो व्युत्पन्न वर्ग DerivedA और DerivedB हैं। DerivedA का हर उदाहरण बेस का एक उदाहरण भी है। इसी तरह, हर DerivedB भी एक आधार है। लेकिन, एक DerivedA एक DerivedB और इसके विपरीत है। इसलिए, यदि आप सभी संभव वस्तुओं के ब्रह्मांड के एक वेन आरेख आकर्षित करने के लिए थे, तो आप प्राप्त करेंगे:

    ________________________ 
    /      \ 
    /  Base   \ 
    / ______  ______ \ 
    | / \ / \ | 
    | /  \ /  \ | 
    | | DerivedA | | DerivedB | | 
    | \  / \  / | 
    | \______/  \______/ | 
    \       /
        \      /
        \________________________/ 
    

    दूसरे शब्दों में, DerivedA वस्तुओं के सेट में हर वस्तु के सेट में भी है आधार वस्तुओं। इसी प्रकार DerivedB के लिए। तो आधार वास्तव में DerivedA और DerivedB दोनों का सुपरसेट है। इसलिए, यह "superclass" है।

    +0

    +1 इस भयानक आरेख के लिए। – FluffyKittens

    1

    हां, लेकिन यदि आप अपने आरेख को एक स्थलाकृति मानचित्र के रूप में सोचते हैं, तो उप-वर्गों में सुपरक्लास की तुलना में अधिक ऊंचाई होती है। इसलिए भ्रम।

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

    उम्मीद है कि इससे मदद मिलती है।

    संबंधित मुद्दे