我收到了下面的UML图来实现:
从问题描述中我知道
- 每个 Foo 都完全属于 Block。
- 每个 Bar 都完全属于 Block。
- 一个 Bar 可以不属于同一个 Block的一个或多个 Foo 。
这就是 UML 图所表达的吗?如果不是,那么所描述的关系如何用 UML 来表达?
换句话说:Foo和Bar之间的关系只有在都属于同一个Block的情况下才能存在。有人告诉我,图中的聚合(菱形)确保这是真的。
我问过另一个关于同样问题的问题。
我收到了下面的UML图来实现:
从问题描述中我知道
这就是 UML 图所表达的吗?如果不是,那么所描述的关系如何用 UML 来表达?
换句话说:Foo和Bar之间的关系只有在都属于同一个Block的情况下才能存在。有人告诉我,图中的聚合(菱形)确保这是真的。
我问过另一个关于同样问题的问题。
你的图没问题。为了表达 bar 的 Foos 必须在 Bar 的同一个 Block 中的要求,您需要所谓的约束。在 UML 中,约束通常用对象约束语言(OCL) 来表述。
你的约束可以这样写:
context Bar
inv: self.foo -> forAll(t | t.block = self.block)
http://www.omg.org/spec/UML/2.5/Beta1/PDF/第 194 页(在文件 204 中),图 11.5
另见http://msdl.cs.mcgill.ca/people/tfeng/docs/The%20Unified%20Modeling%20Language%20Reference%20Manual.pdf第 230 页,图 13-70