Можно ли связать ограничение XOR с другим ограничением XOR в UML? - PullRequest
0 голосов
/ 26 ноября 2018

Вот пример того, что я хочу сделать: допустим, у меня есть 5 классов, я хотел бы выразить ограничение, что у нас может быть экземпляр класса "B" или / и "C", связанный с "A", если это так, у нас не может быть ничего другого, и если у нас нет экземпляра из этих классов, у нас может быть только один экземпляр класса "D" или "E".

enter image description here

Я проверил официальную документацию здесь: https://www.omg.org/spec/UML/2.5.1/ Но часть по ограничению XOR очень ограничена.Поскольку явно не описано , что мы не можем, я предполагаю, что это возможно, но я не уверен.

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

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

Но ...

Семантически, однако, это было бы не очень полезно.Потому что ограничение должно быть правдой.Таким образом, A-D {xor} A-E означает, что существует либо ссылка на D, либо на E, но не обе, но само ограничение всегда будет истинным.Это подразумевает, что нет AC и AB, никогда, так что эти ассоциации совершенно бесполезны.

Самый простой способ - дать имя связанного атрибута каждому из потенциально связанных классов (например, b, c, d, e) и выразить исключения в одном ограничении.

0 голосов
/ 27 ноября 2018

В диаграммах классов UML все виды ограничений могут быть включены в виде инвариантов , которые представляют собой логические условия, которые могут быть выражены либо в простом английском, либо в Object Constraint Language (OCL) в пределах прямоугольника / поля ограничения , который присоединен к классу (или ассоциации).

Ваше ограничение может быть добавлено следующим образом (привязано к вашему классу A), например:

enter image description here

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

...