Как работают кардинальности и обобщения в UML? - PullRequest
1 голос
/ 19 февраля 2020

Я пытаюсь понять, как кардинальности и отношения работают с обобщением в простых диаграммах классов UML. Вот мой простой пример:

enter image description here

Игроку принадлежит ровно 9 полей, но распределение их не имеет значения (т. Е. 5 конечных полей, 4 стартовых поля или 1 конечное поле и 8 начальных полей). Класс Field является абстрактным. Если бы я смоделировал эту проблему, как показано выше, будет ли у игрока по 9 полей каждого типа? Если да, то как мне смоделировать это правильно?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2020

Ваша модель правильно express подразумевает ваше значение, за исключением того, что вам необходимо добавить ограничение дизъюнктности в вашу сегментацию Endfield-Startfield (называемую "набор обобщения" на языке UML) чтобы убедиться, что поле не может быть одновременно конечным полем и начальным полем.

Начиная с UML 2.5, сегментации по умолчанию перекрываются (и не полностью). См. Также (всегда превосходные) объяснения на uml-diagrams.org , в которых показано, как нарисовать ограничение дизъюнктности.

2 голосов
/ 19 февраля 2020

Если бы я смоделировал эту проблему, как показано выше, будет ли у игрока по 9 полей каждого типа?

не одновременно. В вашей модели Игрок связан с 9 Полями, зная, что каждое Поле является Конечным полем или исключительным Начальным полем (предположим, что нет других классов, наследующих Поле)

Данный экземпляр поля не может быть одновременно конечным полем и начальным полем , иначе это означает, что поля наследуют оба начальное поле и конечное поле (но наследования в обратном направлении)

Соответствующие классы в Java от вашей модели могут быть:

abstract class Field { .... }
class Startfield extends Field { ... }
class Endfield extends Field { .. }

, поэтому Player может быть связан с 9 Конечные поля или исключительные 8 Конечные поля и 1 Начальное поле , или исключительные 7 Конечные поля и 2 Начальное поле , ..., или эксклюзивные 1 Конечное поле и 8 Стартовые поля , или эксклюзивные 9 Стартовые поля

Если вы хотите, чтобы у игрока было 9 Начальные поля и 9 Конечные поля Ваша модель может быть: enter image description here


[править]

Однако, если вы расширяете модель, добавляя другой класс, наследующий Начальное поле и Конечное поле , например:

enter image description here

в случае, если Player связан с 9 Bothfields таким образом, что он также связан с 9 Startfield и 9 Endtfield

Множественность (9) отношения касается Поле , для классов наследования, которое зависит, как вы можете видеть

...