2013-02-17 106 views
1

我有属性称为间隔一类,我喜欢给这个属性的最小值和最大值,以约束该间隔,为UML类的属性指定自定义类型

如何可以表示这?这可能吗?

+0

你的意思要放置结合上的值的最小值和最大值,或者该值是包含化合物类型最小和最大? – 2013-02-17 18:08:37

+0

嗨@PeteKirkham是的,我的意思是价值是包含最小和最大的复合类型 – Chriss 2013-02-17 18:13:33

回答

3

创建一个值类型 - 与«数据类型»原型分类 - 该化合物的类型,然后将其用作属性的类型。

例如,这说ClassA的具有称为型间隔间隔一个公共属性,和间隔是具有公共分钟最大类型的属性值类型

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

作为间隔是一个值的类型,其身份并不重要,所以它将被保存在类别A中,并且可能会由结构实现(如果目标语言支持值和结构;例如,你不能在Java中使用值类型,所以原型将按照惯例来实现,就像它在Java中的String一样,所以你必须记住不要在字符串上使用==,因为它们的身份无关紧要)。

你可以把«使用»依赖从ClassA的间隔,但它是从属性的类型隐含因此通常忽略它。

+0

谢谢@Pete,你能否澄清一下这些步骤? – Chriss 2013-02-17 18:55:15

2

我大多数人都同意@Pete Kirkham我会用>构造型的数据类型而不是分类器,但如果我是正确的,它是一个部分响应。 @Pete Kirkham真正回应了如何用最小和最大范围的模型属性,我猜测@Chriss仍然想知道如何指定值。 为此,您可以使用多种方法(具体取决于您的意思):

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

希望能有助于...

1

如果你的意思是你想提出一个限制值,另一个选择是指定一个OCL约束在你的属性,限制其可能的值。

上下文ClassA的INV: self.attributeA> = 1和self.attributeA < = 10

+0

谢谢@Marco Brambilla.should我需要使用约束模型元素添加这条约束,然后将约束链接到指定的属性? – Chriss 2013-02-21 20:47:40

+1

是的,这是一个限制。您可以将其链接到课程。请注意,这是一种约束单个值属性的方法(例如,一个整数)。如果你打算说你的间隔有两个边界,并且每个边界都有一个最大值和最小值(例如,最小值必须包含在0到10之间,最大值在50到100之间),你应该定义一个每个约束。 – 2013-02-22 12:10:56