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