我仍在尝试在
/role
的背景下理解 StructuredClassifier
属性。如果我正确理解 {union}
,这意味着 /role
指定的集合中的所有元素都必须是包含在其子集之一中的元素。在 UML 参考中搜索术语“子集角色”,我发现只有两个子集属性:StructuredClassifier::ownedAttribute
和 Collaboration::collaborationRole
,它们一起形成 /role
的派生并集。
但是为什么
/role
存在于 StructuredClassifier
中呢? AFAICT 直接拥有 Collaboration::collaborationRole
子集 StructuredClassifier::ownedAttribute
就足够了,因为 Collaboration
没有需要考虑的其他可能的子集属性的专业化。 Collaboration
是否可以拥有角色,即属性,而这些角色却不是 ownedAttributes
?还是有时在 /role
的上下文之外使用 Collaboration
?
是的,
collaborationRoles
不一定是attributes
的Collaboration
。因此,这两个集合都是 role
的子集,但可以并且经常具有不同的内容。
collaborationRoles
可以是其他 attributes
的 Classes
、parameters
或 Operations
的 Behaviors
、或者 variables
的 Activities
。
PS:后者很少使用,大多数人从未听说过它们。
PPS:没有为
collaborationRoles
指定非 Properties
的符号。而且 Cameo 无法在复合结构图中显示不属于 attributes
的 Collaboration
。