软件建模与UML第八章对象约束语言研讨.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 对象约束语言 第一节 OCL概述 第二节 OCL语法 第三节 标准OCL类型 第四节 OCL表达式 第五节 OCL在UML建模中的应用 第一节 OCL概述 UML的图形如类图、用例图等,通常不可能详细地表达系统的各个细节,为了表达这些细节问题,需要为建模对象添加一些约束。这些约束可以使用自然语言来表达,但是自然语言的二义性增加了约束表达的复杂性和不可确定性。 为解决约束表达的问题,OCL应运而生了。 第一节 OCL概述 对象约束语言(Object Constrain Language,简称OCL)是UML的子标准,是一种能用于构造软件模型的建模语言。 第一节 OCL概述 OCL的特性: OCL是一种精确的、无二义性的形式化语言,易于掌握和使用。 OCL既具有良好的数学背景,又没有使用晦涩的数学符号。OCL的基础是集合论和三值Kleene逻辑,并且它有一个形式化的数学语义,因此它可以明确地、无歧异地表示模型元素。 第一节 OCL概述 OCL是强类型的语言,任何表达式的值都属于一个类型。这个类型可以是预定义的标准类型(如String或Integer型),也可以是UML图中的元素(如具体的对象),还可以是这些元素构成的集合(如对象的Set,Bag和sequence types等)。作为类型语言,OCL表达式的校验是在建模期间而不是执行期间进行的,因此,模型中的错误能在早期就被发现并修改。 第一节 OCL概述 OCL是声明式的语言,其表达式的计算将返回一个值,不会改变系统的状态,没有副作用,从而使得UML中的表达式被提升到了纯建模的领域。而不必考虑实现时的细节和具体语言。 OCL是一种制定约束和查询的文本语言,除了可用于编写导航表达式、布尔表达式和其他查询语句外,还可用于构建约束、监护条件、动作、前置和后置条件、断言和其他UML表达式。 第一节 OCL概述 OCL是一种规范说明性语言,所有与实现有关的问题都不能用OCL来表达。 OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。 第一节 OCL概述 OCL具体语言可以用于许多不同的目的: 作为一种查询语言。 在类模型中,指定与类和类型有关的不变式。 为原型和属性指定一种类型不变式。 为属性指定派生规则。 描述关于操作和方法的前置条件和后置条件。 描述迁移。 为消息和动作指定一个目标和一个目标集合。 第一节 OCL概述 在UML模型中指定任意表达式,如与行为(Behavior)、参数(Parameters)、变更触发器(ChangeTriggers)和时间触发器(TimeTriggers)、及生命线(LifeLines)相关联的那些表达式。 第二节 OCL语法 OCL2.0在两个层次上定义对象约束语言,一个是抽象语法(或元模型),另一个是具体语法。后者真正用于在UML模型中指定约束和进行查询。 元模型定义OCL概念和应用该概念的规则(或抽象语法),这与UML元模型对图的概念和用于UML图的规则进行定义的方式相同。具体语法实现抽象语法。 第二节 OCL语法 1)抽象语法 抽象语法指的是OCL语言定义的概念层。在UML中,抽象语法表示为解释“类是什么”或“操作是什么”等的元模型(M2层),而不是创建一个具体的类或操作,UML M2层一般将类描述为“具有相同的特征、约束和语义说明的一组对象”,并将类解释为可以与任何数目的特性(或属性)、操作、关系甚至嵌套类相关联。 第二节 OCL语法 2)具体语法 与面向规则的抽象语法相反,具体语法应用抽象语法的规则来创建可以在运行时段计算的表达式。OCL表达式与类元相关联,应用于该类元自身或某个属性、操作或参数。不论哪种情况,约束都是根据其位移(replacement)、上下文类元(contextual classifier)和OCL表达式的自身实例(self instances)来定义的。 第二节 OCL语法 “位移”是UML模型中使用的OCL表达式所处的位置,即作为依附某个类元的不变式、依附于某个操作的前置条件或依附于某个参数的默认值。 “上下文类元”定义在其中计算表达式的名字空间。例如,前置条件的“上下文类元”是在其中定义该前置条件的操作所归属的那个类。也就是说,该类中的所有模型元素(如属性、关联和操作)都可以在OCL表达式中被引用。 第二节 OCL语法 “自身实例”是对计算该表达式的对象的引用。它总是“上下文类元”的一个实例。 也就是说,OCL表达式对该“上下文类元”的每个实例计算结果可能不同。因此,OCL可以用于计算测试数据。 第三节 标准OCL类型 OCL是一种强类型语言,每一表达式的值都属于某一类型。图8-1显示了OCL中预定义的

文档评论(0)

w5544434 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档