如何在 UML 中对某些关联进行建模?

How to model certain associations in UML?

我应该在 UML class 图中描述电影院、电影和电影发行商之间的以下联系:

  1. 电影发行商将某部电影借给几家电影院。
  2. 电影发行商将某部电影借给某家电影院,但不借给其他电影院。
  3. 最多一个电影发行商将一部电影借给电影院。
  4. 但是不同电影院的电影可以有不同的电影发行商。
  5. 电影发行商可以将多部电影借给同一家电影院。

现在我的 UML 图如下所示:

我从以下陈述中推导出了多重性:

我对陈述 4 非常困惑,我也不确定我对其他陈述的解释。

您可能正朝着多样性的方向前进。但是,您是否发现多个 class 参与同一协会的挑战?

要解决这个问题,您可以:

  • 除了电影、发行商和电影院之外,还引入了第四个模拟租赁的对象。
  • 在已识别的 classes 之间使用三元关联。
  • 使用关联class 来表示三个类别的 pne。但这在这里似乎不合适,因为它不知道电影、电影院和发行商独立于他们的关系而存在。
  • 使用关联 class 来展示租金

编辑

鉴于您的图表,我们首先 ,因为它远非显而易见:

The multiplicity says something about how many times an instance may be present in this associations for any given tuple of linked instances.

让我们依次应用它。这将毫无意外地证实你自己的分析:

  • 对于给定的 Distributor 和给定的 Cinema,可以 0..* Movies 借出。那是 (5).
  • 对于给定的 Cinema 和给定的 Movie,可以有 0..1 Distributor 进行借出。那是 (3)
  • 对于给定的 Movie 和给定的 Distributor,可以借出 1..* Cinema。那就是(1)和(2)。 (这也意味着不借电影是没有意义的)

第 4 项缺失,但这只是其他项的结果。 (4) 表示我们拍摄给定的电影:

  • 没有人说给定的 Movie 只能有一个 Distributor。所以我们可以想象同一部电影有多个发行商的情况,不是吗?
  • 没有人说给定的 Movie 只显示在一个 Cinema 中。所以我们可以想象同一部电影在几家电影院。
  • 两者加在一起,我们有一部电影有几家发行商和几家电影院。
  • 现在没有什么要求一对 Cinema/Distributor 应该只有一个 Movie(否则 Movie 的多重性将是 0..1 而不是 0..*
  • 通过推演,一部电影可以与多家影院和发行商结合,涉及不同的发行商。