2015-11-01 59 views
0

我學習OCL的唯一約束(使用「USE」),我有一個關於isUnique設置(問題),這裏的約束是下面的例子:OCL:表達更優化的方式

  • 我們希望通過類全面建立以客戶號的唯一約束如下

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

,但這種表達是遠遠沒有達到最佳,因爲它是可能的約束被反覆驗證。請任何人都可以解釋我這是什麼情況,爲什麼,如果你能給我另一種方式來表達Client.noClient使用最優化的獨特約束。我會很感激任何幫助。

回答

0

OCL是一種聲明性語言。因此,你表達你想要發生的事情,而不是如何去做。討論在優化執行時間時如何優化OCL表達式是沒有意義的。然後,翻譯引擎應該能夠將此聲明式表達式轉換爲對象圖的最有效的命令遍歷,以便對其進行驗證。