Моделирование уникальных отношений в диаграммах классов UML

Этот вопрос о диаграммах классов UML на этапе анализа. Я сделал минимальный пример для иллюстрации:

Диаграмма UML

Билет действителен на одно место и один конкретный семинар. Место может быть назначено нескольким билетам, но только одной уникальной комбинации билет / семинар. (То же самое касается семинара и уникальной комбинации билет / место.)

Диаграмма не отражает это. Я пометил неправильные кратности красным.

Какие варианты (чем больше, тем лучше) вы знаете, чтобы правильно смоделировать требование?

3 ответа

Решение

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

Формально кратности, отмеченные красным, верны. Место видит более одного билета, только на разные семинары, и наоборот.

Поэтому единственное решение, которое я могу предложить, - включить требование в текстовую спецификацию этих отношений. Это неплохо, так как любой конечный набор графических символов может выражать только подмножество всех возможных требований.

Билет может быть ассоциативным классом между местом и семинаром. Или просто используйте OCL, чтобы выразить это ограничение

"Вы также не можете выразить, что из экземпляра заявки билет пути -> место -> место проведения семинара должен вести к тому же экземпляру, что и билет -> семинар -> местоположение семинара"

1) OCL - контекстная заявка inv: semin.seminarLocation = seat.seminarLocation

2) перетянуть Seat, Seminar и Ticket класса ассоциации между Seat и Seminar - в SeminarLocation(рисунок 13-70 http://msdl.cs.mcgill.ca/people/tfeng/docs/The%20Unified%20Modeling%20Language%20Reference%20Manual.pdf или Рисунок 14-84 http://www.utdallas.edu/~chung/Fujitsu/UML_2.0/Rumbaugh--UML_2.0_Reference_CD.pdf)

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