表示模板类的继承

时间:2014-02-01 02:35:59

标签: 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 {
    ...
};

谢谢! :)

1 个答案:

答案 0 :(得分:0)

哟我的班级templated_b继承自non_templatedtemplated_atemplated_a的模板参数与templated_b的模板参数相同。在这种情况下,我认为将两个类绘制为具有相同名称的参数就足够了:

Class diagram 1

在我看来,Y显然是相同的参数,所以我更喜欢尽可能保持图表清洁,而不是添加其他符号。

但也有不同意见。 This问题来自那些害怕人们可能不会发现那些显而易见的人:"how to know Y of templated_b is the same type than Y of templated_a?"

如果您有同样的顾虑,那么您可以使用UML模板绑定表示法。

  

“模板绑定显示为用箭头装饰的虚线箭头   关键字«bind»和绑定信息,带空心三角形   箭头,并从尾部的绑定元素指向   模板“。

Here你可以阅读更多相关信息。

使用此表示法,您的图表将如下所示:

Class diagram with template binding

我不喜欢这样,因为它使用两种不同类型的行进行继承,我认为大多数人都不会理解模板绑定表示法。

另一种方法是添加<<bind>>构造型并添加到泛化线,并将其命名为<Y->X>。这使得泛化线类似于模板绑定表示法。类似的东西:

enter image description here

即使这不是模板绑定的正式表示法,我更喜欢它到第二个图表。而且我更喜欢第一个。我认为这是大多数人会更好理解的图表。您甚至可以在构造型中包含绑定参数信息:&lt; Y&gt;&gt;`。由您来选择绘制图表的人员可以更好地理解的内容。

希望它有所帮助。