UML类图关联vs(聚合|组合)-菱形

UML类图关联vs(聚合|组合)-菱形,uml,Uml,我不确定我是否正确地使用了这个工具 我会使用接口的关联,因为我不能实例化它们。比如说,就像他们那样。或者对于静态类,同样的原因 而钻石我只用于我可以实例化的对象。像普通班一样 但我不确定这是否是区分它们的正确方法,因为如果你再这样做,你会发现它们并没有那么具体。在UML2.3中,我无法得到更多,那么您如何使用它呢 还有第三种方式,虚线箭头,但我没有胶水,什么时候用这个。也许你也能帮我做这个 我会使用接口的关联,因为我不能实例化它们。就像他们在这里做的那样。或者对于静态类,同样的原因 而钻石我只用

我不确定我是否正确地使用了这个工具

我会使用接口的关联,因为我不能实例化它们。比如说,就像他们那样。或者对于静态类,同样的原因

而钻石我只用于我可以实例化的对象。像普通班一样

但我不确定这是否是区分它们的正确方法,因为如果你再这样做,你会发现它们并没有那么具体。在UML2.3中,我无法得到更多,那么您如何使用它呢

还有第三种方式,虚线箭头,但我没有胶水,什么时候用这个。也许你也能帮我做这个

我会使用接口的关联,因为我不能实例化它们。就像他们在这里做的那样。或者对于静态类,同样的原因

而钻石我只用于我可以实例化的对象。像普通班一样

这不是他们真正的工作方式。这三种形式(关联、聚合和组合)定义了关系的不同属性。这三个函数通常在类之间使用,但也可以关联接口。联想和组合是最简单的两种:

  • 关联(无菱形)是最普遍的形式,允许在两端定义基数和可导航性
  • 成分(填充钻石)是一种整体-部分关系,其中“整体”(以黑钻石结尾)“包含”部分。它施加了两个关键限制:
  • 只能有1个容器(即整端的基数正好为1)
  • 总的来说,它规定了零件的生命周期责任。因此,容器负责创建和删除零件。如果零件的容器被删除,零件将无法继续存在

聚集(未填充钻石)位于中间的某处。这有点像合成——只是它不要求具有上述属性。我个人不使用它。语义太不清楚,不值得这么做

还有第三种方式,虚线箭头,但我没有胶水,什么时候用这个

我想你指的是依赖关系。这是一种较弱的交往形式。以下面的类定义为例

class Foo {

 def bar(Baz: aParam) {
  ...
 }
}
在本例中,类型Foo在bar()方法签名中的使用依赖于类型Baz。但是,它们之间没有关联(不能合理地讨论例如Foo实例和Baz实例之间关系的基数)

从实际的角度来看,我会说:

  • 您可以对80%以上的您可能想要建模的关系使用直接关联
  • 组合可能占了剩余场景的大部分
  • 依赖关系在某些情况下可能很有用
  • 不使用聚合,您可以过得非常愉快

嗯。

让我们来设定条件。聚合是UML标准中的一个元术语,表示组合和共享聚合,简称为共享。它经常被错误地命名为“聚合”。这是不好的,因为合成也是一种聚合。据我所知,你的意思是“共享”

进一步从UML标准:

复合-表示以复合方式聚合属性, i、 例如,复合对象对存在和存在负有责任 组合对象(部件)的存储

所以,大学到大教堂协会是一个组合,因为大教堂并不存在于大学之外(IMHO)

共享聚合的精确语义因应用程序区域和应用程序而异 建模师

也就是说,如果您只遵循您或其他人的某些原则,那么所有其他关联都可以绘制为共享聚合。也看看