2013-02-08 4 views
5

बॉल और सॉकेट नोटेशन कानूनी यूएमएल 2.0 है, लेकिन मुझे आरेख पर इसे खींचने के लिए ईए को मजबूर करने का कोई तरीका नहीं मिल रहा है। यह सॉकेट और गेंद के बीच निर्भरता की अनुमति देने से इंकार कर देता है। वहाँ (थोड़ा एमएस जादू रंग) यह नीचे चित्र में के रूप में होता है, बनाने के लिए कोई तरीका है:ईए कक्षा आरेख में गेंद और सॉकेट नोटेशन का उपयोग करना संभव है?

enter image description here

इसके अलावा, एक तरफ सवाल है, तो आप गेंद या सॉकेट तत्व के दूसरे पक्ष पर दिखाई देंगे ?

उत्तर

4

ईए में गेंद और सॉकेट दिखाने के दो अलग-अलग तरीके हैं।

आपके द्वारा उपयोग किए जाने वाले एक के साथ, आपने अपने उपभोक्ता और निर्माता वर्गों से कनेक्टर को आईपॉडर इंटरफ़ेस (क्रमशः निर्भरता और एक अहसास) में खींचा है। फिर आपने अपनी कक्षाओं पर निर्भर और वास्तविक इंटरफेस के प्रदर्शन पर स्विच किया है।

ऐसा करने से इसका मतलब है कि गेंद और सॉकेट तय किए गए हैं। आप उन्हें चुन नहीं सकते (कक्षा को इसके बजाय चुना जाता है), आप उन्हें अपने माता-पिता वर्गों को wrt नहीं ले जा सकते हैं, और वे कनेक्टर्स के लिए अंतराल नहीं हो सकते हैं।

दूसरा तरीका एक्सपोज़ इंटरफ़ेस का उपयोग करना है।

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

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

उदाहरण में, आईपॉडर इंटरफ़ेस तत्व के किसी भी कनेक्टर की अनुपस्थिति पर ध्यान दें। Sample use of Exposed Interfaces

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

दूसरा तरीका कक्षा पर राइट-क्लिक करना है और नया तत्व -> पोर्ट चुनें। यह एक बंदरगाह बनाता है, जिसे आप कोई नाम दे सकते हैं। फिर आप पोर्ट पर राइट-क्लिक करें और नया एलिमेंट -> प्रदान/आवश्यक इंटरफ़ेस चुनें।

किसी भी तरह से एक्सपोज़ड इंटरफ़ेस संवाद लाता है, जो आपको इंटरफेस तत्व का चयन करने की अनुमति देता है जिसे इलिप्सिस बटन (...) का उपयोग करके प्रकट किया जाना चाहिए और इंटरफेस के लिए प्रोजेक्ट ट्री ब्राउज़ करना चाहिए।

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

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

+0

यह ईए में सबसे अच्छा प्रतीत होता है। लेकिन इंटरफ़ेस के प्रावधान और इंटरफ़ेस की आवश्यकता के बीच अंतर को अलग करने/ब्रिजिंग करने के लिए हमारे पास निर्भरता कनेक्टर क्यों होना चाहिए? ऐसा कहने के लिए, मैं आरेख पर एक एकल "असेंबली" कनेक्टर बना सकता हूं, लेकिन मैं इसे एक विशिष्ट इंटरफ़ेस क्लास से संबद्ध नहीं कर सकता, जो इसे अर्थपूर्ण रूप से अर्थहीन बनाता है, भले ही यह प्रस्तुत करता है जैसा कि कोई उम्मीद करेगा ... ऐसा करने का कोई तरीका नहीं ? – laurelnaiad

+0

दूसरे शब्दों में, मुझे ऐसे चित्र चाहिए जो इस तरह दिखते हैं: http://www.uml-diagrams.org/component-diagrams.html लेकिन वास्तविक इंटरफ़ेस कक्षाओं पर आधारित हैं ... कैसे करें? – laurelnaiad

1

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

+0

मुझे अभी भी लगता है कि यदि ईए यूएमएल 2.0 का समर्थन करता है तो इसे अनुमति देनी चाहिए। यहां कुछ और रोचक जानकारी दी गई है: http://martinfowler.com/bliki/BallAndSocket.html –

+0

आप सही हैं कि यह एक कानूनी प्रतिनिधित्व प्रतीत होता है क्योंकि इसे UML2.4.1 विनिर्देश (चित्र 8.14) में चित्रित किया गया है, लेकिन मैंने अपना सामान्य परीक्षण किया उपकरण यानी [मॉडलियो] (http://www.modelio.org/) और [टॉपकेज्ड] (http://www.topcased.org/) लेकिन उनमें से कोई भी इसका समर्थन नहीं करता है लेकिन आपको सॉकेट दिखाई देने की अनुमति है और सभी तरफ गेंद :-) –

1

ईए बॉल और सॉकेट कनेक्शन में (केवल) बंदरगाहों के बीच खींचा जा सकता है। "असेंबली" कनेक्टर प्रकार का प्रयोग करें।

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