概述
对象约束语言是一种形式化语言,它主要用于表示UML中模型上的约束。UML的图形如类图,通常不可能详细地表达系统的各个细节,为了表达这些细节问题,需要为建模对象添加一些约束。这些约束可以使用自然语言来表达,但是自然语言的二义性增加了约束表达的复杂性和不可确定性。为了解决约束表达的问题,对象约束语言OCL应运而生。
OCL最初由IBM公司设计,由JosWarmer和SteveCook等人从一个项目中得到灵感而产生。作为一种业务建模语言的一部分,OCL已经为标准化组织OMG所接受,成为了UML标准的一部分。2
特点OCL具有如下特点:
1、OCL是一种精确的、无二义性的语言,它易于使用和掌握。
2、OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达。
3、OCL是一种纯表达式语言,它是没有任何副作用的声明性语言。对OCL表达式的计算将返回一个值,计算不会改变系统的状态。
4、OCL是一种类型化语言,即OCL中的每个表达式都是具有类型的。
5、OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。2
组成大部分OCL语句都是由如下结构化元素组成的:
1、上下文定义了表达式有效的域,通常是特定类型的实例,例如类图中的对象。链接(即关联的实例)也可能是OCL表达式的上下文。
2、作为表达式上下文的实例的属性,可能包括特性、关联角色和查询操作。
3、应用于属性的OCL操作包括(但是不限于)代数操作符*十、一和/,诸如size、isEmpty和select之类的集合操作符,以及诸如oclIsTypeOf之类的类型操作符。
OCL语句也可以包括关键字,例如逻辑操作符and、or、implies、if,else和not,以及集合操作符in。这些操作符可以用于定义操作特别复杂的前置条件和后置条件。OCL表达式可以规范特性的初始值和派生值,可以用于检查各种操作结果,例如对象是否已经创建,或者在操作执行期间发送的消息。3