如何在OCL中定义新数据类型? (例子 - 日期)
OCL已经有预定义的类型(整数,字符串,实数和布尔值)。但是如何定义新的数据类型呢?
示例:我有一个类调用Person。 Person类具有以下属性, name:String 年龄:整数 生日:日期
答案 0 :(得分:1)
在OCL表达式中,它们始终附加到形成其上下文的UML模型(通常是类模型),您可以使用模型中定义的类型。例如,在类模型中,您可以定义数据类型Date
,然后可以在OCL表达式中使用Date
。
答案 1 :(得分: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中显示某些条件的注释,应用声明的新类型。