最新UML-OCL对象约束语言ppt课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▪ OCL的出现解决了这一问题,它是一种保留了易 读易写特点的形式语言。OCL不仅用来写约束, 还能够用来对UML图中的任何元素写表达式。
▪ 每个OCL表达式都能指出系统中的一个值或者对 象。OCL表达式能够求出一个系统中的任何值或 者值的集合,因此它具有了和SQL同样的能力, 由此也可得知OCL既是约束语言,同时也是查询 语言。
2 标准OCL类型
▪ OCL标准类型的层次结构
2 标准OCL类型
▪ 2.1 OclType类型 ▪ 2.2 OclAny类型 ▪ 2.3 基本类型 ▪ 2.4 集合类型 ▪ 2.5 OCL中的关键字
2.1 OclType类型
▪ OclType类型是OCL预定义的和在模型中 定义的类型,OclType允许访问模型的元 级别。
▪ 为了便于操作集合,OCL加定义了一些操作,这里只给出 一些常用且重要的操作来示例,更多具体的操作会在OCL 的标准库中介绍。操作如下所示:
▪ select 按照一定的规则选择选取符合规则的项,组成一 个新的集合。
▪ reject 从集合中选择不满足规则的项,组成一个新的集 合。
▪ forAll 指定一个应用于集合中每个元素的约束。 ▪ exists 确定某个值是否存在于集合中的至少一个或多个
4. Bag
▪ Bag也是对象组,Bag和Set不同之处在于 Bag中可以包含重复元素。
▪ 定义在Bag上的操作见表7。
5. Sequence
▪ Sequence和Bag相似,也可以包含重复元 素,不过Sequence中的元素是有序的。
▪ 定义在Sequence上的操作见表8。
6. Collection上的操作
2 标准OCL类型
▪ OCL预定义的标准类型定义了一组基本类 型和集合类型。
▪ OCL的基本类型有“Boolean”、 “Integer”、“Real”和“String”等,集 合类型包括“Collection”、“Set”、 “Bag”和“Sequence”等,这些标准类型 是OCL表达式的组成部分。
2.3 基本类型
▪ OCL定义了很多基本类型,它的基本类型和 程序设计语言中的数据类型的含义类似。
▪ OCL还在基本类型上定义了一些操作,这些 操作也与程序设计语言中的操作类似。
▪ OCL的基本类型与操作见表3。
2.4 集合类型
▪ 除了基本类型以外,OCL还定义了一些较 为高级的标准OCL类型称为集合类型。
▪ colIsUndefined(): Boolean 如果对象与OclUndefined 相同,那么oclIsUndefined()的计算结果为“真”。
▪ OclAny类型是一个UML模型里所有类型和OCL标准库的 父类,它包括了诸多子类例如Real、Boolean、Sring、 OclState和Integer等,如图13-3所示。模型里所有的子 类都继承由OclAny定义的特性。下面是对所有OclAny中 操作的描述。
UML-OCL对象约束语言
1 对象约束语言概述
▪ 对象约束语言(Object Constraint Language),简称OCL,是一种指示用户 建模系统中的限制方式。它是UML可选的 附加内容,可以用来更好地定义对象的行 为,并为任何类元指定约束。
▪ 在对象约束语言中,对象代表了系统的组 件,它定义了完善的项目,约束代表限制 ,而语言并非是指一种正式的计算机语言 。
▪ =(object:OclAny):Boolean 如果self与object是同一对 象,则返回值为“真”。
▪ post:result = (self = object) ▪ <>(object:OclAny):Boolean 如果self是一个与object不
同的对象,则返回值为“真”。
▪ pre:result = (self <> object)
▪ 集合是成组的对象或元素,可以用来作为 表达式计算过程中的结果。
▪ 集合类型除了抽象数据类型Collection以外 ,还有Set(集)、Bag(袋)、 OrderedSet(有续集)和序列( Sequence)等。
2.4 集合类型
▪ 1. Collection ▪ 2. Set ▪ 3. OrderedSet ▪ 4. Bag ▪ 5. Sequence
OCL的特点
① OCL是一种精确的、无二义性的语言,易于使 用和掌握。
② OCL是一种规范说明性语言,所有有关实现的 问题都不能用OCL来表达。
③ OCL是一种纯表达式语言,它是具有没有任何 副作用的声明性语言。对OCL表达式的计算将 返回一个值,计算不会改变系统的状态。
④ OCL是一种类型化语言,即OCL中的每个表达式 都是具有类型的。
▪ OclType的操作见表1。
2.2 OclAny类型
▪ OclType类型是一个模型里所有类型的上 级类型。模型里所有的类都继承由OclAny 定义的特性。
▪ OclAny的操作见表2。
▪ OclVoid类型是与所有其他类型相一致的一种类型,它只 有一个叫OclUndefined的实例,应用于未定义类型的任 何特性调用,除了oclIsUndefined()返回“真”,其他都 会产生OclUndefined。
1. Collection
▪ Collection是OCL中所有集合的抽象的上级类 型。
▪ 定义在Collection上的操作见表5。
ຫໍສະໝຸດ Baidu
2. Set
▪ Set是不包括重复元素的对象组,Set中的 元素是无序的。
▪ 定义在Set上的操作见表6。
3. OrderedSet
▪ OrderedSet是不包括重复元素的对象组, OrderedSet中的元素是有序的。
⑤ OCL不是一种程序设计语言,不能用OCL编写程 序逻辑和控制流程。
▪ UML图(例如类图)通常不够精细,无法提供与 规范有关的所有相关部分。这其中就缺少描述模 型中关于对象的附加约束。这些约束常常用自然 语言描述。而实践表明,这样做经常造成歧义。 为了写出无歧义的约束,已经开发出几种所谓的 “形式语言”。传统上的形式语言,缺点是仅适 合于有相当数学背景的人员,而普通商务或系统 建模者则难以使用。
相关文档
最新文档