Я работаю над моделью анализа в UML, и я немного застрял при попытке представить ограничение на пару атрибутов в диаграмме классов. В следующем классе:
+-----------+
| SomeClass |
+-----------+
| isFoo |
| isBar |
| isBaz |
| isQuux |
+-----------+
все перечисленные атрибуты являются логическими типами, а последние два, isBaz
и isQuux
, являются взаимоисключающими. Как мне это указать? Я бы предпочел не использовать специальные заметки - больше беспорядка.
Все, что я могу найти об ограничениях в UML, похоже, применяет их к ассоциациям , а не к атрибутам. Я мог бы разбить атрибуты на связанный класс, но это простые булевы типы, поэтому что-то вроде этого выглядит как избыточное:
+-----------+
| SomeClass |
+-----------+ 0..1 isBaz 1 +-------------------+
| isFoo |------------------| ThereCanBeOnlyOne |
| isBar | | +-------------------+
| | |{NAND} | isBaz |
| |------------------| isQuux |
+-----------+ isQuux +-------------------+
Каков «правильный» способ моделирования взаимоисключающих атрибутов в UML?