我有兩個關於同一個UML類圖的問題。第一個是關於如何使用UML本機類型爲模板類建模。第二個是關於如何處理OCL約束中的模板類。具有原生UML類型的模板類和模板類的OCL約束
問題1:模板類
我想用一個模板類的間隔,並使用UML標準的代表。間隔必須可用於整數和浮點數。我迄今發現的最好的方法如下:
的這裏想法是有一個模板類,用參數T
是要麼Integer
和Float
類的父類。
我看到的問題是我需要重新定義UML的基本類型以便對它們進行分組。我想知道是否有一種簡潔的方式來定義模板類,並說T
是integer
或float
(這裏是UML的基元)類型。
問題2:模板類
在我的問題的第二個方面OCL約束的是,我希望能夠添加OCL約束地說,我的時間間隔必須至少包含2個元素。問題在於規則不能相同,這取決於前一個類圖中T
的綁定。
對於浮動:
context Interval
inv : self.supBound > self.infBound
對於整數:
context Interval
inv : (self.infBoundIncluded and self.supBoundIncluded) implies supBound - infBound >= 1
context Interval
inv : (not(self.infBoundIncluded) and self.supBoundIncluded) implies supBound - infBound >= 2
context Interval
inv : (self.infBoundIncluded and not(self.supBoundIncluded)) implies supBound - infBound >= 2
context Interval
inv : (not(self.infBoundIncluded) and not(self.supBoundIncluded)) implies supBound - infBound >= 3
所以,我需要找到OCL的方式說,當T
勢必Integer
一些規則只適用,等人的時候它是綁定到Float
。我不是OCL的專家,我也找不到任何有用的信息,所以我在尋求一些幫助。
在此先感謝,
Bastien。