uml - 如果我在模型中有确切数量的东西,我应该使用 n 还是 *?

标签 uml class-diagram use-case use-case-diagram

我需要为有关游戏(称为 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/

相关文章:

design-patterns - 必须加入 fork 节点吗? UML 状态图

java - 是否有必要在每个类图中添加日志记录和审计

java - 在 UML 中表示关联和继承

java - 根据 API/UML,我的代码的结构/顺序是否正确?

include - UML、包含、扩展关系

uml - 显示除 "<<extend>>"或 "<<include>>"以外的 UML 用例图的依赖关系

uml - 在用例建模中分解 CRUD

android - 序列图 - 友谊请求 FCM

python - UML 图中类的定位

Django项目架构