使用UML,我如何在以下代码中表示A< Foo >
?
template< class T >
class A : public T
{
/* ... */
};
class Foo { };
A< Foo > a_foo;
这样的事情(对于可怜的ascii艺术......和Jon Skeet道歉)是我的第一个猜测,但我怀疑它不正确。
________________
| |
| |
| Foo |
| |
|______________|
/:\ /|\
«bind»(Foo) : |
: | .......
__:____|___: T :
| :.....:
| |
| A |
| |
|______________|
答案 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 |
+----------+
| |
+----------+
只需添加模板参数的名称作为类的父名称。