Соотношение множественности для диаграммы UML

Итак, у меня есть этот вопрос, который я застрял в течение некоторого времени. Я должен нарисовать отношения, основанные на некоторых бизнес-правилах, а также на множителях. Вопрос в следующем:

В фильме одна звезда, две коллеги или более 10 человек, которые смотрят вместе. Звезда должна быть хотя бы в одном фильме.

Я получил эти отношения до сих пор,

Кино ----------------------------1..* Звезда

Какой должна быть множественность отношений между фильмом и звездой? Я знаю, что это что-то вроде 1..2 или 11..*

Могу ли я объединить эти 2, чтобы получить кратность 1..2..11..*?

Помощь будет оценена.

Спасибо!

1 ответ

Выдержка из формальной спецификации UML:

"Множественность - это определение включающего интервала неотрицательных целых чисел, начинающегося с нижней границы и заканчивающегося (возможно, бесконечной) верхней границей".

Таким образом, вы можете иметь только один непрерывный сегмент как кратность.

В вашем случае я бы использовал 0.. * на обоих концах и указывал бы эти специальные ограничения отдельно. Вы можете указать их более или менее формально. Некоторые идеи:

  • формальный способ: использование предварительных условий, постусловий и инвариантов, в конечном итоге в OCL (пожалуйста, Google эти условия, если хотите)
  • неформальный способ: использование простых текстовых заметок или описаний классов / методов.

Эта логика может быть далее реализована в методе Movie, таком как addStars(Star[]), для его централизации. Однако есть много правильных решений.

Может быть, вы заметили, что я рекомендовал 0.. * вместо 1.. *. Это всего лишь предложение, которое приведет к гораздо более гибкому решению. Нижняя граница 1 слишком ограничительна и должна использоваться только тогда, когда это действительно необходимо (например, родитель-ребенок может быть рожден, ребенок не может родиться без родителя). Его значение 1 на конце звезды будет означать, что по крайней мере 1 звезда должна быть связана с фильмом в процессе его создания! Я нахожу это довольно уродливым. Что если в системе еще не создано ни одной звезды?

Что, если фильм создается в виде списка желаний, или состав во время создания просто неизвестен? Что если в фильме просто нет звезд?:)

Оставив обе границы на 0, вы можете создавать фильмы и запускать независимо друг от друга. Вы всегда можете связать их позже, делая вашу систему намного более гибкой и удобной.

Другие вопросы по тегам