2010-04-17 6 views
6

मैं ऑटोलॉजी मूल बातें समझने की कोशिश कर रहा हूं। यहाँ एक उदाहरण है:Ontology में कक्षाएं/उदाहरण

  • कार (वर्ग)
  • 2009 VW सीसी (? उप-वर्ग या उदाहरण)
  • मेरे पड़ोसी के 2009 VW सीसी (उदाहरण)

मेरे मुद्दा समझ है "200 वीडब्ल्यू सीसी" (एक कार मॉडल के रूप में) क्या है। यदि आप उत्पाद मॉडल को ऑटोलॉजी में एक उप-वर्ग बना रहे हैं - अचानक आपकी ऑटोलॉजी "कार" के हजारों उप-वर्गों के साथ फूट जाती है। वह अनावश्यक है। साथ ही हम यह नहीं कह सकते कि "200 9 वीडब्ल्यू सीसी" एक उदाहरण है, कम से कम यह कक्षा का भौतिक उदाहरण नहीं है।

क्या नियमित उदाहरणों और सामग्री (विशिष्ट भौतिक वस्तुओं) के बीच अंतर करने के लिए यह समझ में आता है?

दूसरी तरफ, यदि दोनों उदाहरण हैं (विभिन्न प्रकृति के कहने के लिए), तो उदाहरण कैसे गैर-वर्ग के गुण/संबंधों का उत्तराधिकारी हो सकता है?

उत्तर

5

मुझे यह कहना नफरत है कि यह निर्भर करता है, लेकिन यह निर्भर करता है।

यदि आपको दुनिया में हर एक कार का मॉडल करने की आवश्यकता है, और जिन तरीकों से आप उन्हें कॉल कर सकते हैं (जैसे "टायर बदलना", जो एक प्रक्रिया है जो प्रत्येक मॉडल के लिए बहुत अलग है) तो हाँ, आप जा रहे हैं बहुत सारे फुले हुए वर्गों के लिए, क्योंकि आपकी असली दुनिया की स्थिति भी फूली हुई है।

यदि आप सिर्फ आर्केटीपल कारों की तस्वीरों का डेटाबेस रखना चाहते हैं, और आप कार नहीं करते हैं कि यह आपके पड़ोसी के उदाहरण या आपकी बहन के उदाहरण की तस्वीर है, तो आप नीचे की परत को छोड़ सकते हैं। "200 9 वीडब्ल्यू सीसी" एक उदाहरण हो सकता है, भले ही आप कल्पना कर सकें कि यह किसी अन्य मॉडल में भी एक वर्ग है।

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

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

यहां एक धारणा यह है कि आप अंतर मॉडल के बीच अंतर को मॉडल पर समान तरीकों के पैरामीटर के रूप में मॉडल कर सकते हैं।

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

+0

मैं किसी कार के हर उदाहरण (या उस मामले के लिए कोई उत्पाद) मॉडल करने का इरादा नहीं रखता हूं, लेकिन मैं अपने आवेदन में ऐसा करने का एक तरीका प्रावधान करना चाहता हूं। उदाहरण के लिए यदि एक सीमित संस्करण में एक उत्पाद जारी किया गया है, या पर्याप्त अद्वितीय/अनुकूलित है। –

+0

तो शायद एक संकर मॉडल उपयुक्त है। मानक_Car कार से विरासत में है, और इसका समर्थन करने वाले विभिन्न मॉडलों के डेटाबेस का संदर्भ है। कस्टम_Car कार से विरासत में आता है और स्वयं के प्रत्येक प्रकार की कार के लिए उप-वर्ग होते हैं जो कोड में मॉडलिंग के महंगे चरण के माध्यम से पर्याप्त रूप से पर्याप्त और महत्वपूर्ण दोनों होते हैं। आपकी पड़ोसी की कार मानकता या कार की कस्टमाइज्ड उप-वर्गों में से एक का उदाहरण हो सकती है, इसकी नवीनता के आधार पर। – Oddthinking

1

आपके पास यह पीछे है।

