类变量是UML聚合

本文关键字:聚合 UML 类变量 | 更新日期: 2023-09-27 18:21:40

在面向对象中,当我创建一个类变量并在构造函数中初始化它时,我们可以说它是一个UML聚合吗?在同样的想法中,我们可以说方法中定义的变量是UML关联吗?

UML关联/聚合/组合和OO类之间有什么联系?

类变量是UML聚合

通常,组合是聚合的特例,聚合是关联的特例。您使用的内容取决于模型,即关联的属性。

UML不处理实际的实现,您还可以用非OO的方式实现UML描述的模型。

至于UML关联和类/实例成员之间的链接问题:基本上,引用另一个类的每个成员都是一个关联(尽管Java中的StringInteger等基本包装器通常不计算在内)。

关联意味着存在关系。聚合/合成进一步细化了一些附加细节。

聚合意味着存在关系,但对父实体没有已知的约束,这些约束涉及从属实体的生命周期管理。

组合意味着存在关系,并且父对象负责依赖实体的生存期管理。

总结一下我在这个页面上的评论:

  • 在Java中,大多数情况下,实例变量在UML中表示为规则关联
  • 在UML2.0中,聚合已经被删除,所以您不必担心它们似乎聚合被删除了,但又被添加回来了
  • 组合在Java中并不常见,因为您必须保证子对象在其父对象"死亡"之后不会被使用。这通常要求在父级getter上传递防御副本并进行深度克隆。在其他语言中,它们的使用频率更高