ईए में गेंद और सॉकेट दिखाने के दो अलग-अलग तरीके हैं।
आपके द्वारा उपयोग किए जाने वाले एक के साथ, आपने अपने उपभोक्ता और निर्माता वर्गों से कनेक्टर को आईपॉडर इंटरफ़ेस (क्रमशः निर्भरता और एक अहसास) में खींचा है। फिर आपने अपनी कक्षाओं पर निर्भर और वास्तविक इंटरफेस के प्रदर्शन पर स्विच किया है।
ऐसा करने से इसका मतलब है कि गेंद और सॉकेट तय किए गए हैं। आप उन्हें चुन नहीं सकते (कक्षा को इसके बजाय चुना जाता है), आप उन्हें अपने माता-पिता वर्गों को wrt नहीं ले जा सकते हैं, और वे कनेक्टर्स के लिए अंतराल नहीं हो सकते हैं।
दूसरा तरीका एक्सपोज़ इंटरफ़ेस का उपयोग करना है।
इस विधि के साथ, आप अपने वर्गों से इंटरफ़ेस तक कोई कनेक्टर नहीं खींचते हैं। इसके बजाए, आप एक एम्बेडेड तत्व बनाने के लिए एक्सपोज़ इंटरफ़ेस का उपयोग करते हैं, जिसमें प्रत्येक क्लास में इंटरफ़ेस के रूप में इंटरफ़ेस होता है।
ये खुला इंटरफेस, अपने स्वयं के अधिकार में तत्व होने के नाते, जिस तरह से आप चाहते हैं उससे व्यवहार करें: आप उन्हें अपने संबंधित वर्गों के परिधि के चारों ओर ले जा सकते हैं, और आप उनके बीच कनेक्टर खींच सकते हैं।
उदाहरण में, आईपॉडर इंटरफ़ेस तत्व के किसी भी कनेक्टर की अनुपस्थिति पर ध्यान दें।
इंटरफेस का पर्दाफाश करने के लिए, इसके बारे में जाने के दो तरीके हैं। आप चित्र टूलबॉक्स में एक्सपोज़ इंटरफ़ेस का चयन कर सकते हैं, लेकिन ध्यान दें कि यह केवल घटक टूलबॉक्स में उपलब्ध है - क्लास टूलबॉक्स नहीं। इस उदाहरण में मैंने निर्माता के साथ यही किया है।
दूसरा तरीका कक्षा पर राइट-क्लिक करना है और नया तत्व -> पोर्ट चुनें। यह एक बंदरगाह बनाता है, जिसे आप कोई नाम दे सकते हैं। फिर आप पोर्ट पर राइट-क्लिक करें और नया एलिमेंट -> प्रदान/आवश्यक इंटरफ़ेस चुनें।
किसी भी तरह से एक्सपोज़ड इंटरफ़ेस संवाद लाता है, जो आपको इंटरफेस तत्व का चयन करने की अनुमति देता है जिसे इलिप्सिस बटन (...) का उपयोग करके प्रकट किया जाना चाहिए और इंटरफेस के लिए प्रोजेक्ट ट्री ब्राउज़ करना चाहिए।
पोर्ट का उपयोग करना थोड़ा बोझिल लग सकता है लेकिन यह सख्ती से बोल रहा है, और अधिक सही यूएमएल है। ध्यान दें कि एक एकल बंदरगाह कई इंटरफ़ेस का खुलासा कर सकता है, जो प्रदान और आवश्यक दोनों हैं, जिससे आप इंटरफेस को समूहबद्ध कर सकते हैं जो किसी प्रकार की लॉजिकल यूनिट बनाते हैं। ऐसा हो सकता है कि आपके पास कई इंटरफेस हैं जो एक सेवा बनाते हैं और इसलिए एक साथ जाते हैं, लेकिन कक्षा प्रदान करता है और कई सेवाओं की आवश्यकता होती है।
यह (मेरे लिए) अधिक समझ में आता है जब आप अलग-अलग वर्गों पर नहीं बल्कि घटकों के बारे में चर्चा कर रहे हैं, और मैं सामान्य रूप से प्राप्ति/निर्भरता का उपयोग करता हूं, जब मैं मॉडलिंग मॉडलिंग कर रहा हूं, तो मैं कक्षाओं और बंदरगाहों और खुला इंटरफेस का मॉडल कर रहा हूं।
यह ईए में सबसे अच्छा प्रतीत होता है। लेकिन इंटरफ़ेस के प्रावधान और इंटरफ़ेस की आवश्यकता के बीच अंतर को अलग करने/ब्रिजिंग करने के लिए हमारे पास निर्भरता कनेक्टर क्यों होना चाहिए? ऐसा कहने के लिए, मैं आरेख पर एक एकल "असेंबली" कनेक्टर बना सकता हूं, लेकिन मैं इसे एक विशिष्ट इंटरफ़ेस क्लास से संबद्ध नहीं कर सकता, जो इसे अर्थपूर्ण रूप से अर्थहीन बनाता है, भले ही यह प्रस्तुत करता है जैसा कि कोई उम्मीद करेगा ... ऐसा करने का कोई तरीका नहीं ? – laurelnaiad
दूसरे शब्दों में, मुझे ऐसे चित्र चाहिए जो इस तरह दिखते हैं: http://www.uml-diagrams.org/component-diagrams.html लेकिन वास्तविक इंटरफ़ेस कक्षाओं पर आधारित हैं ... कैसे करें? – laurelnaiad