uml - UML 类图的正确建模

标签 uml aggregation class-diagram

在 UML 类图中:

a) 您是否必须声明聚合的属性?或者用指示聚合的箭头就足够了吗?

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

enter image description here

谢谢。

最佳答案

您在图片中使用了共享聚合。根据 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.

enter image description here

又如JimL.评论说 A 版本使用关联加上属性,这引入了冗余。这并不违法,但可能不是有意的,至少会导致困惑。

关于uml - UML 类图的正确建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72281277/

相关文章:

java - 组合设计模式可以避免集合(列表、哈希表)数据结构吗?

visual-studio - 有没有办法将 Visual Studio 或 MATLAB 中的程序执行顺序设为 "map"?

PowerBI:根据 DATEDIFF 条件正确聚合测量

arrays - 如何在类图上将属性的数据类型表示为对象数组?

class - 绘制包含两个类之间许多关联的 UML 类图

rest - 如何在 UML 中将属性显示为 "readonly"?

database-design - 关系与多样性

java - 视觉范例,不能在 DCD 上使用持久性继承

MongoDB mgo 聚合最早创建日期和最新最后修改日期

SQL Server float 总和应为 1,但过滤器另有说明