Множественность ассоциаций UML - PullRequest
16 голосов
/ 11 марта 2012

У меня есть вопрос об ассоциациях, а точнее, я задаюсь вопросом о множественности, я понимаю их, но, например, если бы я имел:

 ---------            ---------
|         |1      *  |         |
|CLASS    |----------| STUDENT |
|         |          |         |
 ---------            ---------

доза, означающая, что в ЛЮБУЮ точку во время существования системы в классе должен быть назначен как минимум 1 ученик, или это кратность должна быть истинной, если система работает нормально.

Я задаю этот вопрос, потому что я задавался вопросом о моменте создания объекта. Сначала мы создаем пустой класс, затем заполняем его учениками. В течение некоторого времени класс пуст, но только во время создания и заполнения, тогда у него есть хотя бы один студент. Потому что, если бы я изменил 1 на 0..1, это означало бы, что может быть пустой класс, это не ложь (этот момент заполнения), но позже я не хочу разрешать занятия без учеников.

РЕДАКТИРОВАТЬ: изменил 0 .. * на 0..1, должно быть, как сейчас, извините за путаницу.

Ответы [ 3 ]

11 голосов
/ 11 марта 2012

доза, означающая, что в ЛЮБУЮ точку во время существования системы в классе должен быть назначен как минимум 1 ученик, или это кратность должна быть истинной, если система работает нормально.

Это хороший вопрос. Это означает, что когда система находится в стабильном состоянии, каждый студент ДОЛЖЕН быть связан ровно с одним классом. Это, в свою очередь, поднимает другой вопрос: что представляет собой «стабильное государство»? UML вообще не формализует это. Интуитивно, это означает, что когда нет никакой активности, которая активно меняет состояние. Некоторые профили UML более строгие. Например, исполняемый UML говорит, что система может нарушать ограничения количества элементов во время выполнения действия состояния. Однако, когда действие состояния завершается, оно должно оставить систему в действительном состоянии, то есть, когда все ограничения мощности выполнены.

Базы данных дают хорошую аналогию здесь. Ограничения БД (например, не нулевые и внешние ключи) должны сохраняться, когда система стабильна. Во время выполнения транзакции ограничения могут быть временно нарушены. Однако, когда транзакция завершается, она должна оставить БД в допустимом состоянии.

Итак, для вашего примера, как показано:

  • Допустимо, чтобы класс существовал без учеников, когда система стабильна (* говорит, что 0 или больше - значит, в классе не должно быть учеников)
  • Недопустимо, чтобы Студент существовал без назначения в Класс, если система стабильна («1» означает ровно один). Таким образом, независимо от того, что создает «транзакция», Студент должен также связать Студента с Классом.

НТН.

1 голос
/ 11 марта 2012

доза, означающая, что в ЛЮБУЮ точку во время существования системы в классе должен быть назначен хотя бы 1 ученик

Это означает, что для нескольких учеников назначен ровно один класс.

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

0..1      *  
-----------

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

0 голосов
/ 11 марта 2012

Нет, * не означает, что в каждом классе есть хотя бы один ученик. Но в другом направлении, от ученика к классу, множественность означает, что любой ученик находится в точно одном классе.

По причинам моделирования вы можете изменить кратность 1 также на *, но это зависит от вашего контекста.

...