面向对象分析与设计
上QQ阅读APP看书,第一时间看更新

2.7.3 OCL类型与操作

OCL数据类型分为预定义的基本数据类型、集合类型和用户自定义数据类型三种情况。

1.基本数据类型

OCL基本数据类型包括整数(Integer)、布尔(Boolean)、实数(Real)和字符串(String)等数据类型,这些类型独立于任何对象模型,也是对象约束语言的基本组成部分,适用于任何UML模型。

OCL的基本数据类型的相关运算符及取值的例子如表2-2所示。

表2-2 OCL基本类型及其运算符

2.集合类型(Collection)

OCL定义了Set、Bag、Sequence三种具体的集合类型,它们都是抽象集合类型(Collection)的子类型,Collection类型包含了对所有集合都通用的操作。图2-27描述了OCL集合类型之间的关系。

图2-27 OCL集合类型

其中,Collection是抽象的集合类型,用于定义所有集合类型的公共属性和公共操作。Bag是无序集合类型,可以包含重复元素。Set类型表示一个无序集合,但其元素不允许重复。Sequence则表示一个既有序,又可以包含重复元素的集合。

表2-3列出了集合类型的主要操作。

表2-3 集合类型的主要操作

需要注意的是,抽象集合类型的操作对其所有子类型都是适用的;同时,没有哪个操作可以更改集合的内容,如Append操作虽然返回一个添加了某个元素的新集合,但它并不更改原有集合的内容。

在一般情况下,可以将UML类图中的关联视为Set类型的集合,有序关联可以当作是一个Sequence类型的集合。

3.用户自定义数据类型

用户在UML模型中定义的任何一种类型(如用户定义的类等)均可以看成是OCL的用户定义数据类型。UML模型中定义的大多数据类型或符号均出现在OCL表达式中,它们或者作为OCL类型,或者作为OCL变量。