8.5 Intervals
8.5.1 概要
Interval是两个值之间的一个区间,主要用于约束中,来断言一些其它元素具有给定区间中的值。Intervals可以定义在任意的值类型上,但是它们对于作为TimeConstraints和DurationConstraints中一部分的时间和间隔值尤其有用。
8.5.2 抽象语法
图8.4 Intervals
8.5.3 语义
Intervals
Interval是一个通过使用其它两个ValueSpecification(min和max)来定义的ValueSpecification。Interval的计算首先计算组成它的每个Valuespecification,它们每一个都必须产生一个单值。然后Interval的值就是从min值到max值的一个区间——即所有大于等于min值且小于等于max值的值(可能是空集)。注意,尽管从语法上任意类型的Valuespecifications都可以用于min和max,只有在min和max Valuespecifications具有相同的类型且该类型上定义了一个全序的情况下,才算给定了Interval一个标准的语义解释。
Interval有两种特化来和时间约束一块儿使用。TimeInterval指定了由两个TimeExpressions给出的区间。DurationInterval指定了由两个Durations给出的区间。
IntervalConstraint
IntervalConstaint定义了一个其规约由一个Interval所给出的约束(参见7.6 Constraints)。IntervalConstraint断言其受限元素具有约束中的Interval指定区间内的值。如果受限元素具有一个超出此区间的值,那么就违反了该IntervalConstraint。如果任意的受限元素不能解释为具有一个值,或者它们的值与IntervalConstraint给定的区间不是相同类型,那么该IntervalConstraint没有标准的语义解释。
使用IntervalConstraint来指定时间约束有两种特化。TimeConstraint在一个单一受限元素上定义了一个IntervalConstraint,其中的约束Interval是一个TimeInterval。DurationConstraint在一个或两个受限元素上定义了一个IntervalConstraint,其中的约束Interval是一个DurationInterval。如果有两个受限元素,那么所观察到的duration的开始可以在第一个受限元素的一个事件和第二受限元素的一个事件之间。
8.5.4 表示法
Intervals
Interval由使用“..”分隔的两个ValueSpecification的文本表示来表示:
<interval> ::= <min-value> ‘..’ <max-value>
TimeInterval按照Interval的表示法来表示,其中每一个ValueSpecification元素是一个TimeExpression。DurationInterval与之类似,其中的每个ValueSpecification是一个Duration。(TimeExpressions和Durations的概念请参见8.4.4)。
IntervalConstraints
IntervalConstraint表示为它的受限元素的一个标注。可以使用约束(参见7.6.4)的一般性表示外加上述的Interval规约来表示一个IntervalConstraint。下面给出用于TimeConstraints和DurationConstraints的特定表示构造。
一个单一受限元素的TimeConstraint表示为受限元素的图形化表示和TimeConstraint中TimeInterval的文本表示之间的一条小线。DurationConstraint也可以使用与它的受限元素相关联的图形化表示来展示。然而,所使用的表示法是特定于DurationConstraint出现的模型图类型的(Sequence Diagrams的概念请参见17.8,Timing Diagrams的概念请参见17.11)。
8.5.5 示例
图8.5.5展示了一个与一条消息的duration和两个OccurenceSpecifications之间的duration相关的一个DurationConstraint。它还展示了一个与一笑消息的接受相关的TimeConstraint。(可以参见17.2.5)。
图8.5 Example of DurationConstraints and TimeConstraints