我想知道我是如何表示从UML中继承另一个模板类的模板类的?
这样的事情:
class non_templated {
...
};
template<typename x>
class templated_a {
...
};
template<typename y>
class templated_b
: public templated_a<y>,
public non_templated {
...
};
谢谢! :)
答案 0 :(得分:0)
哟我的班级templated_b
继承自non_templated
和templated_a
。 templated_a
的模板参数与templated_b
的模板参数相同。在这种情况下,我认为将两个类绘制为具有相同名称的参数就足够了:
在我看来,Y
显然是相同的参数,所以我更喜欢尽可能保持图表清洁,而不是添加其他符号。
但也有不同意见。 This问题来自那些害怕人们可能不会发现那些显而易见的人:"how to know Y of templated_b is the same type than Y of templated_a?"
如果您有同样的顾虑,那么您可以使用UML模板绑定表示法。
“模板绑定显示为用箭头装饰的虚线箭头 关键字«bind»和绑定信息,带空心三角形 箭头,并从尾部的绑定元素指向 模板“。
Here你可以阅读更多相关信息。
使用此表示法,您的图表将如下所示:
我不喜欢这样,因为它使用两种不同类型的行进行继承,我认为大多数人都不会理解模板绑定表示法。
另一种方法是添加<<bind>>
构造型并添加到泛化线,并将其命名为<Y->X>
。这使得泛化线类似于模板绑定表示法。类似的东西:
即使这不是模板绑定的正式表示法,我更喜欢它到第二个图表。而且我更喜欢第一个。我认为这是大多数人会更好理解的图表。您甚至可以在构造型中包含绑定参数信息:&lt; Y&gt;&gt;`。由您来选择绘制图表的人员可以更好地理解的内容。
希望它有所帮助。