Visual Studio UML类图和泛型类型建模

13

我需要对一个基础泛型类进行继承并建立一个具体的泛型类模型。首先,参见下面的内容:

enter image description here

ActivityFacade 应该按照以下方式实现:

public class ActivityFacade : BaseFacade<Activity, int>
{
}

在VS2012 UML类图中,我该如何建模这个东西?从图中看,ActivityFacade继承自BaseFacade是显而易见的,但不明显的是它传入的泛型类型参数,即:Activityint

1个回答

18
你需要添加一个新的绑定类(BaseFacade <Activity, int>),使用模板绑定连接器将其连接到你的参数化类(BaseFacade<T, TKey>),然后从绑定类中专门化你的子类(ActivityFacade)。请保留HTML标签。

enter image description here

来自OMG UML规范

“模板是一个参数化的元素...用于使用TemplateBinding关系生成其他模型元素。 模板签名的模板参数指定将由实际参数(或默认值)替换的形式参数。”

更新:

我包含的图表是使用EA绘制的。相同的概念可以在Visual Studio UML工具中建模。请参见msdn中的“Template types: To use a template type”部分。


2
@JohnSaunders 重要的是概念而不是工具。问题中的图表是错误的,因为ActivityFacade不应该从BaseFacade继承,而应该从BaseFacade<Activity,int>继承。在这里,我展示了在UML中建模泛型的概念。我相信一旦OP了解了TemplateBinding,他们就可以在Visual Studio中找到它。 - jurgenreza
1
@JohnSaunders,我认为这更是一个UML问题而不是工具问题,我的回答可能会对OP有所帮助。我不理解你的方法。 - jurgenreza
1
我认为你误读了问题。OP明确问道:“如何在VS2012 UML类图中建模?”而你的问题回答了他如何在Sparx EA中建模,这是一种支持特定UML符号的工具。VS2012似乎没有这个符号,因此答案是:“你不能在VS2012 UML类图中建模这个”。 - John Saunders
我告诉过你我为什么要给你的回答点个踩。我认为你的回答与所问问题完全不相关,几乎没有任何参考价值。如果提问者表示他不知道如何在任何工具中建模,那么你的问题可能会有一些相关性。但按照目前的情况来看,它根本不是问题的答案,实际上应该被删除。 - John Saunders
1
@JohnSaunders,感谢您想要保持答案的相关性,但在这种情况下,jurgenreza确实给了我我需要的东西..特别是更新。请意识到有时候OP并不知道确切地要求什么..仅仅因为我说在VS中,并不意味着我确实知道如何在其他UML工具中做到这一点。在这种情况下,我提到VS是因为那是我正在使用的工具,想知道如何在该工具中完成它..但是关于UML的任何提示都非常相关。 - Matt
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接