2012-02-29 13 views
10

एक वर्ग एक सिंगलटन वर्ग के लिए सूचक हैं, तो में एक सिंगलटन संबंध दिखाने के लिए, यह aggregation हो सकता है?कैसे एक वर्ग रेखाचित्र

मेरी समझ के लिए यह has-a संबंध नहीं हो सकता है क्योंकि कक्षा सिंगलटन कक्षा का उदाहरण नहीं देती है, यह सिर्फ association संबंधों का उपयोग कर रही है।

उत्तर

9

शीर्षक लिखित रूप में 100% पूर्ण ज्ञान नहीं बनाता है। सिंगलटन कक्षाएं हैं, लेकिन वास्तव में सिंगलटन संबंध नहीं हैं। किसी भी रिश्ते को किसी भी अंत में बहुतायत सौंपा जा सकता है, इसलिए यदि आपका मतलब है कि एक-से -एक संबंध, आप जो कुछ करते हैं वह दोनों सिरों पर गुणक 1 असाइन करता है।

कक्षाओं में बहुतायत भी हो सकती है। आप अक्सर इसे इस्तेमाल नहीं करते हैं, एक मामले को छोड़कर: सिंगलेट्स।

यह एक होने या युक्त या संदर्भित बी की बात आती है, वहाँ मूल रूप से यूएमएल में जकड़न के तीन स्तर हैं।

एकत्रीकरण (रिक्त तिर्यग्वर्ग तीर सिर) का तात्पर्य है कि रोकथाम विशेष नहीं है और निहित वस्तु युक्त वस्तु के साथ अपने जीवन चक्र के किसी भी पहलू का हिस्सा नहीं है। कार्यान्वयन में, यह आमतौर पर एक सूचक है।

संरचना (तिर्यग्वर्ग तीर सिर भरा) का तात्पर्य है कि निहित वस्तु को नष्ट कर दिया हो जाता है जब युक्त वस्तु करता है। इसे काम करने के लिए आमतौर पर इसका मतलब है कि रोकथाम अनन्य है। कार्यान्वयन में, यह अक्सर एक सूचक होता है जिसका विनाशक वर्ग के विनाशक में बुलाया जाता है (हालांकि यह युक्त वर्ग के निर्माता में नहीं बनाया जा सकता है)।

निर्देशित एसोसिएशन या सदस्य विशेषता (यूएमएल में एक ही चीज़) का तात्पर्य है कि निहित वस्तु राज्य का हिस्सा है, या एक घटक यदि आप ऑब्जेक्ट के हैं। कार्यान्वयन में, इसका आम तौर पर अर्थ यह है कि संदर्भ एक सूचक नहीं है, या यदि यह है कि निहित वस्तु सह-निर्मित और युक्त वस्तु के साथ नष्ट हो गई है।

सिंगलटन का एकत्रीकरण पूरी तरह से स्वीकार्य है (यहां तक ​​कि कई अलग-अलग वर्गों से भी), क्योंकि एकत्रीकरण परिभाषा गैर-विशिष्ट है।

संरचना थोड़ी iffy है, जब तक कि युक्त कक्षा भी एक सिंगलटन न हो।

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

उपरोक्त के अतिरिक्त, आप निश्चित रूप से जितना चाहें उतने उपयोग संबंध जोड़ सकते हैं। यह सभी डिज़ाइनों में आम है, और इसका तात्पर्य है कि रिश्ते के स्रोत के अंत में कक्षा लक्ष्य के अंत में कक्षा में विधियों को कॉल करती है।

enter image description here

1

भरे हुए के बजाय खुले वर्ग के साथ एकत्रीकरण भी है। ओपन का मतलब है कि पहला उदाहरण दूसरे को नहीं बनाता है (लेकिन अभी भी इसका रिश्ता है)।

1

आप दिखा सकते हैं कि यह एकत्रीकरण है, लेकिन इसकी सत्यता यह है: सिंगलेट्स के पास ऑब्जेक्ट ओरिएंटेड कोड से कोई लेना देना नहीं है। वे वैश्विक स्थिति का एक रूप हैं (जैसे वैश्विक चर हैं)।

आप समस्या के लिए एक अलग दृष्टिकोण पर विचार करना चाहेंगे।

पुनश्च कुछ सामग्री मदद कर सकता है:

4

मैं तकनीकी रूप से कहते थे, हाँ, आप एक सदस्य चर एक सिंगलटन वस्तु के लिए सूचक है कि हो सकता है और इसे एकत्रीकरण कहते हैं; एक बार जब आप कोड लिखते हैं तो समेकन अवधि का उपयोग करने का अधिक अर्थ नहीं होता है। सभी उद्देश्यों और उद्देश्यों के लिए, यह सिर्फ एक संघ है।

हालांकि, एक चित्र में एक एकत्रीकरण संघ के उपयोग या चित्र के एक दर्शक यह समझने के लिए मदद नहीं कर सकता है। यह शायद इस बात पर निर्भर करता है कि आप इसे किसके साथ दिखाने जा रहे हैं और वे क्या मतलब समझने के लिए समेकन को समझ सकते हैं।

______________________   ______________________ 
|     |   |     1| 
| AggregatingClass |   | SingletonClass | 
|____________________|  0..1|____________________| 
|     |<>--------|     | 
|____________________|   |____________________| 
|     |   |     | 
|____________________|   |____________________| 

(नोट सिंगलटन वर्ग बॉक्स प्रमुखता संकेत के ऊपरी दाएँ हाथ के कोने में 1:

वास्तव में (शीर्षक में सवाल यूएमएल उपयोगकर्ता मार्गदर्शिका (2 संस्करण) से जानकारी का उपयोग कर जवाब देने के लिए।)

+0

मुझे एहसास हुआ कि कोई भी वास्तव में शीर्षक सवाल का जवाब था! –

+1

... और मेरी आखिरी टिप्पणी के बाद, यह अभी भी अनुत्तरित नहीं था! मैंने अपना आरेख अपडेट किया है और इसे ठीक से उत्तर दिया है। मैंने 'सिंगलटन रिलेशनशिप' को 'सिंगलटन पैटर्न' के रूप में गलत तरीके से पढ़ा। @ahj –

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