使用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 |
+----------+
| |
+----------+
只需添加模板参数的名称作为类的父名称。