【问题标题】:UML Class diagram: What is the meaning of attributes at lines?UML 类图:行的属性是什么意思? 【发布时间】:2021-03-07 00:07:59 【问题描述】: 你好 stackoverflow 社区: 我以前从未在行中看到过属性。那么有人可以解释一下这些必须在哪里定义吗? 通常我们在第二行的类中有属性。所以我对这个符号感到困惑。 【问题讨论】: 标签: uml associations class-diagram 【解决方案1】: 这些不是“属性”,而是关联端名称,也称为“角色”。这意味着类And 将具有两个属性mlhs 和mrhs,每个属性都引用Expression 类型。这也意味着Not 类将具有mexpr 属性。 顺便说一句: roles 应该放在更靠近关联的末尾,在界面的一侧。否则,它们可能会与关联名称混淆,而关联名称又是另外一回事。 聚合菱形不会在此模型中增加任何价值。 最后,您可以将关联末尾表示可导航性的空心箭头替换为表示关联端所有权并暗示可导航性的点符号。 【讨论】: 等等。我以为我做对了。这里的组成(我忘了把它涂成黑色)只是说明参数是否属于接口类型? m 应该是包的 ~。 @RackCloud 否,组合指示是否删除了一个 Not 实例,该实例也删除了通过 expr记忆的关联 Expression >,如果您删除了一个 And,它也会删除通过 lhs 和 rhs 记忆的关联 Expression。但是这里没有组合,只有聚合 @RackCloud 在这种情况下使用可见性 ~/package 对我来说是没有意义的,你确定它们不是 -/private 吗? @RackCloud 对象组合不需要 UML 组合。关于 UML 组合,Bruno 已经回答了。对不起,我误读了 ~ 为 m (通常用于命名属性)。事实上,包可见性建议您在类之外执行属于该类的责任。如果您没有非常充分的理由,这听起来像是一种设计气味。也不推荐使用受保护的,因为它会导致严重的错误(参见关于 LSP 和所谓的“历史约束”的讨论)。将其设为私有。如果需要,通过 getter 提供只读访问 ;-)