Templates 表示来自模板化类的继承
我想知道如何在UML中表示从另一个模板类继承的模板类 大概是这样的:Templates 表示来自模板化类的继承,templates,uml,class-diagram,Templates,Uml,Class Diagram,我想知道如何在UML中表示从另一个模板类继承的模板类 大概是这样的: class non_templated { ... }; template<typename x> class templated_a { ... }; template<typename y> class templated_b : public templated_a<y>, public non_templated { ... }; 谢谢 你有一
class non_templated {
...
};
template<typename x>
class templated_a {
...
};
template<typename y>
class templated_b
: public templated_a<y>,
public non_templated {
...
};
谢谢 你有一个从非模板和模板继承的模板类。templated_a的模板参数与templated_b的模板参数相同。在本例中,我认为将两个类都绘制为具有相同名称的参数就足够了:
在我看来,很明显Y是同一个参数,所以我更喜欢保持图表尽可能干净,而不是添加额外的符号
但也有不同的观点。问题来自于一个担心人们可能不会发现这一点的人:如何知道模板_b的Y和模板_a的Y是同一类型
如果您有相同的顾虑,那么可以使用UML模板绑定表示法
模板绑定显示为用
关键字«bind»和绑定信息,带空心三角形
箭头,并从尾部的绑定元素指向
模板
你可以阅读更多关于它的内容
使用此符号,您的图表将如下所示:
class non_templated {
...
};
template<typename x>
class templated_a {
...
};
template<typename y>
class templated_b
: public templated_a<y>,
public non_templated {
...
};
我不喜欢这样,因为它使用两种不同类型的行进行继承,我认为大多数人不会理解模板绑定符号
另一种方法是在泛化行中添加一个原型,并将其命名为X>。这使得泛化线类似于模板绑定表示法。比如:
尽管这不是模板绑定的正式表示法,但与第二个图相比,我更喜欢它。我更喜欢第一个。我认为这是大多数人更能理解的图表。您甚至可以在原型中包含绑定参数信息:>`。由您选择绘制图表的人员更好地理解的内容
希望有帮助。确实有帮助!我也这么想:这对大多数人来说是显而易见的。我最初使用的形式是首先绑定模板a,创建一个中间步骤,然后将其推广到模板b。这为更复杂的模板增加了大量步骤。我喜欢你的解决方案!有时,我想,严格遵守UML规范会妨碍理解!而且您使用什么程序生成图表?我现在在用阿斯塔,我也在用阿斯塔!