2014-10-11 69 views
2

如何在OCL中定義新的數據類型? (示例 - 日期)在OCL中定義數據類型

OCL已經具有預定義的類型(整數,字符串,實數&布爾值)。但我怎樣才能定義一個新的數據類型?

例如:我有一個類調用Person。 Person類具有以下屬性, 名稱:字符串 年齡:整數 生日:日期

回答

1

在OCL表達式,它們總是連接到一個UML模型(通常是一類模型)形成的情況下,你可以使用類型在模型中定義。例如,在類模型中,您可以定義數據類型Date,然後可以在您的OCL表達式中使用Date

+0

我使用USE:基於UML的規範環境來使用OCL對設計進行建模和驗證。我無法在USE中找到在UML模型中定義新類型的方法。如果你能給我一些準則來定義USE中的新類型,我將非常感激。 – 2014-10-14 19:34:51

+0

@RumeshKavinda USE是德國不來梅大學發明的奇怪工具。該工具不支持標準的UML類建模,也不支持標準的UML交換數據格式* .xmi。您可以嘗試通過在自述文件中列出的聯繫地址發送郵件或在工具支持論壇上發佈問題獲得一些支持 - http://sourceforge.net/p/useocl/discussion/928881/ – xmojmr 2014-10-15 08:27:36

1

(+1)對於一個有效的問題,我沒有看到誰沒有指出原因而放置了「-1」。

OCL & UML用於放置。新的數據類型不是直接在OCL中定義的,而是在UML中首先定義的。稍後,您在OCL中使用了新的聲明數據類型。

枚舉值是聲明新數據類型的示例。

支持您正在爲車輛軟件建模。您描述的車輛, 有一個電機,並且,每個電機有一個「狀態」或「狀態」。

電機的狀態受限於枚舉,一組值。

在U.M.L.類圖中,將新狀態描述爲框 類似於類,具有值,並且可以具有其他類, 引用這種新類型。

.................................................................... 
..+----------------------+.........+-----------------------------+.. 
..|  <<enum>>  |.........|   <<class>>   |.. 
..| EngineStatusEnum |.........|   MotorClass   |.. 
..+----------------------+.........+-----------------------------+.. 
..| * Unknown   +---------+ [+] EngineStatusEnum Status |.. 
..| * Stopped   |.........| [+] ... other members  |.. 
..| * Running   |.........+------------+----------------+.. 
..| * Testing   |......................|................... 
..| * Damaged   |......................|................... 
..+----------------------+.........+--------------+---------\--+.... 
...................................|       \ |.... 
...................................| (Status <= Stopped &&) \|.... 
...................................| (Status >= Running)  |.... 
...................................|       |.... 
...................................+---------------------------+.... 
.................................................................... 

而且,在OCL中顯示一些條件的註釋應用了聲明的新類型。