Ты смотришь в очень темный угол.Мои первые попытки на самом деле протестировать эту функциональность привели к тому, что я не смог найти инструмент UML, который мог бы нарисовать рис.Как только я понял текст, я понял, что есть много проблем;потенциальный конфликт между двумя различными синтаксисами x [y], усугубляемый коротким замыканием QVTo.Существует проблема с расширением на более чем двоичные ассоциации.Абстрактный синтаксис OCL по-прежнему использует понятия UML 1.x для AssociationEnd, а не свойство UML 2.x.
Следовательно, наблюдаемая вами функциональность является результатом лучших попыток некоторых поставщиков инструментов понять смыслочень неадекватная спецификация.
В MagicDraw вы использовали Dresden OCL, но я понимаю, что MagicDraw переключился на Eclipse OCL, возможно, Classic Eclipse OCL.Похоже, NoMagic весьма сдержанно относится к программному обеспечению с открытым исходным кодом, которое они распространяют.
Для более новой версии Ocl Pivot Eclipse, где я создаю прототипы решений для многих проблем OCL OMG, загрузка UML в Pivot нормализует многие концепции UML, так чтоАссоциации являются избыточными, если только для явной навигации по Ассоциации не требуется, чтобы класс ассоциации был изменен.Классы AssociationClasses нормализованы для классов ассоциации с обычными свойствами для каждой вероятной навигации.
Я думаю, что ваше выражение неверно.
self.C [b] не может быть квалифицированной ассоциацией, поскольку неявная A:Свойство: C не имеет ключа.
self.C [b] может быть неоднозначной навигацией A :: C, где неоднозначность A :: C разрешается выбором противоположного C :: b.Но A :: C не является неоднозначным, и его противоположностью является C :: a.Так что self.C должно быть адекватным, self.C [a] избыточно, self.C [b] неправильно по отношению к b.К сожалению, ваш инструментарий не любит self.C, поэтому ваш инструментарий неисправен.
Я думаю, вам следовало написать self.C.val.mod (2) = 0.
Прописная буква C верна.Строчные буквы были ошибочно предложены OCL <= 2.2 в соответствии с руководством по стилю UML.См. Абзац с отступом в разделе «Отсутствующие конечные имена ассоциации» в 7.5.4 OCL 2.4. </p>