欢迎来到天天文库
浏览记录
ID:40839090
大小:208.00 KB
页数:27页
时间:2019-08-08
《chapter17对象约束语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第17章对象约束语言17.1对象约束语言概述17.2标准OCL类型17.3OCL表达式17.4用OCL表达对象性质约束17.1对象约束语言概述对象约束语言简称OCL(ObjectConstraintLanguage),它是一种用于施加在指定的模型元素上约束的语言。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式、附加在操作和方法上的前置条件和后置条件等。OCL的产生OCL的产生是为了解决约束表达的问题。OCL最初由IBM公司设计成功。OCL已经为标准化组织OMG所接受,成为
2、了UML标准的一部分。OCL语言虽然是一种形式化语言,但是它既具有形式化语言无二义性的特点,又消除了形式化语言的复杂性。OCL的特点OCL是一种精确的、无二义性的语言,易于使用和掌握。OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达。OCL是一种纯表达式语言,它是具有没有任何副作用的声明性语言。对OCL表达式的计算将返回一个值,计算不会改变系统的状态。OCL是一种类型化语言,即OCL中的每个表达式都是具有类型的。OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。17.2标准OCL类型OCL预定义的标准类
3、型定义了一组基本类型和集合类型。OCL的基本类型有“Boolean”、“Integer”、“Real”和“String”等,集合类型包括“Collection”、“Set”、“Bag”和“Sequence”等,这些标准类型是OCL表达式的组成部分。17.2标准OCL类型OCL标准类型的层次结构17.2标准OCL类型17.2.1OclType类型17.2.2OclAny类型17.2.3基本类型17.2.4集合类型17.2.5OCL中的关键字17.2.1OclType类型OclType类型是OCL预定义的和在模型中定义的类型,OclTyp
4、e允许访问模型的元级别。OclType的操作见表17-1。7.2.2OclAny类型OclType类型是一个模型里所有类型的上级类型。模型里所有的类都继承由OclAny定义的特性。OclAny的操作见表17-2。17.2.3基本类型OCL定义了很多基本类型,它的基本类型和程序设计语言中的数据类型的含义类似。OCL还在基本类型上定义了一些操作,这些操作也与程序设计语言中的操作类似。OCL的基本类型与操作见表17-3。17.2.4集合类型除了基本类型以外,OCL还定义了一些较为高级的标准OCL类型称为集合类型。集合是成组的对象或元素,可以
5、用来作为表达式计算过程中的结果。集合类型除了抽象数据类型Collection以外,还有Set(集)、Bag(袋)和序列(Sequence)等。17.2.4集合类型1.Collection2.Set3.Bag4.Sequence1.CollectionCollection是OCL中所有集合的抽象的上级类型。定义在Collection上的操作见表17-5。2.SetSet是不包括重复元素的对象组,Set中的元素是无序的。定义在Set上的操作见表17-6。3.BagBag也是对象组,Bag和Set不同之处在于Bag中可以包含重复元素。定义在
6、Bag上的操作见表17-7。4.SequenceSequence和Bag相似,也可以包含重复元素,不过Sequence中的元素是有序的。定义在Sequence上的操作见表17-8。17.2.5OCL中的关键字与程序设计语言一样,OCL也定义了一些关键字。OCL中的关键字见表17-9。17.3OCL表达式17.3.1OCL表达式的语法17.3.2操作符的优先级OCL表达式的特点OCL表达式可以附加在模型元素上。OCL表达式可以附加在操作上。OCL表达式可以指定附加在模型元素上的监护条件。OCL表达式的计算原则是从左到右OCL表达式既可以
7、使用基本类型又可以使用集合类型。17.3.1OCL表达式的语法OCL表达式的语法用扩展的巴斯科范式(EBNF)定义,在EBNF中:“
8、”表示选择“?”表示可选项“*”表示零次或多次“+”表示一次或多次17.3.1OCL表达式的语法OCL基本表达式的语法用EBNF定义如下:PrimaryExpression:=literalCollection
9、literal
10、pathNametimeExpression?FeatureCallparameters?
11、“(“expression”)”
12、ifExpressionLiteral:=13、ng>14、15、“#”timeExpression:=”@”featrueCallParameters:=”(”(declarator)?(actualParameterList)?”)
13、ng>
14、
15、“#”timeExpression:=”@”featrueCallParameters:=”(”(declarator)?(actualParameterList)?”)
此文档下载收益归作者所有