1

我有一个名为间隔属性的类,我喜欢给这个属性一个最小值和最大值来限制这个间隔,

这怎么能代表?这可能吗?

4

3 回答 3

4

为复合类型创建一个值类型 - 一个具有“数据类型”构造型的分类器,然后将其用作属性的类型。

例如,这表示ClassA有一个名为interval类型的公共属性Interval,而Interval是一个值类型,它具有double类型的公共minmax属性:

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

由于Interval是一种值类型,它的标识并不重要,因此它将由ClassA中的值保存,并且可能由结构实现(如果目标语言支持值和结构;Java 中不能有值类型例如,构造型将按照约定实现,就像 Java 中的 String 一样,因此您必须记住不要在字符串上使用 == ,因为它们的身份无关紧要)。

您可以将一个«uses»依赖项从ClassA放到Interval,但它是属性类型中隐含的,因此通常省略它。

于 2013-02-17T18:07:19.937 回答
2

我大多同意@Pete Kirkham 我会使用数据类型而不是带有 <> 刻板印象的分类器,但如果我是对的,它是部分响应。@Pete Kirkham 真正回应了模型属性如何具有最小和最大界限,我猜@Chriss 仍然想知道如何指定值。为此,您有几种方法(取决于您的意思),您可以:

  1. 为您的属性指定默认值。
  2. 制作了一个对象图,实例化了您的属性,然后指定了值。

希望对您有所帮助...

于 2013-02-17T20:09:09.987 回答
1

如果您的意思是要限制某个值,另一种选择是在您的属性上指定一个OCL约束,以限制其可能的值。

context ClassA inv: self.attributeA >= 1 and self.attributeA <= 10

于 2013-02-20T23:28:02.207 回答