已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第17章 对象约束语言,17.1 对象约束语言概述 17.2 标准OCL类型 17.3 OCL表达式 17.4 用OCL表达对象性质约束,17.1 对象约束语言概述,对象约束语言简称OCL(Object Constraint Language),它是一种用于施加在指定的模型元素上约束的语言。 OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式、附加在操作和方法上的前置条件和后置条件等。,OCL的产生,OCL的产生是为了解决约束表达的问题。 OCL最初由IBM公司设计成功。 OCL已经为标准化组织OMG所接受,成为了UML标准的一部分。 OCL语言虽然是一种形式化语言,但是它既具有形式化语言无二义性的特点,又消除了形式化语言的复杂性。,OCL的特点,OCL是一种精确的、无二义性的语言,易于使用和掌握。 OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达。 OCL是一种纯表达式语言,它是具有没有任何副作用的声明性语言。对OCL表达式的计算将返回一个值,计算不会改变系统的状态。 OCL是一种类型化语言,即OCL中的每个表达式都是具有类型的。 OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。,17.2 标准OCL类型,OCL预定义的标准类型定义了一组基本类型和集合类型。 OCL的基本类型有“Boolean”、“Integer”、“Real”和“String”等,集合类型包括“Collection”、“Set”、“Bag”和“Sequence”等,这些标准类型是OCL表达式的组成部分。,17.2 标准OCL类型,OCL标准类型的层次结构,17.2 标准OCL类型,17.2.1 OclType类型 17.2.2 OclAny类型 17.2.3 基本类型 17.2.4 集合类型 17.2.5 OCL中的关键字,17.2.1 OclType类型,OclType类型是OCL预定义的和在模型中定义的类型,OclType允许访问模型的元级别。 OclType的操作见表17-1。,7.2.2 OclAny类型,OclType类型是一个模型里所有类型的上级类型。模型里所有的类都继承由OclAny定义的特性。 OclAny的操作见表17-2。,17.2.3 基本类型,OCL定义了很多基本类型,它的基本类型和程序设计语言中的数据类型的含义类似。 OCL还在基本类型上定义了一些操作,这些操作也与程序设计语言中的操作类似。 OCL的基本类型与操作见表17-3。,17.2.4 集合类型,除了基本类型以外,OCL还定义了一些较为高级的标准OCL类型称为集合类型。 集合是成组的对象或元素,可以用来作为表达式计算过程中的结果。 集合类型除了抽象数据类型Collection以外,还有Set(集)、Bag(袋)和序列(Sequence)等。,17.2.4 集合类型,1. Collection 2. Set 3. Bag 4. Sequence,1. Collection,Collection是OCL中所有集合的抽象的上级类型。 定义在Collection上的操作见表17-5。,2. Set,Set是不包括重复元素的对象组,Set中的元素是无序的。 定义在Set上的操作见表17-6。,3. Bag,Bag也是对象组,Bag和Set不同之处在于Bag中可以包含重复元素。 定义在Bag上的操作见表17-7。,4. Sequence,Sequence和Bag相似,也可以包含重复元素,不过Sequence中的元素是有序的。 定义在Sequence上的操作见表17-8。,17.2.5 OCL中的关键字,与程序设计语言一样,OCL也定义了一些关键字。 OCL中的关键字见表17-9。,17.3 OCL表达式,17.3.1 OCL表达式的语法 17.3.2 操作符的优先级,OCL表达式的特点,OCL表达式可以附加在模型元素上。 OCL表达式可以附加在操作上。 OCL表达式可以指定附加在模型元素上的监护条件。 OCL表达式的计算原则是从左到右 OCL表达式既可以使用基本类型又可以使用集合类型。,17.3.1 OCL表达式的语法,OCL表达式的语法用扩展的巴斯科范式(EBNF)定义,在EBNF中: “|”表示选择 “?”表示可选项 “*”表示零次或多次 “”表示一次或多次,17.3.1 OCL表达式的语法,OCL基本表达式的语法用EBNF定义如下: PrimaryExpression:=literalCollection | literal | pathName time Expression ? FeatureCallparameters? | “(“ expression ”)” | ifExpression Literal:= | | “#” timeExpression:=” featrueCallParameters:=”(”(declarator)?(actualParameterList)?”)” ifExpression :=”if” expression “then” expression “else” expression “endif”,17.3.2 操作符的优先级,OCL中的操作符有优先级顺序。 操作符的优先级从高到低见表17-10。 改变操作符的优先顺序可以使用括号。,17.4 用OCL表达对象性质约束,所谓对象性质,就是指一个对象的属性、操作等对象有关的特性,在建模中具体是指定义的模型元素的特性。 OCL表达式可以表达对模型元素性质的约束,常见的使用情况有三种:不变量、前置条件与后置条件和let表达式。,17.4 用OCL表达对象性质约束,17.4.1 不变量 17.4.2 前置条件和后置条件 17.4.3 let表达式与约束,17.4.1 不变量,不变量常用于附加在模型元素上,它规定的约束条件通常需要该模型元素的所有实例都满足。,17.4.2 前置条件和后置条件,OCL表达式附加在操作上可以规定一个前置条件或后置条件。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年上海商学院单招职业技能测试模拟测试卷附答案
- 2026年温州科技职业学院辅导员招聘备考题库附答案
- 2025河南许昌电气职业学院招聘30人备考题库含答案解析(必刷)
- 2025北京怀柔区教育委员会所属事业单位面向应届毕业生招聘教师98人备考题库含答案解析(夺冠)
- 2025年甘肃省定西市陇西县福星中心卫生院高塄分院招聘乡村医生(公共基础知识)综合能力测试题附答案解析
- 浙江国企招聘-2025年杭州市临安区城市发展投资集团有限公司下属子公司公开招聘工作人员1人(公共基础知识)综合能力测试题附答案解析
- 2025吉林省路桥工程(集团)有限公司劳务派遣招聘拟聘用人员考试历年真题汇编带答案解析
- 2025贵州黔东南州贵富建筑工程有限公司招聘2人(公共基础知识)综合能力测试题附答案解析
- 2025山东菏泽市公安局招录警务辅助人员心理素质测评(公共基础知识)综合能力测试题附答案解析
- 2025云南昆明国际会展中心有限公司社会招聘8人(公共基础知识)测试题附答案解析
- 2025新人教版八年级英语上册全册教案教学设计(有教学反思)
- 精神病人冲动护理查房
- 行为金融学全套课件金融市场
- 门诊常见病的健康宣教
- 医疗器械培训试题(含答案)
- 2025年低空经济行业报告:跨境无人机物流航线开通与海关监管机制探讨
- 金店应急预案范本
- 2025年高中音体美考试试题及答案
- 体能训练理论讲解
- 弱电项目安全管理方案
- 厂区驾驶员安全培训试题及答案解析
评论
0/150
提交评论