UML 三元关联
UML ternary association
我目前在理解 UML 中的三元关联时遇到了一些困难。我得到了二进制的,但我不确定多重性如何在三元上起作用。我正在做我从大学学来的练习题,现在的练习题是这样的:
一个部门可能销售多种产品,但只针对一个市场。在一个市场上,一种产品只能由一个部门销售。
我在不同的来源上读到过我应该如何考虑两者中的一对类我不是想弄清楚它们的多样性,但我的大脑不是在做了。帮我 Overflow Kenobi,你是我唯一的希望。
这个不明确的三元关联只是告诉你有关系
Market
控制Department
-Product
,
Department
控制Market
-Product
和
Product
控制 Department
-Market
.
没有说明单个 classes 如何控制另外两个。
UML 规范没有详细定义三元运算符。因此,使用该元素似乎 风险自负 。你可以责怪 OMG 使用但没有定义它超过
Any Association may be drawn as a diamond (larger than a terminator on a line) with a solid line for each Association memberEnd connecting the diamond to the Classifier that is the end’s type. An Association with more than two ends can only be drawn this way.
以及第 1 页图片中的一个示例。 202.
简单关联class
告诉你 Product
在 Department
和 Market
之间,其中多重性 1
告诉你只有一个 Market
代表 Department
。这更符合您的要求。
N.B。对需求吹毛求疵意义不大,所以"is there a Product
without a Market
"。这些是在模型中修复之前需要与领域专家讨论的细节。
三重关联的多重性规范似乎有些含糊不清。另见 this paper
但我是这样理解的:
多重性说明了对于任何给定的链接实例元组,一个实例可能出现在该关联中的次数。
任何给定的家庭都必须有一个父亲,一个母亲和零个或多个children。
如果我们将其应用于您的案例,那么我会得出这样的结论:
对于任何给定的产品,必须只有一个市场、一个部门和一种或多种产品
这似乎或多或少地满足了您的所有限制条件
- 一种产品只能由一个部门提供给一个市场
- 一个部门可以提供多种产品,但一种产品只能提供给一个市场
虽然我不认为它是防水的,但正如论文已经指出的那样,UML 没有足够的工具来单独在末端进行多重性的防水设计。因此,为了更好的衡量,您的约束也应该建模为 UML 约束。
免责声明:三元关联非常适合学术讨论,但在(IT)行业中并没有真正使用,可能是因为它们太难理解了。
Geert Bellekens 的答案中的模型是正确的,但他的解释令人困惑。三元关联 "Offering" 及其多重性(基数约束)不能用语句
来解释
For any given Offering there must be exactly one market, one department and one or more products
而是通过声明
a combination of department and product is linked to exactly one market
a combination of market and product is linked to exactly one department
三元和更高的关联应该建模符合 ISO 标准,其中拥有端在符号中被反转。
所以对于二进制关联,使用拥有端的正常含义。
如果遇到三元或更高的关联,智能工具应该切换解析模式。
已经证明你可以将一个N元关联拆分成很多个二元关联,所以我们通常会避免这些N元。
我目前在理解 UML 中的三元关联时遇到了一些困难。我得到了二进制的,但我不确定多重性如何在三元上起作用。我正在做我从大学学来的练习题,现在的练习题是这样的:
一个部门可能销售多种产品,但只针对一个市场。在一个市场上,一种产品只能由一个部门销售。
我在不同的来源上读到过我应该如何考虑两者中的一对类我不是想弄清楚它们的多样性,但我的大脑不是在做了。帮我 Overflow Kenobi,你是我唯一的希望。
这个不明确的三元关联只是告诉你有关系
Market
控制Department
-Product
,Department
控制Market
-Product
和Product
控制Department
-Market
.
没有说明单个 classes 如何控制另外两个。
UML 规范没有详细定义三元运算符。因此,使用该元素似乎 风险自负 。你可以责怪 OMG 使用但没有定义它超过
Any Association may be drawn as a diamond (larger than a terminator on a line) with a solid line for each Association memberEnd connecting the diamond to the Classifier that is the end’s type. An Association with more than two ends can only be drawn this way.
以及第 1 页图片中的一个示例。 202.
简单关联class
告诉你 Product
在 Department
和 Market
之间,其中多重性 1
告诉你只有一个 Market
代表 Department
。这更符合您的要求。
N.B。对需求吹毛求疵意义不大,所以"is there a Product
without a Market
"。这些是在模型中修复之前需要与领域专家讨论的细节。
三重关联的多重性规范似乎有些含糊不清。另见 this paper
但我是这样理解的:
多重性说明了对于任何给定的链接实例元组,一个实例可能出现在该关联中的次数。
任何给定的家庭都必须有一个父亲,一个母亲和零个或多个children。
如果我们将其应用于您的案例,那么我会得出这样的结论:
对于任何给定的产品,必须只有一个市场、一个部门和一种或多种产品
这似乎或多或少地满足了您的所有限制条件
- 一种产品只能由一个部门提供给一个市场
- 一个部门可以提供多种产品,但一种产品只能提供给一个市场
虽然我不认为它是防水的,但正如论文已经指出的那样,UML 没有足够的工具来单独在末端进行多重性的防水设计。因此,为了更好的衡量,您的约束也应该建模为 UML 约束。
免责声明:三元关联非常适合学术讨论,但在(IT)行业中并没有真正使用,可能是因为它们太难理解了。
Geert Bellekens 的答案中的模型是正确的,但他的解释令人困惑。三元关联 "Offering" 及其多重性(基数约束)不能用语句
来解释
For any given Offering there must be exactly one market, one department and one or more products
而是通过声明
a combination of department and product is linked to exactly one market a combination of market and product is linked to exactly one department
三元和更高的关联应该建模符合 ISO 标准,其中拥有端在符号中被反转。 所以对于二进制关联,使用拥有端的正常含义。
如果遇到三元或更高的关联,智能工具应该切换解析模式。
已经证明你可以将一个N元关联拆分成很多个二元关联,所以我们通常会避免这些N元。