Для кратности части - если опустить множественность информации в любом месте (состав, агрегация, конец ассоциации, атрибут, часть ...), в соответствии с UML, это означает именно то, что вы не предоставили информацию, она неизвестна или не имеет значения.
Вы можете указать значение по умолчанию для своей модели (сама спецификация языка UML не определяет значение множественности по умолчанию для моделей пользователей). Большинство пользователей UML выбирают значение по умолчанию только одного [1], но я видел другие выбранные значения по умолчанию, например [0 .. *]. Формального определения множественности для модели UML нет, вы должны каким-то образом информировать читателей о своей модели (вводный текст, комментарий и т. Д.).
Если вы сталкиваетесь с моделью, которая не предоставляет эту информацию, самым безопасным предположением является то, что по умолчанию множественность установлена на [1].
С этой точки зрения, я бы предположил, что случай 1 и случай 2 совпадают.
Для состава части - семантика композиции отношений, в соответствии со спецификацией UML, выглядит следующим образом: «композит: Указывает, что свойство агрегируется композитно, т.е. составной объект несет ответственность за существование и хранение (см. определение частей в 11.2.3).) - поэтому это правило применяется к объектам, а не к классам.
Это правда, что все созданные объекты должны подчиняться этому правилу, но это не обязательно означает, что все ваши объекты анимации должны быть составлены в спрайтах. У вас может быть анимация на экране заставки, который не принадлежит ни одному спрайту. С другой стороны, верно, что составные объекты (части) не могут быть составлены в нескольких композиционных объектах (целых) одновременно.
Таким образом, возможные ситуации:
- Множественность 0..1 на конце Sprite композиции - это будет означать, что некоторые анимации являются частью спрайтов. Эти анимации и их жизнь управляются этими спрайтами. Кроме того, в системе могут быть и другие независимые от спрайтов анимации.
- Множественность точно 1 (либо явно, как в случае 2, либо по умолчанию, как, вероятно, для случая 1) - это будет означать, что все экземпляры анимации должны быть частью некоторого спрайта.
- Другие случаи множественности, с верхней границей больше 1 - ну, так как я не могу делиться сложенными частями, семантика композиции запрещает мне иметь более одного экземпляра спрайта на анимацию.
Может быть немного темы замечания в конце:
Настройки кратность к, скажем, 0 .. * на конец спрайта состава будет по-прежнему производит действительный UML (с абстрактной точки зрения синтаксиса). Это не имеет большого смысла, и читатель, вероятно, допустил бы какую-то ошибку, но когда вы подумаете об этом, вы можете создать модель экземпляра, которая будет уважать все структурные и семантические ограничения, просто «не используя» возможность иметь более одного sprite для анимации. Это точно так же, как сказать, что вы хотите, чтобы какое-то число было больше 0 и 10 одновременно. Это не так, просто его можно было уточнить более простым и понятным образом.
Не вариант 1 и вариант 2 одинаковы? Поскольку отсутствие кратности на стороне «SpriteObject» на диаграмме означает, что по умолчанию она равна 1? Предполагая, что автор считал, что множественность «SpriteObject» равна 0 на Option1, я все еще удивляюсь, почему это правильно. Если существует «Анимация», то должно быть, что «SpriteObject» существует тоже (поскольку это «отец»,), и поэтому кратность равна 1, но это не означает, что 'Animation' имеет навигацию к' SpriteObject'. Я новичок в внедрении UML на практике, так что мне не хватает? – Gabrielius
Вариант 1 является неполным. Кратность на концах совокупности обычно равна 1. Но в исключительных случаях она может быть либо 0, либо 1. ('0..1'). Итак: это ничто из перечисленного. [Ссылка: uml-diagrams.org] (http://www.uml-diagrams.org/association.html#aggregation) – Yeo