2015-01-04 7 views
1

Совершенно новый для OCL, спасибо за помощь.OCL Стереотип Ограничение: Любая ассоциация, окрашенная всеми связанными классами, имеет один и тот же цвет

Так что есть профиль с стереотипами, как показаны:

Profile

Может кто-нибудь сказать мне, как написать инвариантное ограничение: любая ассоциация, которая окрашена означает, что все связанные классы должны иметь одинаковые значение цвета в их цветовом свойстве?

Я это до сих пор:

Context UML::InfrastructureLibrary::Core::Constructs::Association 
inv: Association.allInstances() -> forAll(a:Association|a.oclIsTypeOf(Coloured) implies 
    a.associatedElement.colour = a.colour) 

Довольно уверен, что это неправильно, потому что a.associatedElement не существует .. но я не понимаю, как получить доступ к этому «и все связанные классы» или что это значит. Возможно, мне нужно что-то вроде

a.[association].colour?

Благодаря

ответ

1

Из UML спецификации (2.4.1 Надстройки, п 7.3.3.):

memberEnd: Недвижимость [2 .. *] Каждый конец представляет участие экземпляров классификатора подключен к концу в ссылках ассоциации. Это упорядоченная ассоциация. Подмножества: пространство имен :: member.

Так, что-то вроде этого:

(...) -> forAll(a:Association|a.oclIsTypeOf(Coloured))->forAll(memberEnd->colour() = a.colour) 

Я сомневаюсь, что это точное утверждение, но это должно вам начать работу в правильном направлении.

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

 Смежные вопросы

  • Нет связанных вопросов^_^