




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对象约束语言,1对象约束语言概述2标准OCL类型3OCL表达式4用OCL表达对象性质约束,1,.,1对象约束语言概述,对象约束语言(ObjectConstraintLanguage),简称OCL,是一种指示用户建模系统中的限制方式。它是UML可选的附加内容,可以用来更好地定义对象的行为,并为任何类元指定约束。在对象约束语言中,对象代表了系统的组件,它定义了完善的项目,约束代表限制,而语言并非是指一种正式的计算机语言。,2,.,1对象约束语言概述,OCL是一种形式语言,可以应用于任何实现方式的非正规语言。对象约束语言对UML中图形或其他组件都没有控制权,它只是在使用时返回值。OCL并不能修改对象的状态,而是用来指示对状态的修改何时发生。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式、附加在操作和方法上的前置条件和后置条件等。,3,.,OCL的产生,OCL的产生是为了解决约束表达的问题。OCL最初由IBM公司设计成功。OCL已经为标准化组织OMG所接受,成为了UML标准的一部分。OCL语言虽然是一种形式化语言,但是它既具有形式化语言无二义性的特点,又消除了形式化语言的复杂性。,4,.,OCL的特点,OCL是一种精确的、无二义性的语言,易于使用和掌握。OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达。OCL是一种纯表达式语言,它是具有没有任何副作用的声明性语言。对OCL表达式的计算将返回一个值,计算不会改变系统的状态。OCL是一种类型化语言,即OCL中的每个表达式都是具有类型的。OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。,5,.,UML图(例如类图)通常不够精细,无法提供与规范有关的所有相关部分。这其中就缺少描述模型中关于对象的附加约束。这些约束常常用自然语言描述。而实践表明,这样做经常造成歧义。为了写出无歧义的约束,已经开发出几种所谓的“形式语言”。传统上的形式语言,缺点是仅适合于有相当数学背景的人员,而普通商务或系统建模者则难以使用。OCL的出现解决了这一问题,它是一种保留了易读易写特点的形式语言。OCL不仅用来写约束,还能够用来对UML图中的任何元素写表达式。每个OCL表达式都能指出系统中的一个值或者对象。OCL表达式能够求出一个系统中的任何值或者值的集合,因此它具有了和SQL同样的能力,由此也可得知OCL既是约束语言,同时也是查询语言。,6,.,2标准OCL类型,OCL预定义的标准类型定义了一组基本类型和集合类型。OCL的基本类型有“Boolean”、“Integer”、“Real”和“String”等,集合类型包括“Collection”、“Set”、“Bag”和“Sequence”等,这些标准类型是OCL表达式的组成部分。,7,.,2标准OCL类型,OCL标准类型的层次结构,8,.,2标准OCL类型,2.1OclType类型2.2OclAny类型2.3基本类型2.4集合类型2.5OCL中的关键字,9,.,2.1OclType类型,OclType类型是OCL预定义的和在模型中定义的类型,OclType允许访问模型的元级别。OclType的操作见表1。,10,.,2.2OclAny类型,OclType类型是一个模型里所有类型的上级类型。模型里所有的类都继承由OclAny定义的特性。OclAny的操作见表2。,11,.,OclVoid类型是与所有其他类型相一致的一种类型,它只有一个叫OclUndefined的实例,应用于未定义类型的任何特性调用,除了oclIsUndefined()返回“真”,其他都会产生OclUndefined。colIsUndefined():Boolean如果对象与OclUndefined相同,那么oclIsUndefined()的计算结果为“真”。OclAny类型是一个UML模型里所有类型和OCL标准库的父类,它包括了诸多子类例如Real、Boolean、Sring、OclState和Integer等,如图13-3所示。模型里所有的子类都继承由OclAny定义的特性。下面是对所有OclAny中操作的描述。=(object:OclAny):Boolean如果self与object是同一对象,则返回值为“真”。post:result=(self=object)(object:OclAny):Boolean如果self是一个与object不同的对象,则返回值为“真”。pre:result=(selfobject),12,.,2.3基本类型,OCL定义了很多基本类型,它的基本类型和程序设计语言中的数据类型的含义类似。OCL还在基本类型上定义了一些操作,这些操作也与程序设计语言中的操作类似。OCL的基本类型与操作见表3。,13,.,2.4集合类型,除了基本类型以外,OCL还定义了一些较为高级的标准OCL类型称为集合类型。集合是成组的对象或元素,可以用来作为表达式计算过程中的结果。集合类型除了抽象数据类型Collection以外,还有Set(集)、Bag(袋)、OrderedSet(有续集)和序列(Sequence)等。,14,.,2.4集合类型,1.Collection2.Set3.OrderedSet4.Bag5.Sequence,15,.,1.Collection,Collection是OCL中所有集合的抽象的上级类型。定义在Collection上的操作见表5。,16,.,2.Set,Set是不包括重复元素的对象组,Set中的元素是无序的。定义在Set上的操作见表6。,17,.,3.OrderedSet,OrderedSet是不包括重复元素的对象组,OrderedSet中的元素是有序的。,18,.,4.Bag,Bag也是对象组,Bag和Set不同之处在于Bag中可以包含重复元素。定义在Bag上的操作见表7。,19,.,5.Sequence,Sequence和Bag相似,也可以包含重复元素,不过Sequence中的元素是有序的。定义在Sequence上的操作见表8。,20,.,6.Collection上的操作,为了便于操作集合,OCL加定义了一些操作,这里只给出一些常用且重要的操作来示例,更多具体的操作会在OCL的标准库中介绍。操作如下所示:select按照一定的规则选择选取符合规则的项,组成一个新的集合。reject从集合中选择不满足规则的项,组成一个新的集合。forAll指定一个应用于集合中每个元素的约束。exists确定某个值是否存在于集合中的至少一个或多个成员中。isEmpty操作判断集合中是否有元素。count判断集合中等于count参数的元素个数,并返回该数值。iterate访问集合中的每个成员,对每个元素进行查询和计算。,21,.,7.使用消息,OCL支持对已有操作的访问,也就是说OCL可以操作信号和调用信号,来发送消息。针对信号的操作,OCL提供了三种机制:第一种机制“”“”为hasBeenSent已经发送的消息。该符号表示指定对象已经发送了指定的消息。第二种机制OclMessageOclMessage是一种容器,用于容纳消息和提供对其特征的访问。第三种机制“”它是已发送符号“”的增强形式,允许访问已经发送消息的集合,所有的消息被容纳在OclMessage中。,22,.,8.元组(Tuple),元组是对一组数据元素,如文件中的一个记录或数据库中的一行等内容的定义,每个元素被赋予名称和类型。元组可以使用字符或基于表达式的赋值来创建。在OCL中,元组是使用被花括号包围的一系列“名称-类型”对和可选值来定义的,其定义形式如下所示:Tuplename:String=Jim,age:Integer=23元组只是将一组值集合在一起的一种途径,然后元组必须被赋予一个变量。以下表达式使用def表达式来创建一个代理类元上下文内叫sales的新属性。,23,.,2.5OCL中的关键字,与程序设计语言一样,OCL也定义了一些关键字。OCL中的关键字见表9。,24,.,3OCL表达式,3.1OCL表达式的语法3.2操作符的优先级,25,.,OCL表达式的特点,OCL表达式可以附加在模型元素上。OCL表达式可以附加在操作上。OCL表达式可以指定附加在模型元素上的监护条件。OCL表达式的计算原则是从左到右OCL表达式既可以使用基本类型又可以使用集合类型。,26,.,3.1OCL表达式的语法,OCL表达式的语法用扩展的巴斯科范式(EBNF)定义,在EBNF中:“|”表示选择“?”表示可选项“*”表示零次或多次“”表示一次或多次,27,.,3.1OCL表达式的语法,OCL基本表达式的语法用EBNF定义如下:PrimaryExpression:=literalCollection|literal|pathNametimeExpression?FeatureCallparameters?|“(“expression”)”|ifExpressionLiteral:=|“#”timeExpression:=”featrueCallParameters:=”(”(declarator)?(actualParameterList)?”)”ifExpression:=”if”expression“then”expression“else”expression“endif”,28,.,3.2操作符的优先级,OCL中的操作符有优先级顺序。改变操作符的优先顺序可以使用括号。,29,.,4用OCL表达对象性质约束,所谓对象性质,就是指一个对象的属性、操作等对象有关的特性,在建模中具体是指定义的模型元素的特性。OCL表达式可以表达对模型元素性质的约束,常见的使用情况有三种:不变量、前置条件与后置条件和let表达式。,30,.,4用OCL表达对象性质约束,4.1不变量4.2前置条件和后置条件4.3let表达式与约束,31,.,4.1不变量,不变量常用于附加在模型元素上,它规定的约束条件通常需要该模型元素的所有实例都满足。,32,.,4.2前置条件和后置条件,OCL表达式附加在操作上可以规定一个前置条件或后置条件。前置条件指的是操作开始执行前必须为真的条件,后置条件指的是操作成功结束执行后必须为真的条件。前置条件用保留字“pre”标识,后置条件用保留字“post”标识。,33,.,4.3let表达式与约束,let表达式附加在模型元素的属性上,它通常用于定义约束中的一个变量。,34,.,5示例-管理信用卡账户,35,.,5示例,对于这个模型,提问在某个时间间隔内,某个信用卡账户发生了哪些交易?去年这个机构处理的交易数量?去年那些客户用各种信用卡资助了某商家?某客户现在有多少个信用卡账户?对于所有的帐户,客户最大借款额的总和是多少?UML合并了一门可以表达类似这些问题的语言对象约束语言(OCL)【Wamer-99】,36,.,5.1遍历类模型的OCL制品(I),OCL可以在类模型中遍历制品属性:语法是源对象加圆点加属性名。aCreditCardAccount.maximunCredit操作:源对象或对象集合加圆点加操作。即使没有参数,操作后面必须跟着括号。以避免与属性发生混淆。OCL中有一些特殊操作,可以作用于整个集合。集合操作的语法是源对象集合加“-”加操作简单关联。点标记的第三种用法是遍历到目标端的关联。目标端可以由关联终端名指定,或无歧义地由类名指定。aCustomer.MailingAddress生成一套地址;aCreditCardAccount.MailingAddress生成单个地址。,37,.,5.1遍历类模型的OCL制品(II),限定关联:限定符可以更为准确的遍历。语法是将限定符取值围在方括号内。例如aCreditCardAccount.Statement30Nov1999关联类:给定关联类的一个链接,就可以找到组成的对象。作为选择,给定一个组成对象,就可以找到关联类的多个链接。泛化:对于OCL来说,遍历泛化层次结构是隐含的。过滤器:经常需要过滤集合内的对象。OCL有好几类过滤器,其中最常用的是select操作。,38,.,5.2构建OCL表达式,OCL真正的威力来自于将原始制品组合成表达式。使用OCL,遍历对象到单个关联,这样的遍历会生成单件或集合(或包)。,39,.,5.3OCL表达式示例(I),对于这个模型,提问在某个时间间隔内,某个信用卡账户发生了哪些交易?aCreditCardAccount.Statement.Transaction-sel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 押题宝典高校教师资格证之《高等教育法规》模考模拟试题及答案详解【夺冠】
- 基础强化人教版7年级数学上册期末试题及参考答案详解【能力提升】
- 考点解析华东师大版8年级下册期末试题【达标题】附答案详解
- 推拿治疗学考试题及答案详解【历年真题】
- 押题宝典高校教师资格证之《高等教育心理学》通关考试题库及答案详解(典优)
- 园林绿化作业人员题库检测试题打印附答案详解AB卷
- 2025版挖掘机买卖及安全培训与环保技术研发一体化服务合同
- 2025版智能化城市景观设计顾问服务合同范本
- 2025年新型电子商务股份合作框架合同
- 2025年工业喷漆生产线承包合作合同范本
- 2025年四川省辅警招聘考试题库及答案
- 湖南省长沙雅礼中学2025年化学高一下期末达标检测模拟试题含解析
- 2025吐鲁番辅警考试真题
- AI赋能自动化开发流程
- 2025至2030中国航空客运销售代理行业市场运行发展分析及前景趋势与投资报告
- 浙江杭州市2024-2025学年高一下学期6月期末考试英语试题及答案
- 愈见倾听师考试题及答案
- 2025至2030年中国液态食品包装机械行业市场供需态势及发展前景研判报告
- 首诊负责制试题及答案
- 渐进片试题及答案
- 2024浙江遂昌农商银行新员工招聘笔试历年典型考题及考点剖析附带答案详解
评论
0/150
提交评论