网站大量收购独家精品文档,联系QQ:2885784924

对象约束语言简称OCL.pdfVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

对象约束语言简称OCL(ObjectConstraintLanguage),它是一种用于施加在指

定的模型元素上约束的语言。OCL表达式以附加在模型元素上的条件和限制来表

现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式,附加

在操作和方法上的前置条件和后置条件等。

对象约束语言概述

对象约束语言是一种形式化语言,它主要用于表示UML模型中施加于模型上

的约束。OCL具有如下特点:

1、OCL是一种精确的,无二义性的语言

2、OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达

3、OCL是一种纯表达式语言,它是具有没有任何副作用的申明性语言。

4、OCL是一种类型化语言,即OCL中的每一个表达式都是具有类型的。

5、OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。

标准OCL类型

OCL预定义的标准类型定义了一组基本类型和集合类型。OCL的基本类型有

Boolean、Integer、Real、String等。集合类型包括Collection、Set、

Bag、Sequence等。这些标准型是OCL表达式的组成部分。

OCL标准型的层次结构如下:

OCL表达式

OCL表达式对于一个OCL类型求值。OCL表达式有以下特点:

1、OCL表达式可以附加在模型元素上,模型元素的所有实例都应该满足表

达式的条件。

2、OCL表达式可以附加在操作上。

3、OCL表达式可以指定附加在模型元素上的监护条件。

4、OCL表达式的计算顺序是从左到右。

5、OCL表达式既可以使用基本类型又可以使用集合类型。

用OCL表达对象性质约束

OCL表达式可以附加在模型元素或模型元素的属性和操作上表达一个约束

条件。

精确域模型的需求

让我们拿系谱树形结构作为一个范例,从图1之中的图表开始。系谱树形视图

的UML模型显示了一个Person是由名字和性别定义的,并且可以有或者没

有小孩。而且,它显示了一个Person拥有两个小孩,小孩也是Person。这意

味着两个小孩可以有相同的性别,但是这在遗传上是不可能的。因此,该模型是

不精确的。

图1.系谱树形模型

一个UML图,例如一个类图,通常不够精确来提供一个业务模型的所有相关

元素。它可以通过多种政策来表达约束,但是其他的约束仍然不够清晰。如果我

们需要为模型对象描述其他的约束,那么通常可以以一种自然语言来描述它们。

该实践还显示了它导致了模糊性的产生。

您可以开发一个规范语言来避免这些模糊性。传统规范语言的劣势在于,它们是

由拥有稳固数学知识的人员使用的,使用它来建模系统很困难。您可以开发OCL

(对象约束语言)来填补这个空白。这就是一种读起来和写起来都很轻松的规范

语言。以OCL写成的表达式可以得到理解,并且不会在不同角色的人员之间产

生差异,这些人员例如分析员,开发员。

为了创建一个精确且完整的模型,我们需要UML图表及OCL表达式。没有

OCL表达式,那么模型就是严重未指定的。对于类和联系的代表来说,UML图

表仍然是不可或缺的,但是OCL表达式会参考尚不存在的模型元素,因为在

OCL中尚没有方法去指定类与联系。当我们合并图表和约束时,才能够完整地

指定模型。

至于如图1所示系谱树形视图中指定的模型,我们需要添加这些约束,来指定

两个父类拥有不同的属性:

{self.parents-asSequence()-at(1).sexself.parents-asSequence()-at(2).sex}

图2.带有OCL约束的系谱树形模型

而且,模型的规模和数量会得到极大的增加,使得公司不能完整发挥MDA(模

型驱动结构)的优势。系统由数以百计的模型组成,而模型又由数以千计的元素

文档评论(0)

你别来~我无恙 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档