2009 VW CC कक्षा car से विरासत में विरासत। इस प्रकार 2009 VW CC को car के बारे में जानने की आवश्यकता है, लेकिन car को 2009 VW CC के बारे में जानने की आवश्यकता नहीं है। हालांकि हम कभी-कभी वास्तविकता में "सबक्लास" शब्द का उपयोग करते हैं, car इसके किसी भी उप-वर्ग के बारे में कुछ भी नहीं जानता है। (कल्पना करता है, तो अपने 2009 VW CC अपने पड़ोसी के 2009 VW CC के पहलुओं विरासत में मिला है)

अधिक रूचिकर अगर आप (जावास्क्रिप्ट की तरह) मूलरूप विरासत, जहां वस्तुओं अन्य वस्तुओं से सीधे वारिस मानते हैं। हकीकत में यह कैसे लागू किया जाता है यह है कि नई वस्तु के पास उस वस्तु को वापस एक गुप्त सूचक होता है जिसे उन्होंने विरासत में प्राप्त किया है। यदि आप इस गुप्त सूचक के बारे में सोचते हैं तो आप देख सकते हैं कि मूल वस्तु कैसे फूली नहीं जाती है।

अब यदि आप सुझाव दे रहे हैं कि एकाधिक विरासत और लंबे परिवार के पेड़ भ्रमित संरचनाओं का कारण बन सकते हैं, तो मैं आपसे सहमत हूं।

+0

मैं आपके दूसरे पैराग्राफ से सहमत हूं, लेकिन मैं नहीं देख सकता कि सोडा इसके साथ असहमत है या इसे पीछे की ओर ले जाता है। मैं यह भी नहीं देखता कि वह कहां से कई विरासत या लंबे परिवार के पेड़ों का सुझाव दे रहा है। वह कार के नीचे एक वाइड परिवार के पेड़ के बारे में चिंतित है। – Oddthinking

+0

वह सोच रहा है कि वर्ग को उप-वर्ग को जानने की जरूरत है। यह पीछे की तरफ है। केवल वर्ग के बारे में सबक्लास को जानना आवश्यक है। – tzenes

+0

धन्यवाद, ये उत्कृष्ट विचार हैं। तो यह वास्तविक जीवन की तरह लगता है, अगर हम अपनी संरचना को व्यवस्थित रखते हैं, तो हम कह सकते हैं कि उत्पाद (उत्पाद मॉडल के भाव में) सभी उदाहरण हैं, जिनके पास और भी विशिष्ट गुणों के साथ और भी ठोस उदाहरण हो सकते हैं? –

0

मैं वास्तव में ओडथिंकिंग से सहमत हूं। इसके अलावा, यदि आपको कक्षाओं के रूप में कार मॉडल की आवश्यकता है, "अचानक आपकी ऑटोलॉजी एक कार के हजारों उप-वर्गों के साथ फूली हो जाती है" वास्तव में कोई समस्या नहीं है। यह क्यों होना चाहिए? आप केवल व्यक्तियों के बजाय कक्षाओं को परिभाषित करते हैं, आपके पास मूल कक्षाओं में विशेष स्थिति का प्रतिनिधित्व करने वाले वर्गों के साथ आधार वर्गों के साथ 'अमूर्त' ऑटोलॉजी और 'कंक्रीट' ऑटोलॉजी हो सकती है। यह ओओपी नहीं है, जो हजारों कक्षाओं को परिभाषित करता है जो वास्तव में कुछ हद तक उदाहरणों और वर्गों के बीच में हैं, कम से कम अवधारणात्मक रूप से कोई भी बड़ा सौदा नहीं है, कोई भी इस 'फूला हुआ' या किसी अन्य तरीके से अजीब नहीं मानता है। दरअसल, वे मेरे क्षेत्र में हर समय ऐसा करते हैं (जीवन विज्ञान, जहां हम आम तौर पर हमारे शरीर में प्रोटीन पी 53 की परवाह नहीं करते हैं, इसलिए पी 53 एक वर्ग है, भले ही इसका उपयोग एक संबंधपरक डेटाबेस में रिकॉर्ड मॉडल करने के लिए भी किया जाता है) ।

इसके अलावा, मेरा अनुभव यह है कि Virtuoso जैसे टूल कुछ वर्गों और कई उदाहरणों की स्थिति के लिए अनुकूलित लगते हैं। असल में, मैंने महत्वपूर्ण प्रदर्शन सुधारों को देखा है जब मैंने Virtuoso में लाखों कक्षाओं को उदाहरणों में बदल दिया था। तो, ठीक है, यह जटिल है ...