2

我需要为有关游戏的作业(称为 Downfall)创建 UML 图。我必须创建它,以便它适用于任意数量 (n) 的播放器。

如果这是出现在图表多个位置的确切数字,我应该使用 n 还是 *?我会在多重参数和数组大小中使用它。

例如:有n个边,如果边上有一个表盘,那么那个位置的每一边都必须有一个表盘,所以这个表盘有n-1个相连的表盘。

4

2 回答 2

5

TL;博士

您可以使用常量,例如n. 不过,我建议使用一个不言自明的常量名称,例如numberOfPlayers或至少noOfPlayers让它明显地表明它始终是同一个常量。

常量的名称应不带引号(以将其与双引号中的字符串区分开来)。

您也可以使用表达式 like n-1,只要它始终计算为非负整数即可。


完整解释

让我们看看UML 规范。所有章节和图参考都来自它。

1. 多重性定义 (7.5.3.2)

多重性定义为lowerValue 和upperValue。

MultiplicityElement 的多重性的下限和上限由 ValueSpecifications 指定(参见第 8 条),它必须计算为 lowerBound 的整数值和上界的 UnlimitedNatural 值(参见第 21 条关于原始类型)

2.ValueSpecification定义

ValueSpecification 定义为 LiteralSpecification (8.2) 或 Expression 或 OpaqueExpression(均在 8.3 中描述)。

LiteralSpecification 本质上只是我们感兴趣的案例中的一个数字,所以它不是您需要的。但这并不是 www.admiralalit.nl 在他的回答中建议的唯一选择。

3. 表达式定义(8.3.3.1)

表达式是一种通过一些文本表示和最终计算来提供值的机制(我在这里进行了简化)。例如:

表达式的求值方法是首先计算其每个操作数,然后对结果操作数值执行表达式符号表示的操作

如果你使用一个没有操作数的简单表达式,它就会变成一个常量,作为你的模型的模板。因此,请随意使用常数作为多重性值,只要该常数的计算结果为非负整数(或在上限的情况下为 UnlimitedNatural)。

它甚至可能是一个在对象的生命周期内改变其值的表达式,但是确保始终满足这种多样性可能会变得具有挑战性。

于 2019-11-08T15:23:37.153 回答
1

根据 UML 规范,n在语法上是有效的多重性(参见 Ister 的答案),但为了确保它在语义上也是正确的,您必须定义n某处的含义。通常,n在 UML 图中不用作多重性。

我建议你*在这种情况下使用。如果最少玩家人数为 2,您可以使用2..*.

此外,您可以使用注释或约束,例如{ the number of connected dials is equal to the number of sides minus one }. 您也可以使用正式的约束语言,如 OCL。

于 2019-11-08T13:28:53.473 回答