我需要为有关游戏(称为 Downfall)的家庭作业创建 UML 图。我必须创建它,以便它适用于任意数量 (n) 的玩家。
如果这是出现在图表多个位置的确切数字,我应该使用 n 还是 *?我会在多重参数和数组大小中使用它。
例如:有n个面,如果边上有一个刻度盘,则在该位置每一面都有一个刻度盘,所以这个刻度盘有n-1个相连的刻度盘。
最佳答案
长话短说
你可以使用常量,比如n
。不过,我建议使用一个不言自明的常量名称,例如 numberOfPlayers
或至少使用 noOfPlayers
以表明它始终是相同的常量。
常量的名称应该不带引号(以区别于字符串,后者用双引号引起来)。
您也可以使用像 n-1
这样的表达式,只要它的计算结果始终为非负整数。
完整解释
让我们通过the UML specification .所有章节和图形引用均来自它。
1。多重性定义(7.5.3.2)
重数定义为 lowerValue 和 upperValue。
The lower and upper bounds for the multiplicity of a MultiplicityElement are specified by ValueSpecifications (see Clause 8), which must evaluate to an Integer value for the lowerBound and an UnlimitedNatural value for the upperBound (see Clause 21 on Primitive Types)
2。值规范定义
ValueSpecification 定义为 LiteralSpecification (8.2) 或 Expression 或 OpaqueExpression(均在 8.3 中描述)。
LiteralSpecification 本质上只是我们感兴趣的大小写中的一个数字,因此它不是您所需要的。但这并不是 www.admiraalit.nl 在他的回答中建议的唯一选择。
3。表达式定义(8.3.3.1)
表达式是一种通过一些文本表示和最终计算提供值的机制(我在这里进行了简化)。例如:
An Expression is evaluated by first evaluating each of its operands and then performing the operation denoted by the Expression symbol to the resulting operand values
如果您使用不带操作数的简单表达式,它只会变成一个常量,即您模型的模板。因此,只要常量的计算结果为非负整数(或在上限的情况下为 UnlimitedNatural),请随意使用常量作为多重值。
它甚至可能是一个在对象的生命周期内改变其值的表达式,但是确保始终满足这种多样性可能会变得具有挑战性。
关于uml - 如果我在模型中有确切数量的东西,我应该使用 n 还是 *?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58766923/