我有一个名为interval的属性类,我喜欢给这个属性一个最小值和最大值来绑定这个区间,
怎么能代表这个?这可能吗?
答案 0 :(得分:3)
创建一个值类型 - 一个带有«data type»构造型的分类器 - 对于复合类型,然后将其用作属性的类型。
例如,这表示 ClassA 具有 Interval 类型的名为 interval 的公共属性,而 Interval 是具有 min 的公共 min 和 max 属性的值类型:
+----------------+
+-----------------------+ | «data type» |
| ClassA | | Interval |
+-----------------------+ +----------------+
| + interval : Interval | | + min : double |
+-----------------------+ | + max : double |
+----------------+
由于 Interval 是一个值类型,它的标识并不重要,因此它将被 ClassA 中的值保存,并且可能由结构实现(如果目标语言支持值和结构;例如,您不能在Java中使用值类型,因此构造型将按约定实现,因为它适用于Java中的String,因此您必须记住不要在字符串上使用==作为其标识无所谓)。
您可以将«使用»依赖关系从 ClassA 添加到 Interval ,但它是从属性的类型中隐含的,因此它是常见的省略它。
答案 1 :(得分:2)
我主要同意@Pete Kirkham我会使用数据类型而不是分类器与<>刻板印象,但如果我是对的,那就是部分回应。 @Pete Kirkham真正回应了具有最小和最大界限的模型属性,我猜@Chriss仍然想知道如何指定值。 为此你有几种方法(取决于你的意思),你可以:
希望它有所帮助......
答案 2 :(得分:1)
如果您的意思是要对某个值设置限制,则另一个选项是为您的属性指定OCL约束,以限制其可能的值。
context ClassA inv: self.attributeA> = 1和self.attributeA< = 10