uml中的模板方法
Template method in uml
有什么方法可以在 UML 中显示模板方法(我指的是 C++ 模板方法,而不是模式)?我只找到模板 类。
假设我有
class A {
public:
template <typename T>
std::vector<T> func(T& var);
};
所以,我现在可以在 uml 中显示它的唯一方法是 +func(in var : T&) : std::vector<T>
。有什么办法可以说它是模板,而 T 不是通常的类型吗?
我认为这 link 符合您的要求。
这里我不是很确定,但我认为答案是否定的。
如果我理解正确,UML 只能处理 class 级别的模板——这意味着您的 class A 需要指定为模板 class func() 有效的顺序。
换句话说,UML 不允许在未在 class 签名中指定的情况下在操作中引入模板参数。我觉得。
请始终记住,UML 不是一种编程语言,事实上,当遇到任何特定语言的重要源代码结构时,UML 往往会崩溃。
更多信息here。
我被迫将它们表示为单独的模板函数对象。不过,这仅用于表示和建模的目的。
所以
template<typename T> void foo (T& t) { ... }
建模为:
template<typename T> class foo
{
void operator() (T& t) { ... }
}
这是一个黑客。
有什么方法可以在 UML 中显示模板方法(我指的是 C++ 模板方法,而不是模式)?我只找到模板 类。
假设我有
class A {
public:
template <typename T>
std::vector<T> func(T& var);
};
所以,我现在可以在 uml 中显示它的唯一方法是 +func(in var : T&) : std::vector<T>
。有什么办法可以说它是模板,而 T 不是通常的类型吗?
我认为这 link 符合您的要求。
这里我不是很确定,但我认为答案是否定的。
如果我理解正确,UML 只能处理 class 级别的模板——这意味着您的 class A 需要指定为模板 class func() 有效的顺序。
换句话说,UML 不允许在未在 class 签名中指定的情况下在操作中引入模板参数。我觉得。
请始终记住,UML 不是一种编程语言,事实上,当遇到任何特定语言的重要源代码结构时,UML 往往会崩溃。
更多信息here。
我被迫将它们表示为单独的模板函数对象。不过,这仅用于表示和建模的目的。
所以
template<typename T> void foo (T& t) { ... }
建模为:
template<typename T> class foo
{
void operator() (T& t) { ... }
}
这是一个黑客。