2012-07-12 8 views
5

यूएमएल का उपयोग करके, मैं निम्नलिखित कोड में A<Foo> का प्रतिनिधित्व कैसे कर सकता हूं?मैं यूएमएल में टेम्पलेट पैरामीटर से विरासत का प्रतिनिधित्व कैसे कर सकता हूं?

template< class T > 
class A : public T 
{ 
    /* ... */ 
}; 

class Foo { }; 

A<Foo> a_foo; 

कुछ इस तरह (गरीब ascii कला के लिए क्षमा याचना ... और Jon Skeet करने के लिए) मेरा पहला अनुमान है, लेकिन मुझे लगता है कि यह सही नहीं है।

  ________________ 
      |    | 
      |    | 
      |  Foo  | 
      |    | 
      |______________| 
      /:\ /|\ 
«bind»(Foo) : | 
       : | .......    
      __:____|___: T : 
      |   :.....: 
      |    | 
      |  A  | 
      |    | 
      |______________| 
+0

क्या सीआरटीपी एक टेम्पलेट वर्ग से उत्तराधिकारी वर्ग का वर्णन नहीं करता है, जहां विरासतकर्ता खुद को टेम्पलेट पैरामीटर के रूप में पास करता है? इस मामले में सामान्यीकरण लिंक में विपरीत दिशा होनी चाहिए। दिखाया गया बाध्य निर्भरता सही IMHO है। –

+0

@ जी-makulik - आप सही हैं (जैसा कि लुचियान नीचे बताया गया है)। मैंने शीर्षक संशोधित किया है। – PaulH

+0

@Luc Touraille - अच्छा शीर्षक। :) – PaulH

उत्तर

1

यूएमएल द्वारा एक प्रस्ताव है। डिजाइनर, लेकिन, यह मानक का हिस्सा नहीं है, फिर भी।

, अगर कोई टेम्पलेट पैरामीटर, वस्तु "एक" प्रकार के 'ए', इस तरह हो सकता है नहीं था:

+--------------------+ 
|  a: A  | 
+--------------------+ 
| [+] doSomething(); | 
+--------------------+ 

वस्तु "एक", जो की "एक एक टेम्पलेट है ", प्रकार पैरामीटर के साथ" फू ", इस तरह प्रस्तुत किया जा सकता:

    +-----+ 
+-----------------| Foo | 
|     +-----+ 
|  a: A  | 
+--------------------+ 
| [+] doSomething(); | 
+--------------------+ 

ध्यान दें, कि, यूएमएल में, जब आप एक वर्ग की घोषणा, वे एक आयत द्वारा, प्रतिनिधित्व कर रहे हैं, जबकि विशिष्ट वस्तुओं, जैसे कि" एक ", गोल कोनों के साथ आयत द्वारा प्रतिनिधित्व किया जाता है। कुछ लोग, & उपकरण, "गोल कोनों" विनिर्देश का पालन नहीं करते हैं।

चीयर्स।

+0

तो आज इस संबंध का प्रतिनिधित्व करने का कोई मानक तरीका नहीं है? इसके अलावा, मैं उत्सुक हूं, क्या आपके पास एक विशेष उपकरण है जिसे आप यूएमएल के लिए उपयोग करना चाहते हैं? मैं अभी एमएस विसियो का उपयोग कर रहा हूं और मैं इसका विवाह नहीं कर रहा हूं। – PaulH

+0

@PaulH: नहीं, मेरे पास कोई विशेष उपकरण नहीं है। मैंने तर्कसंगत गुलाब (यूएमएल लेखकों के उपकरण), छाता, और अन्य औजारों के साथ शुरुआत की, लेकिन, सीमाओं के कारण, पैसा या उपकरण नहीं, पावर प्वाइंट, विसियो और लिबर ऑफिस ड्रा (Visio का ओपन सोर्स वर्जन) का उपयोग करना समाप्त हो गया: -s – umlcat

1

मैं कर रहा हूँ काफी यकीन है कि नहीं करता है, तो यह पूरी तरह से मानक है, लेकिन यह अपने 'ए' वर्ग की परिभाषा जब मैं एन्टरप्राइज़ आर्किटेक्ट का उपयोग कर इसे इंजीनियर को बदलने की कोशिश की है:

 +---------+ 
+-----| T:class | 
|  +---------+ 
|  T | 
| A  | 
+----------+ 
|   | 
+----------+ 

सिर्फ टेम्पलेट का नाम जोड़ें कक्षा के मूल नाम के रूप में पैरामीटर।