我已经下载了Altova UModel的试用版,并开始使用UML。作为一个实际的开始,我正在建模一个个人信息管理器应用程序,其中包括一个网页书签管理。
一个书签可以同时属于多个(或不属于)多个标签,一个标签可以包含多个(如果包含的所有书签都已删除,则不包含)书签。该关系必须是双向可导航的-用户必须能够看到具有特定标签的所有书签和书签的所有标签。
Bookmark和Tag类之间的正确UML关系是什么?
就我现在对UML的理解而言,它是一个关联(不是聚合)。但对于双向可导航的多对多关系,我可以将ends角色指定为"memberEnd“或"when navigableOwnedEnd",在图形上,这两种情况下的连接看起来是相同的(箭头)(据我所知,这意味着可导航性),但只有在使用"memberEnd”时,属性才会出现在类框中。
如果我指的是双向可导航的多对多关系,我应该如何在模型中指定它?
发布于 2010-05-23 18:54:24
来自UML上层建筑规范,v2.1.2 7.3.3节:
[2..*]每一端都表示连接到端的分类器实例在关联的链接中的参与度。这是有序关联。Subsets Namespace::member.[*]关联本身拥有的端点。这是一个有序的关联。关联::memberEnd、分类器::feature和Namespace::ownedMember.[*]关联本身所拥有的可导航末端。子集Association::ownedEnd.因此,如果end由关联“拥有”,则使用ownedEnd/navigableOwnedEnd类型,否则使用memberEnd类型。
两者都可用于“双向导航的多对多关系”;如果每个关系链接是设计中的单独实例,则它可以拥有两端(例如,A类和B类具有对相关As和B的引用对列表的引用),但如果该关系链接是隐式的,则它不拥有任何内容(例如,A类具有对相关B的引用列表,B类具有对相关As的引用列表)。
自从90年代末就开始使用UML了,你是我遇到的第一个关心这个区别的人!
https://stackoverflow.com/questions/2891377
复制相似问题