UML class 图上的正确建模

Proper modeling on UML class diagram

在 UML class 图中:

a) 您是否必须声明聚合的属性?还是箭头表示聚合就够了?

b) 我必须添加“id”作为属性还是给定的?

谢谢。

您正在使用图片中的共享聚合。根据 UML 2.5(请参阅第 110 页),它没有任何已定义的语义。如果您需要复合聚合,则必须填充菱形。在那种情况下,聚合对象将与聚合对象一起被删除(后者必须确保该约束)。在您的模型中,这没有任何意义。没有员工聚合一个部门。反之亦然,我会有疑问或至少有讨论的理由。

id 只有在具有商业目的(例如商品编号)时才需要。如果您将模型转换为数据库,您会出于技术原因引入人工 ID。但在抽象的业务层面上,它们并未建模。

您的模型仅在关联 class 属性的使用方面有所不同。 B变体是优选的。但是您需要将属性作为角色名称放置到关联的 classes(如 -department-branch)。您放置在连接器中间的是关联名称。错误地选择了前面的 +。很少需要命名关联。所以摆脱它。角色名称应放在扮演角色的 class 附近。此外,使用 dot-notation 来表明角色代表拥有的属性也是一个好主意。只需在两者的左侧附近放置一个小黑点(靠近角色名称所在的位置)。

至于第 1 页上的 dot-notation 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-version 使用关联 plus 引入冗余的属性。这不是非法的,但可能不是故意的,至少会导致混淆。