【问题标题】:Can this relationship be modelled in UML?这种关系可以在 UML 中建模吗?
【发布时间】:2023-03-10 09:57:01
【问题描述】:

我收到了下面的UML图来实现:

从问题描述我知道

  • 每个 Foo 都完全属于 Block。
  • 每个 Bar 都完全属于 Block。
  • Bar 可以不属于任何一个,一个或多个 Foo 的同一个 Block

UML 图是这样表达的吗?如果不是, 描述的关系如何用 UML 表示?

也就是说:Foo和Bar的关系只能 如果两者都属于同一个块,则存在。有人告诉我, 图中的聚合(菱形)确保这是真的。

我问过another question同样的问题。

【问题讨论】:

  • 可以用组合而不是聚合来表达关系吗?

标签: uml aggregation


【解决方案1】:

你的图表没问题。为了表达 bar 的 Foos 必须在 Bar 的同一个 Block 中的要求,您需要所谓的约束。在 UML 中,约束通常在Object Constraint Language (OCL) 中制定。

你的约束可以这样写:

context Bar
inv: self.foo -> forAll(t |  t.block = self.block)

【讨论】:

  • 那是不是图中的聚合与Foo和Bar的关系没有关系呢? OCL 要求与聚合完全不同且独立于聚合?
【解决方案2】:

http://www.omg.org/spec/UML/2.5/Beta1/PDF/ 第 194 页(在文件 204 中),图 11.5

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多