कक्षा दृश्यता ऑब्जेक्ट डिज़ाइन का एक महत्वपूर्ण हिस्सा है। मैंने कई यूएमएल किताबों में गैर-सार्वजनिक वर्गों को दिखाते हुए कोई उदाहरण चित्र नहीं देखा है, न ही मैंने अन्य उपकरणों के साथ एंटरप्राइज़ आर्किटेक्ट में कक्षा दृश्यता दिखाने का एक तरीका देखा है। एंटरप्राइज़ आर्किटेक्ट और अन्य टूल्स आपको मेटामोडेल में क्लास दृश्यता सेट करने की अनुमति देते हैं, लेकिन मुझे अभी तक चित्रों में इसे दिखाने का कोई तरीका नहीं दिख रहा है।क्या कक्षा दृश्यता यूएमएल कक्षा आरेखों पर दिखाया जा सकता है?
उत्तर
ग्रहण में आपके पास आइकन में दृश्यता है। मेरा मतलब है कि आपके पास एक हरा वर्ग आइकन है और यदि निजी है तो पी को शीर्ष पर रखा जाता है। यदि आप विकल्प चुनते हैं तो यह आइकन कक्षा आरेख में भी दिखाई देता है। इस सहायता की आशा करें।
यूएमएल मेटामोडेल और प्रतिनिधित्व दोनों में प्रोग्रामिंग भाषा-तटस्थ तरीके से दृश्यता का समर्थन करता है।
विस्बिलिटीकिंड नामक एक गणना है जिसका उपयोग विभिन्न स्थानों में किया जाता है (UML 2.3 superstructure spec अनुभाग 7.3.5.5 पी 142 देखें)।
कक्षा आरेखों पर दृश्यता को चित्रित करने के कई तरीके हैं। जनता का प्रतिनिधित्व करने के लिए निजी सुविधाओं और '+' का प्रतिनिधित्व करने के लिए '-' का उपयोग करना सबसे आम है।
----------------------------
| Class |
|--------------------------|
| +publicAttribute: Type |
| -privateAttribute: Type |
|--------------------------|
| +publicMethod() |
| -privateMethod() |
----------------------------
आंकड़ा 7.28/7.29 और उदाहरण के लिए the spec की P52 पर देखें: उदाहरण के लिए।
hth।
आपका उत्तर वर्ग-सदस्य-दृश्यता से संबंधित है, न कि कक्षा की दृश्यता के लिए। –
@ BjörnPollex दृश्यता कुछ गुंजाइश से संबंधित है, बिना स्कोप दृश्यता का कोई मतलब नहीं है। कक्षा का उदाहरण किसी अन्य वर्ग के उदाहरण का सदस्य हो सकता है और इस मामले में इसकी दृश्यता को इस उत्तर में दिखाए जाने जैसा देखा जा सकता है। – SomeWittyUsername
मैं तुम्हें Uni-directional and Bi-directional association
पर एक नज़र मैं तो बस उस में यूएमएल 2.4.1 इंफ्रास्ट्रक्चर ऊपर देखा की आवश्यकता है लगता है। आकृति 10.3 पी पर। 95 आप कक्षा को एक प्रकार के रूप में परिभाषित करते हैं जो एक नामांकित एलीमेंट है जो एक तत्व है। दृश्यता पैकेज के साथ एक नामांकित एलिमेंट की दृश्यता है जैसा कि पी पर 9.21.1 में परिभाषित किया गया है। 88, अगर यह एक नामस्थान से संबंधित है। यदि आपके पास दृश्यताएं हैं तो कक्षा में दृश्यता है। आप + - # और ~ (पी। 89) के साथ सामान्य नोटेशन का उपयोग कर सकते हैं।
विजुअल पैराडाइग यह कर सकता है।
यूएमएल कल्पना v2.5 बीटा 2 न केवल NamedElement लेकिन यह भी PackageableElement प्रकार की विशेषता दृश्यता है के अनुसार VisibilityKind
p48 से:
PackageableElement [सार कक्षा]
.. [कटाव] ..
गुण
- दृश्यता: दृश्यताकिंड [0..1] = सार्वजनिक एक पैकेज योग्य एलिमेंट में एक दृश्यता निर्दिष्ट होनी चाहिए यदि यह नामस्थान द्वारा स्वामित्व में है। डिफ़ॉल्ट दृश्यता सार्वजनिक है।
प्रतिबन्ध
- namespace_needs_visibility एक PackageableElement एक नाम स्थान के स्वामित्व वाले दृश्यता होना आवश्यक है। निवेश संबंधी निर्णय: दृश्यता = अशक्त नाम स्थान = अशक्त
मैं इस दृश्यता के लिए किसी भी अंकन दिशा निर्देशों नहीं मिला है निकलता है लेकिन
आप एक स्टीरियोटाइप के साथ अपने वर्ग को परिभाषित करते हैं (जैसे कि < < वर्ग > >) फिर आप स्टीरियोटाइप के लिए एक आकृति-स्क्रिप्ट असाइन कर सकते हैं। आप केवल एक सजावट निर्दिष्ट हैं, तो यह एक वर्ग के लिए ड्राइंग डिफ़ॉल्ट का उपयोग करना चाहिए, और अपने सजावट जोड़ने के लिए, जो वर्ग की गुंजाइश संपत्ति के आधार पर सशर्त हो सकता है:
decoration X
{
if(hasproperty("scope","public"))
print("P");
}
इस शीर्ष में एक पी प्रिंट एक सार्वजनिक वर्ग के बाएं कोने। हालांकि, आप इसके बजाय एक आइकन समान रूप से कर सकते हैं।
दुर्भाग्यवश, मुझे एक डिफ़ॉल्ट गैर-स्टीरियोटाइड क्लास में आकृति-स्क्रिप्ट निर्दिष्ट करने का कोई तरीका नहीं मिल रहा है। कोई जानता है कि उसे कैसे करना है?
मुझे नहीं लगता कि यूएमएल मानक दृश्यता के लिए विशिष्ट नोटेशन प्रदान करता है, क्योंकि यह एक भाषा निर्भर सुविधा है। – Heisenbug
धन्यवाद @ हेइसेनबग। मैं एंटरप्राइज़ आर्किटेक्ट पैकेज आरेखों पर कक्षा दृश्यता देखने में सक्षम था। यह इस विशेष उपकरण में इसे देखने का एकमात्र तरीका हो सकता है। मेरा अगला कदम यूएमएल स्पेक के प्रासंगिक भाग की समीक्षा करना है। –
मैं निश्चित रूप से निश्चित हूं कि एक पैकेज आरेख वास्तव में एंटरप्राइज़ आर्किटेक्ट में तत्व दृश्यता (उर्फ स्कोप) देखने का एकमात्र तरीका है। मैं इसे उत्तर के रूप में पोस्ट नहीं करूँगा क्योंकि आपने पहले से ही जासूसी कार्य किया है, लेकिन भविष्य में खोजकर्ताओं के लिए कृपया स्वयं (और प्रश्न का उत्तर चिह्नित करने) पर विचार करें। – Uffe