यह आश्चर्यजनक है कि भाग-पूरे - संघ अवधारणाओं के एकत्रीकरण और रचना के बीच के अंतर के बारे में कितना भ्रम है । मुख्य समस्या व्यापक रूप से गलतफहमी है (यहां तक कि विशेषज्ञ सॉफ्टवेयर डेवलपर्स के बीच और यूएमएल के लेखकों के बीच) कि रचना की अवधारणा पूरे और उसके हिस्सों के बीच एक जीवन-चक्र निर्भरता का अर्थ है जैसे कि भागों पूरे के बिना मौजूद नहीं हो सकते। लेकिन यह दृष्टिकोण इस तथ्य को नजरअंदाज करता है कि गैर-साझाकरण वाले हिस्सों के साथ भाग-पूरे-संघों के मामले भी हैं जहां भागों को अलग किया जा सकता है, और पूरे के विनाश से बच सकता है।
यूएमएल विनिर्देश दस्तावेज में, "रचना" शब्द की परिभाषा हमेशा गैर-साझा करने योग्य भागों को निहित करती है, लेकिन यह स्पष्ट नहीं किया गया है कि "रचना" की परिभाषित विशेषता क्या है, और केवल एक वैकल्पिक विशेषता क्या है। यहां तक कि नए संस्करण (2015 तक) में, यूएमएल 2.5, "रचना" शब्द की परिभाषा में सुधार करने के प्रयास के बाद भी, यह अभी भी अस्पष्ट है और गैर-के साथ भाग-पूरे-संघों को मॉडल करने के लिए कोई मार्गदर्शन प्रदान नहीं करता है। उन हिस्सों को जहां से अलग किया जा सकता है, बचना चाहिए और नष्ट होने से बच जाता है, पूरे उस मामले के विपरीत जहां भागों को अलग नहीं किया जा सकता है और पूरे के साथ नष्ट हो जाते हैं। वे कहते हैं
यदि किसी कंपोज़िट ऑब्जेक्ट को हटा दिया जाता है, तो उसके सभी भाग इंस्टेंस जो ऑब्जेक्ट हैं, उसके साथ हटा दिए जाते हैं।
लेकिन साथ ही वे यह भी कहते हैं
कंपोज़िट ऑब्जेक्ट डिलीट होने से पहले एक पार्ट ऑब्जेक्ट को किसी कंपोज़िट ऑब्जेक्ट से हटाया जा सकता है, और इस तरह कंपोज़िट ऑब्जेक्ट के हिस्से के रूप में डिलीट नहीं किया जा सकता है।
यह भ्रम यूएमएल परिभाषा की अपूर्णता को इंगित करता है, जो घटकों और कंपोजिट के बीच जीवन चक्र निर्भरता के लिए जिम्मेदार नहीं है। इसलिए यह समझना महत्वपूर्ण है कि UML परिभाषा को किस प्रकार यूएमएल स्टीरियोटाइप के लिए बढ़ाया जा सकता है << अविभाज्य >> रचनाओं के लिए जहां घटकों को उनके समग्र से अलग नहीं किया जा सकता है, और इस प्रकार, जब भी उनका समग्र नष्ट हो जाता है, तब उन्हें नष्ट करना होगा।
१) रचना
जैसा कि मार्टिन फाउलर ने समझाया है , रचना को चिह्नित करने के लिए मुख्य मुद्दा यह है कि "एक वस्तु केवल एक रचना संबंध का हिस्सा हो सकती है"। यह भी उत्कृष्ट ब्लॉग पोस्ट UML संरचना बनाम एकत्रीकरण बनाम एसोसिएशन गेर्ट बेलेकेंस द्वारा समझाया गया है । किसी रचना की इस परिभाषित विशेषता ( विशेष , या गैर-श्रुत , भागों) को परिभाषित करने के अलावा , एक रचना समग्र और उसके घटकों के बीच एक जीवन-चक्र निर्भरता के साथ भी आ सकती है। वास्तव में, इस तरह की निर्भरताएं दो प्रकार की होती हैं:
- जब भी किसी घटक को हमेशा एक समग्र से जोड़ा जाना चाहिए , या, दूसरे शब्दों में, जब उसके पास एक अनिवार्य समग्र होता है , जैसा कि संरचना रेखा के समग्र पक्ष में "ठीक एक" गुणा द्वारा व्यक्त किया जाता है, तो इसे फिर से उपयोग किया जाना चाहिए। किसी अन्य सम्मिश्र, या नष्ट होने पर (या पुनः संलग्न), जब उसका वर्तमान सम्मिश्रण नष्ट हो जाता है। इसके बीच की रचना द्वारा उदाहरण दिया गया है ,
Person
और Heart
नीचे चित्र में दिखाया गया है। एक दिल या तो नष्ट हो जाता है या किसी अन्य व्यक्ति को प्रत्यारोपित किया जाता है, जब उसके मालिक की मृत्यु हो गई हो।
- जब भी एक घटक को उसके समग्र से अलग नहीं किया जा सकता है , या, दूसरे शब्दों में, जब यह अविभाज्य है , तब, और उसके बाद ही, घटक को नष्ट करना होगा, जब इसका समग्र नष्ट हो जाएगा। अविभाज्य भागों के साथ इस तरह की रचना का एक उदाहरण
Person
और के बीच की रचना है Brain
।
सारांश में, जीवन-चक्र निर्भरता केवल रचना के विशिष्ट मामलों पर लागू होती है, लेकिन सामान्य रूप से नहीं, इसलिए वे एक परिभाषित विशेषता नहीं हैं।
यूएमएल कल्पना में कहा गया है: "समग्र उदाहरण हटाए जाने से पहले एक हिस्से को समग्र उदाहरण से हटाया जा सकता है, और इस प्रकार समग्र उदाहरण के भाग के रूप में हटाया नहीं जा सकता है।" एक Car
- Engine
रचना के उदाहरण में , जैसा कि निम्नलिखित चित्र में दिखाया गया है, यह स्पष्ट रूप से मामला है कि कार के नष्ट होने से पहले इंजन को कार से अलग किया जा सकता है, इस स्थिति में इंजन नष्ट नहीं होता है और इसका पुन: उपयोग किया जा सकता है। यह रचना रेखा के संयुक्त पक्ष में शून्य या एक गुणा से निहित है ।
कंपोजिशन के अंत में कंपोजिशन के अंत की बहुलता या तो 1 या 0..1 होती है, इस तथ्य पर निर्भर करता है कि कंपोनेंट्स में कंपोजिट अनिवार्य है (कंपोजिट से जुड़ा होना चाहिए) या नहीं। यदि घटक अविभाज्य हैं , तो इसका मतलब है कि उनके पास एक अनिवार्य समग्र है।
२) एकत्रीकरण
एक एकत्रीकरण भाग-पूरे-संबंध के इच्छित अर्थ के साथ जुड़ाव का एक और विशेष रूप है, जहाँ एक पूर्ण के हिस्सों को अन्य पूर्ण के साथ साझा किया जा सकता है। उदाहरण के लिए, हम वर्गों के बीच एक एकत्रीकरण मॉडल कर सकते हैं DegreeProgram
और Course
के रूप में निम्नलिखित चित्र में दिखाया गया, क्योंकि एक कोर्स एक डिग्री कार्यक्रम का हिस्सा है और एक कोर्स (दो या अधिक डिग्री कार्यक्रमों के बीच साझा किया जा सकता है जैसे एक इंजीनियरिंग की डिग्री एक सी साझा कर सकता कंप्यूटर साइंस की डिग्री के साथ प्रोग्रामिंग कोर्स)।
हालांकि, साझा करने योग्य भागों के साथ एकत्रीकरण की अवधारणा का वास्तव में बहुत मतलब नहीं है, इसलिए इसका कार्यान्वयन पर कोई प्रभाव नहीं पड़ता है और कई डेवलपर्स इसलिए अपने वर्ग आरेखों में सफेद हीरे का उपयोग नहीं करना पसंद करते हैं, लेकिन सिर्फ एक सादे संघ का मॉडल बनाते हैं बजाय। यूएमएल कल्पना कहती है: "साझा एकत्रीकरण का सटीक शब्दार्थ आवेदन क्षेत्र और मॉडलर द्वारा भिन्न होता है"।
एक समग्र संघ के अंत की बहुलता पूरे पक्ष में किसी भी संख्या (*) के रूप में हो सकती है क्योंकि एक हिस्सा किसी भी संख्या के साथ हो सकता है या साझा किया जा सकता है ।