最佳答案
您在图片中使用了共享聚合。根据 UML 2.5,它没有任何定义的语义(参见第 110 页)。如果您需要复合聚合,则必须填充菱形。在这种情况下,聚合对象将与聚合对象一起删除(后者必须确保该约束)。在你的模型中这是没有意义的。没有员工聚集一个部门。即使反之亦然,我也会有疑问或至少有讨论的理由。
仅当具有商业目的(例如商品编号)时才需要 id
。如果将模型转换为数据库,则出于技术原因引入人工 ID。但在抽象的业务层面上,它们没有被建模。
您的模型仅在关联类的属性使用方面有所不同。 B变体是优选的。但是您需要将属性作为角色名称放置到关联的类(如 -department
和 -branch
)。您放置在连接器中间的内容实际上是关联名称。前面的 +
选择不当。很少需要命名关联。所以摆脱它吧。角色名称应放置在担任该角色的类附近。另外,使用点符号来表明角色代表拥有的属性也是一个好主意。只需在两者的左侧附近放置一个小黑点(靠近角色名称应该出现的位置)。
至于第 14 页上的点符号 UML 2.5 状态。 18:
Dot notation is used to denote association end ownership, where the dot shows that the Class at the other end of the line owns the Property whose type is the Class touched by the dot. See 11.5.4 for details of Association notation and 11.5.5 for examples.
又如JimL.评论说 A 版本使用关联加上属性,这引入了冗余。这并不违法,但可能不是有意的,至少会导致困惑。
关于uml - UML 类图的正确建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72281277/