如何在UML中表示模板参数的继承?

时间:2012-07-12 14:02:03

标签: c++ uml

使用UML,我如何在以下代码中表示A< Foo >

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

class Foo { };

A< Foo > a_foo;

这样的事情(对于可怜的ascii艺术......和Jon Skeet道歉)是我的第一个猜测,但我怀疑它不正确。

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

2 个答案:

答案 0 :(得分:1)

英国有一项提案。设计师,但是,它还不是标准的一部分。

如果没有任何模板参数,“A”类型的对象“a”可能是这样的:

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

对象“a”是模板“a”,类型参数为“Foo”,可以这样表示:

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

请注意,在U.M.L.中,当您声明一个类时,它们由一个矩形表示,而特定对象(如“a”)由带有圆角的矩形表示。有些人,&amp;工具,不遵循“圆角”规范。

干杯。

答案 1 :(得分:1)

我不太确定这是否完全符合标准,但当我尝试使用Enterprise Architect对其进行逆向工程时,这就是“A”类的定义:

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

只需添加模板参数的名称作为类的父名称。