Должен ли я использовать n или *, если у меня есть точное количество вещей в модели? - PullRequest
2 голосов
/ 08 ноября 2019

Мне нужно создать UML-диаграммы для домашней работы об игре (называемой Downfall). Я должен создать его так, чтобы он работал на любом числе (n) игрока.

Если это точное число, которое появляется в нескольких местах диаграммы, я должен использовать n или *? Я бы использовал его в параметрах множественности и в размере массива.

Например: Есть n сторон, и если на стороне есть циферблат, то на этой позиции должен быть циферблат с каждой стороны, поэтомуциферблат имеет n-1 подключенных циферблатов.

Ответы [ 2 ]

5 голосов
/ 08 ноября 2019

TL; DR

Вы можете использовать константу, например n. Тем не менее, я бы рекомендовал использовать не требующее пояснений имя константы, такое как numberOfPlayers или, по крайней мере, noOfPlayers, чтобы было очевидно, что это всегда одна и та же константа.

Имя константы должно быть написано без кавычек (чтобы отличить его от строк, которые представлены в двойных кавычках).

Вы также можете использовать выражение типа n-1, если оно все время вычисляется как неотрицательное целое число.


Полное объяснение

Пойдем по спецификации UML . Все ссылки на разделы и рисунки взяты из него.

1. Определение кратности (7.5.3.2)

Кратность определяется как lowerValue и upperValue.

Нижняя и верхняя границы кратности MultiplicityElement определяются посредством ValueSpecifications (см. Раздел 8), который должен принимать значение Integer для lowerBound и значение UnlimitedNatural для upperBound (см. раздел 21 о примитивных типах)

2. Определение ValueSpecification

Значение ValueSpecification определяется либо как LiteralSpecification (8.2), либо Expression или OpaqueExpression (оба описаны в 8.3).

LiteralSpecification по сути является просто числом в интересующем нас случае, поэтомуне то, что вам нужно. Но это не единственный вариант, который предлагает www.admiraalit.nl в своем ответе.

3. Определение выражения (8.3.3.1)

Выражение - это механизм для предоставления значения посредством некоторого текстового представления и, в конечном счете, вычисления (я упрощаю здесь). Например:

Выражение вычисляется путем сначала оценки каждого из его операндов, а затем выполнения операции, обозначенной символом Выражения, с результирующими значениями операнда

Если вы используетепростое выражение без операндов, оно просто становится константой, которая является шаблоном для вашей модели. Поэтому не стесняйтесь использовать константу в качестве значения кратности, пока константа оценивается как неотрицательное целое число (или UnlimitedNatural в случае верхнего предела).

Это может быть даже выражение, которое меняет свое значениев течение жизненного цикла объекта, однако, обеспечение того, что такая множественность встречается постоянно, может стать сложной задачей.

1 голос
/ 08 ноября 2019

В соответствии со спецификацией UML, n является синтаксически допустимой кратностью (см. Ответ Истера), но чтобы убедиться, что это также семантически правильно, вам придется где-то определить значение n. Обычно n не используется как кратность в диаграммах UML.

Я бы посоветовал вам использовать * в этом случае. Если минимальное количество игроков равно 2, вы можете использовать 2..*.

. Кроме того, вы можете использовать примечания или ограничения, например, { the number of connected dials is equal to the number of sides minus one }. Вы также можете использовать язык формальных ограничений, например OCL.

...