2010-05-29 19 views
5

मैं कैसे संकेत दे सकता हूं कि एक विधि यूएमएल में वस्तुओं का संग्रह वापस कर देगी? क्या संग्रह वर्ग को रिटर्न प्रकार के रूप में रिश्ते की व्याख्या करने का कोई बेहतर तरीका है?यूएमएल - ऑब्जेक्ट विधि संग्रह संग्रह करता है

+0

उत्तर में चर्चा के रूप में वापसी प्रकारों का उपयोग करने का कोई वास्तविक विकल्प नहीं है। लेकिन शायद टैग "पैटर्न" यहां थोड़ा भ्रामक है। – ShiDoiSi

उत्तर

4

आप "एसोसिएशन" का उपयोग करने पर विचार कर सकते हैं। एसोसिएशन के तीन मूल प्रकार हैं: रचना, एकत्रीकरण और "सामान्य" एसोसिएशन। उनमें से प्रत्येक भाग के लिए पूरी तरह से एक अलग अस्तित्व निर्भरता व्यक्त करता है और इसके विपरीत।

आमतौर पर संघों को एक पंक्ति से दो वर्गों को जोड़कर व्यक्त किया जाता है। संरचना और एकत्रीकरण में समग्र/समेकित पक्ष में एक हीरा प्रतीक होता है। समग्र/कुल में एक या अधिक भाग होते हैं।

उदाहरण (wiki-article देखें): लाइब्रेरी, पुस्तक:

Immagine आप दो वर्गों की है। हम कह सकते हैं कि लाइब्रेरी पूरी है और हिस्सा बुक करें। हम इसे इस तरह से सूचित कर सकते हैं (ASCII में, कृपया असली आरेखों के लिए Google)।

लाइब्रेरी (सकल) <> --- बुक (भाग)

आप को व्यक्त करने के इन रिश्तों संघ अपने दोस्त हो जाएगा चाहते हैं।

संपादित करें:

जैसा कि मैंने टिप्पणी में कहा, मुझे नहीं लगता कि लौटे संग्रह के लिए एक विशेष अंकन है है। हालांकि, आप सही हैं, संग्रह वापस करना थोड़े भाषा विशिष्ट है। लेकिन आप एक सरणी (String[]) वापस करने पर विचार कर सकते हैं, जो मूल्यों के एक समूह का प्रतिनिधित्व करने का एक और सामान्य तरीका है और संग्रह से अधिक भाषा स्वतंत्र होना चाहिए। यह तब प्रोग्रामर तक है कि वह इसे कैसे लागू करता है। वह Collection, एक सी ++ एसटीएल वेक्टर का उपयोग कर सकता है ... बिंदु है: मानों का एक सेट वापस करें।

+0

सही, लेकिन मैं कैसे इंगित करूंगा कि एक विधि उस संगठन को वापस कर रही है? – derekerdmann

+0

आमतौर पर एक विधि कक्षा के __behaviour__ को परिभाषित करती है। इसलिए यह व्यक्त करने का कोई तरीका नहीं है कि विधि क्लास आरेख का उपयोग करके संग्रह लौटाती है (इसके वापसी मूल्य को इंगित करने के अलावा)। – Simon

+0

तो फिर मैं कहूंगा कि विधि संग्रह (जावा में) लौटाती है? मैंने सोचा कि उस तरह की भाषा-विशिष्ट नोटेशन का उपयोग आम तौर पर यूएमएल में टाला जाता था। – derekerdmann

0

हम्म, यह सच है कि यूएमएल कक्षा आरेखों में संग्रह प्रकारों को व्यक्त करने का कोई स्पष्ट तरीका नहीं है। मैंने एक पुस्तक पढ़ी जहां उन्होंने यूएमएल की आलोचना की, लेकिन उन्होंने उल्लेख किया कि यूएमएल के कुछ विलक्षण संस्करणों में संग्रह प्रकार थे। एक और चीज ऑब्जेक्ट कॉन्स्ट्रेन्ट लैंग्वेज (ओसीएल) है, जिसे यूएमएल (ओएमजी मानक के रूप में) के साथ एकीकृत किया गया है और इसमें अपने परिचालन प्रकार अच्छे संचालन के साथ हैं।

7

मैं थोड़ा देर से आ रहा हूं, क्योंकि मैं इसी तरह के प्रश्न का उत्तर ढूंढ रहा था। मैं इस बात को लिख रहा हूं कि कोई और इसी तरह के उत्तर की तलाश में है।

क्या आप यह इंगित करना चाहते हैं कि कोई विधि किसी विशिष्ट प्रकार का संग्रह लौटाती है? यदि ऐसा है, तो एक विधि के लिए आपको रिटर्न पैरामीटर के प्रकार और वापसी पैरामीटर की बहुतायत 0 .. * या 1 .. * पर सेट करने में सक्षम होना चाहिए। यह इंगित करेगा कि विधि निर्दिष्ट प्रकार देता है और यह कि आपके पास जो भी बहुतायत है, वह है।

उदा। लाइब्रेरी <> --- पुस्तक उदाहरण का उपयोग करें, मान लीजिए कि लाइब्रेरी पर गेटबुक नामक एक विधि है जो स्ट्रिंग पैरामीटर, लेखक का नाम लेती है, और बुक इंस्टेंस का संग्रह देता है।

लाइब्रेरी + GetBooks (AUTHORNAME: स्ट्रिंग): यूएमएल कुछ इस तरह दिखेगा बुक [0 .. *]

आपका यूएमएल आरेखण उपकरण इस का समर्थन करना चाहिए; मैं जादू ड्रा का उपयोग कर रहा हूँ। यह यूएमएल कहता है कि गेटबुक 0 या कई पुस्तक उदाहरण लौटाता है। यह अब कार्यान्वयन भाषा में वापसी पैरामीटर को कार्यान्वित करने का तरीका तय करने के लिए प्रोग्रामर पर है (जैसा साइमन द्वारा ऊपर बताया गया है)।

0

इसका प्रतिनिधित्व करने का एक अप्रत्यक्ष तरीका है।

आप एक और समग्र कक्षा को परिभाषित कर सकते हैं जिसमें आपके विशिष्ट रिटर्न प्रकार के साथ 1 * * का समग्र संबंध है और इस नए समग्र वर्ग को अपने रिटर्न प्रकार के रूप में उपयोग करें।

उदा। यदि आप पुस्तक वर्ग का संग्रह वापस करना चाहते हैं, तो 1 के साथ एक नई पुस्तकें कक्षा बनाएं .. * पुस्तक के साथ सहयोग करें और पुस्तकें कक्षा को अपने रिटर्न प्रकार के रूप में उपयोग करें।

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