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

How can I represent inheritance from a template parameter in UML?

本文关键字:参数 继承 表示 UML      更新时间:2023-10-16

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

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

像这样的事情(为糟糕的ascii艺术道歉……并向Jon Skeet道歉)是我的第一个猜测,但我怀疑这是不对的。

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

有一个由U.M.L.设计师提出的建议,但它还不是标准的一部分。

如果没有任何模板参数,则类型为"a"的对象"a"可能是这样的:

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

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

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

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

干杯。

我不太确定这是否是完美的标准,但当我尝试使用Enterprise Architect:对"A"类进行逆向工程时,这就是它的定义

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

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