2012-03-09 23 views
45

यहां मैं समेकन और एसोसिएशन के बारे में एक और सवाल के साथ हूं। मैं यूएमएल की कुछ मूल बातें सीखना चाहता था, इसलिए मैंने मार्टिन फाउलर द्वारा "यूएमएल डिस्टिल्ड" पढ़ना शुरू कर दिया। मैंने कक्षाओं के बारे में दोनों अध्याय पढ़ा, और एक बात यह है कि मैं पूरी तरह से समझ नहीं पा रहा हूं, और यह एकीकरण बनाम एसोसिएशन है। पुस्तक में इस उद्धरण है:यूएमएल एकत्रीकरण बनाम एसोसिएशन

पूर्व यूएमएल दिनों में, लोगों को आम तौर बल्कि क्या एकत्रीकरण था पर अस्पष्ट थे और क्या संघ था। अस्पष्ट या नहीं, वे हमेशा हर किसी के साथ असंगत थे। नतीजतन, कई मॉडलर्स सोचते हैं कि एकत्रीकरण महत्वपूर्ण है, हालांकि विभिन्न कारणों से। तो यूएमएल में एकत्रीकरण (चित्रा 5.3) शामिल है लेकिन शायद ही कोई अर्थशास्त्र है। जिम रूंबाघ कहते हैं, "इसे मॉडलिंग प्लेसबो के रूप में सोचें" [रूंबाघ, यूएमएल संदर्भ]।

मैं इस बोली और विषयों है कि मैं स्टैक ओवरफ़्लो पर पढ़ा से समझने के रूप में यह कोई बात नहीं है जो उन दो संबंधों मैं उपयोग में से एक है, वे bassicly एक ही मतलब है, या वहाँ किसी भी स्थिति है, जहां के उपयोग एसोसिएशन के बजाय एकत्रीकरण उचित होगा और/या मैं कक्षा आरेख के "अर्थ" को बदले बिना एक दूसरे को बदल नहीं सकता?

मैं यह पूछ रहा हूं, यह पुस्तक 2003 से है, और कुछ चीजें उन कुछ वर्षों में बदल सकती हैं।

उत्तर

26

रूंबाघ का बयान सबसे ज्यादा बता रहा है और अंकल बॉब की अच्छी सलाह है।जैसा कि मैंने elsewhere कहा है, एकत्रीकरण इतनी कमजोर है कि कुछ भी व्यावहारिक रूप से लाभकारी नहीं है। इसमें केवल एक वैध कोने केस (रिकर्सिव रिश्तों की विश्वकोश) है, हालांकि कुछ लोग इसे जानते हैं और समझते हैं। तो आप वैसे भी टिप्पणियों में इंगित करने के लिए समाप्त हो गया।

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

hth।

+0

रचना लिंक पर आपके विचार क्या हैं? – Dennis

+0

@ डेनिस: एकत्रीकरण के विपरीत, संरचना स्पष्ट रूप से परिभाषित अर्थशास्त्र है जो इसे सीधे बाइनरी एसोसिएशन से अलग रूप से अलग करती है। यहां और अधिक: http://stackoverflow.com/questions/7834052/uml-class-diagram-association-vs-aggregation-composition-diamonds/7836357#7836357 – sfinnie

27

हो सकता है कि यह आपकी मदद कर सकता है, लेकिन मुझे नहीं लगता है कि आप सही विवरण मिल जाएगा:

अंतर निहितार्थ से एक है। एकत्रीकरण पूरे/भाग संबंधों को दर्शाता है जबकि संघ नहीं करते हैं। हालांकि, इस तरह से बहुत अंतर होने की संभावना नहीं है कि दोनों रिश्तों लागू किए गए हैं। यही है, कोड कोड को देखना बहुत मुश्किल होगा और यह निर्धारित करेगा कि कोई विशेष संबंध एकत्रीकरण या एसोसिएशन होना चाहिए या नहीं। इस कारण से, पर यह बहुत सुरक्षित है कि कुल मिलाकर संबंधों को पूरी तरह से अनदेखा करें।
[रॉबर्ट सी मार्टिन | यूएमएल]

और प्रत्येक स्थिति के लिए एक उदाहरण:

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

बी) एसोसिएशन एसोसिएशन का एक विशेष रूप है जहां सभी ऑब्जेक्ट्स का अपना जीवन चक्र होता है लेकिन स्वामित्व और बच्चा ऑब्जेक्ट किसी अन्य मूल वस्तु से संबंधित नहीं हो सकता है। आइए विभाग और शिक्षक के का उदाहरण लें। एक शिक्षक एकाधिक विभागों से संबंधित नहीं हो सकता है, लेकिन अगर हम विभाग को हटाते हैं, तो शिक्षक ऑब्जेक्ट नष्ट नहीं होगा। हम "है-ए" रिश्ते के बारे में सोच सकते हैं।
[मेष | GeeksWithBlogs]

+2

दिलचस्प, लेकिन लगभग दूसरे उदाहरण, मुझे लगता है कि अगर हम एसोसिएशन के साथ एकत्रीकरण को स्वैप करेंगे, फिर भी कोई अंतर नहीं होगा, और यह सभी आरेख की व्यक्तिगत वरीयता और पठनीयता के लिए उबलता है? – Andna

