17--对象约束语言_第1页
17--对象约束语言_第2页
17--对象约束语言_第3页
17--对象约束语言_第4页
17--对象约束语言_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第17章 对象约束语言 17.1 对象约束语言概述17.2 标准OCL类型17.3 OCL表达式17.4 用OCL表达对象性质约束117.1 对象约束语言概述对象约束语言简称OCL(Object Constraint Language),它是一种用于施加在指定的模型元素上约束的语言。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式、附加在操作和方法上的前置条件和后置条件等。 2OCL的产生OCL的产生是为了解决约束表达的问题。OCL最初由IBM公司设计成功。OCL已经为标准化组织OMG所接受,成为了UML标准的一部分。 OCL语言虽

2、然是一种形式化语言,但是它既具有形式化语言无二义性的特点,又消除了形式化语言的复杂性。 3OCL的特点OCL是一种精确的、无二义性的语言,易于使用和掌握。OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达。OCL是一种纯表达式语言,它是具有没有任何副作用的声明性语言。对OCL表达式的计算将返回一个值,计算不会改变系统的状态。OCL是一种类型化语言,即OCL中的每个表达式都是具有类型的。OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。417.2 标准OCL类型OCL预定义的标准类型定义了一组基本类型和集合类型。 OCL的基本类型有“Boolean”、“Intege

3、r”、“Real”和“String”等,集合类型包括“Collection”、“Set”、“Bag”和“Sequence”等,这些标准类型是OCL表达式的组成部分。 517.2 标准OCL类型OCL标准类型的层次结构617.2 标准OCL类型17.2.1 OclType类型17.2.2 OclAny类型17.2.3 基本类型17.2.4 集合类型17.2.5 OCL中的关键字717.2.1 OclType类型OclType类型是OCL预定义的和在模型中定义的类型,OclType允许访问模型的元级别。OclType的操作见表17-1。 87.2.2 OclAny类型OclType类型是一个模型里

4、所有类型的上级类型。模型里所有的类都继承由OclAny定义的特性。OclAny的操作见表17-2。 917.2.3 基本类型OCL定义了很多基本类型,它的基本类型和程序设计语言中的数据类型的含义类似。OCL还在基本类型上定义了一些操作,这些操作也与程序设计语言中的操作类似。 OCL的基本类型与操作见表17-3。1017.2.4 集合类型除了基本类型以外,OCL还定义了一些较为高级的标准OCL类型称为集合类型。集合是成组的对象或元素,可以用来作为表达式计算过程中的结果。集合类型除了抽象数据类型Collection以外,还有Set(集)、Bag(袋)和序列(Sequence)等。1117.2.4

5、集合类型1. Collection 2. Set3. Bag4. Sequence121. Collection Collection是OCL中所有集合的抽象的上级类型。定义在Collection上的操作见表17-5。132. SetSet是不包括重复元素的对象组,Set中的元素是无序的。定义在Set上的操作见表17-6。 143. BagBag也是对象组,Bag和Set不同之处在于Bag中可以包含重复元素。定义在Bag上的操作见表17-7。 154. SequenceSequence和Bag相似,也可以包含重复元素,不过Sequence中的元素是有序的。定义在Sequence上的操作见表17

6、-8。 1617.2.5 OCL中的关键字与程序设计语言一样,OCL也定义了一些关键字。OCL中的关键字见表17-9。 1717.3 OCL表达式 17.3.1 OCL表达式的语法17.3.2 操作符的优先级18OCL表达式的特点OCL表达式可以附加在模型元素上。OCL表达式可以附加在操作上。OCL表达式可以指定附加在模型元素上的监护条件。OCL表达式的计算原则是从左到右OCL表达式既可以使用基本类型又可以使用集合类型。 1917.3.1 OCL表达式的语法OCL表达式的语法用扩展的巴斯科范式(EBNF)定义,在EBNF中:“|”表示选择“?”表示可选项“*”表示零次或多次“”表示一次或多次

7、2017.3.1 OCL表达式的语法OCL基本表达式的语法用EBNF定义如下:PrimaryExpression:=literalCollection | literal | pathName time Expression ? FeatureCallparameters?| “(“ expression ”)” | ifExpressionLiteral:= | | “#” timeExpression:=”featrueCallParameters:=”(”(declarator)?(actualParameterList)?”)”ifExpression :=”if” expressio

8、n “then” expression “else” expression “endif” 2117.3.2 操作符的优先级OCL中的操作符有优先级顺序。操作符的优先级从高到低见表17-10。改变操作符的优先顺序可以使用括号。 2217.4 用OCL表达对象性质约束 所谓对象性质,就是指一个对象的属性、操作等对象有关的特性,在建模中具体是指定义的模型元素的特性。OCL表达式可以表达对模型元素性质的约束,常见的使用情况有三种:不变量、前置条件与后置条件和let表达式。 2317.4 用OCL表达对象性质约束17.4.1 不变量17.4.2 前置条件和后置条件17.4.3 let表达式与约束2417.4.1 不变量不变量常用于附加在模型元素上,它规定的约束条件通常需要该模型元素的所有实例都满足。 2517.4.2 前置条件和后置条件OCL表达式附加在操作上可以规定一个前置条件或后置条件。前置条件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论