2013-02-17 80 views
1

我有屬性稱爲間隔一類,我喜歡給這個屬性的最小值和最大值,以約束該間隔,爲UML類的屬性指定自定義類型

如何可以表示這?這可能嗎?

+0

你的意思要放置結合上的值的最小值和最大值,或者該值是包含化合物類型最小和最大? – 2013-02-17 18:08:37

+0

嗨@PeteKirkham是的,我的意思是價值是包含最小和最大的複合類型 – Chriss 2013-02-17 18:13:33

回答

3

創建一個值類型 - 與«數據類型»原型分類 - 該化合物的類型,然後將其用作屬性的類型。

例如,這說ClassA的具有稱爲型間隔間隔一個公共屬性,和間隔是具有公共分鐘最大類型的屬性值類型

       +----------------+ 
+-----------------------+  | «data type» | 
|  ClassA   |  | Interval | 
+-----------------------+  +----------------+ 
| + interval : Interval |  | + min : double | 
+-----------------------+  | + max : double | 
           +----------------+ 

作爲間隔是一個值的類型,其身份並不重要,所以它將被保存在類別A中,並且可能會由結構實現(如果目標語言支持值和結構;例如,你不能在Java中使用值類型,所以原型將按照慣例來實現,就像它在Java中的String一樣,所以你必須記住不要在字符串上使用==,因爲它們的身份無關緊要)。

你可以把«使用»依賴從ClassA的間隔,但它是從屬性的類型隱含因此通常忽略它。

+0

謝謝@Pete,你能否澄清一下這些步驟? – Chriss 2013-02-17 18:55:15

2

我大多數人都同意@Pete Kirkham我會用>構造型的數據類型而不是分類器,但如果我是正確的,它是一個部分響應。 @Pete Kirkham真正迴應瞭如何用最小和最大範圍的模型屬性,我猜測@Chriss仍然想知道如何指定值。 爲此,您可以使用多種方法(具體取決於您的意思):

  1. 指定您的屬性的默認值。
  2. 做了一個對象圖,實例化你的屬性,然後指定值。

希望能有助於...

1

如果你的意思是你想提出一個限制值,另一個選擇是指定一個OCL約束在你的屬性,限制其可能的值。

上下文ClassA的INV: self.attributeA> = 1和self.attributeA < = 10

+0

謝謝@Marco Brambilla.should我需要使用約束模型元素添加這條約束,然後將約束鏈接到指定的屬性? – Chriss 2013-02-21 20:47:40

+1

是的,這是一個限制。您可以將其鏈接到課程。請注意,這是一種約束單個值屬性的方法(例如,一個整數)。如果你打算說你的間隔有兩個邊界,並且每個邊界都有一個最大值和最小值(例如,最小值必須包含在0到10之間,最大值在50到100之間),你應該定義一個每個約束。 – 2013-02-22 12:10:56