+0

आप * कैसे बता सकते हैं कि कोई रिश्ता पूरा/भाग है? – reinierpost

+0

उपयोगी हो सकता है http://www.uml-diagrams.org/association.html#aggregation – Jekis

0

यूएमएल एकत्रीकरण में परिभाषित किया गया है और चूंकि उन्हें कोई स्पष्ट रूप से परिभाषित अर्थपूर्ण नहीं मिला है। एरिक इवांस द्वारा "डोमेन संचालित डिजाइन" में वर्णित अनुसार, एक समेकन का एक वैध उपयोग-केस कई वर्गों का समापन है।

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

कार अपने सभी हिस्सों, जैसे पहियों के लिए एकत्रीकरण-रूट है, और आप एक कार के हिस्सों को एकत्रीकरण के बाहर से ही रूट तक नहीं पहुंच सकते हैं।

तो मूल रूप से एकत्रीकरण कक्षाओं के एक समूह को एक दूसरे से जोड़ता है जो एक-दूसरे से संबंधित होता है।

+0

यूएमएल संरचना डीडीडी के कुल योग के करीब है। डीडीडी समेकित कुछ बहुत अच्छी तरह से परिभाषित अर्थशास्त्र (वास्तव में यूएमएल संरचना से भी मजबूत) है। यूएमएल एकत्रीकरण से निश्चित रूप से काफी मजबूत है। यह दुर्भाग्यपूर्ण है कि शब्द मेल नहीं खाते हैं :-( – sfinnie

2

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

+1

"युक्त वस्तु निहित वस्तु के बिना अपना काम (पूरी तरह से) नहीं कर सकती है।" क्या यह संघों और कुछ रूपों निर्भरताओं के लिए भी सच नहीं है? – Jupiter

-1

उनका मतलब यह नहीं है! मैं इसे इस तरह से रख सकते हैं:

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

एकत्रीकरण संबंध: एक कक्षा में एक और वर्ग शामिल है। लेकिन अगर कंटेनर (क्लासूम) नष्ट हो गया है, तो निहित (चेयर) नहीं है। असल में क्लासूम का अध्यक्ष होता है। एसोसिएशन रिश्ते की तुलना में एकत्रीकरण संबंध अधिक मजबूत है।

यहां इसके बारे में और संपूर्ण UML2 भी एक ट्यूटोरियल है।0 जो सब कुछ आसान और सरल बताते हैं, आप इसे उपयोगी पाते हो सकता है: https://github.com/imalitavakoli/learn-uml2

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

0

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

  • जोड़ें/पदानुक्रम से/उप-घटक को दूर
  • परिवर्तन में

    • खोजने उप-घटक सभी घटकों
    • पदानुक्रम रिकर्सिवली घटकों के बीच (आगंतुक पैटर्न)
    • reconfigure पदानुक्रम और लिंक (संघ) पार की सामान्य विशेषताएं

    एसोसिएशन से निपटने के दौरान इन कार्यों में से अधिकांश की आवश्यकता नहीं है।

  • 0

    यह शब्द अक्सर भ्रमित हो जाता है।

    एकत्रीकरण और संरचना कुछ प्रकार के एसोसिएशन हैं। वहाँ शायद ही कार्यान्वयन के दौरान एकत्रित और संगठनों के बीच एक अंतर है, और कई संघ संबंध के साथ अपने चित्र में पूरी तरह एकत्रीकरण संबंधों को छोड़ देगा।

    आप इस समानता से विचार प्राप्त कर सकते हैं।

    कक्षा: एक (व्यक्ति) और कक्षा: बी (कार), संघ संबंध है अगर कक्षा: एक एक क्लास है: बी घोषणा, और भी कक्षा: एक (व्यक्ति) वस्तु: बी (कार) वस्तु एक क्लास बनाने के लिए आवश्यक नहीं है।

    कक्षा: एक (कार) और कक्षा: बी (टायर) यदि कक्षा, एकत्रीकरण संबंध है: एक एक क्लास है: बी घोषणा, और भी कक्षा: बी (टायर) वस्तु आवश्यक है एक क्लास बनाने के लिए: एक (कार) वस्तु।

    चीयर्स!

    0

    जोड़ने के लिए, मैं सिर्फ OMG साइट से यूएमएल विनिर्देश डाउनलोड करने के लिए सुझाव है: सबसे अच्छा संदर्भ और देखो पी 110

    कोई भी इंगित करता है कि संपत्ति नहीं एकत्रीकरण अर्थ विज्ञान है।

    साझा किया गया है कि संपत्ति ने एकत्रीकरण अर्थशास्त्र साझा किया है। साझा समेकन की सटीक अर्थशास्त्र आवेदन क्षेत्र और मॉडलर द्वारा भिन्न होता है।

    समग्र इंगित करता है कि संपत्ति को एकत्रित किया गया है, यानी, समग्र वस्तु की रचना की गई वस्तुओं के अस्तित्व और भंडारण की जिम्मेदारी है (11.2.3 में भागों की परिभाषा देखें)।