Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 表示来自模板化类的继承_Templates_Uml_Class Diagram - Fatal编程技术网

Templates 表示来自模板化类的继承

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 { ... }; 谢谢 你有一

我想知道如何在UML中表示从另一个模板类继承的模板类

大概是这样的:

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规范会妨碍理解!而且您使用什么程序生成图表?我现在在用阿斯塔,我也在用阿斯塔!