2015-11-01 6 views
0

Я учусь OCL (с использованием «USE»), у меня вопрос о isUnique() ограничение здесь следующий пример:OCL: выразить ограничение уникальности в более оптимальным образом

  • Мы хотим установить ограничение уникальности числа клиентов через класс полного следующий

    context Client 
    inv NoClientUnique : Client.allInstances -> isUnique(noClient) 
    

, но это выражение далеко от оптимального, так как возможно, что ограничение проверяется повторно. Пожалуйста, кто-нибудь может объяснить мне, когда это так и почему, и, пожалуйста, если вы могли бы дать мне другой способ выразить уникальное ограничение Client.noClient, используя оптимальное. я буду признателен за любую помощь.

ответ

0

OCL - декларативный язык. Поэтому вы выражаете то, что хотите, а не как это сделать. Не имеет смысла обсуждать, насколько оптимальным является выражение OCL, когда оптимальное относится к времени выполнения. Механизм перевода затем должен быть способен преобразовать это декларативное выражение в наиболее эффективный посыльный обход графа объекта для его проверки.

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

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