第九章 对象约束语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(8) 导航 OCL可以从初始的上下文导航到与它有关系的其它类。 可以从初始的上下文导航到与它有关系的其它类。 可以从初始的上下文导航到与它有关系的其它类 这些类与初始的类有关联或组合关系. 这些类与初始的类有关联或组合关系 context 订单 inv 订单客户.age > 18 订单客户 context 客户 inv 订单->size >= 1 订单
(4) 表达式的前置条件和后置条件 context 订单 求税金(): Real 订单.求税金 求税金 pre: -post: result = 订单和 * 0.065
(6) 蕴涵 context 订单 inv 订单的文章->size = 0 implies 订单和 = 0 订单的文章 “订单的文章”的数量如果等于0,则 “订单”的“订单和” 订单的文章”的数量如果等于 则 订单” 订单和” 订单的文章 也必须等于0 也必须等于 (7) 分支 context 订单 inv 酬金 = if (订单和 订单和<100) then 2.00 else (订单和 订单和*0.01) endif 订单和 订单和 如果订单和<100,酬金为 否则为 酬金为2,否则为 求“订单”的“酬金”,如果订单和 订单” 酬金” 如果订单和 酬金为 订单和的百分之一. 订单和的百分之一
(3) 表达式的不变量 不变量由inv关键字规定。 不变量由 关键字规定。上下文表示这个表达式所作用 关键字规定 的范围。可以是类,类的属性和操作. 的范围。可以是类,类的属性和操作 context 订单 inv: --”订单”类中的所有对 订单” 订单 订单和 > 10 --象的”订单和”都应该大于10 --象的”订单和”都应该大于10 象的 context 订单 inv: --”订单”类的”酬金”的求法 订单” 订单 类的”酬金” 酬金= 酬金 0.01 * 订单和 也可以: 也可以 context 订单 inv: --”订单”类的”酬金”的求法 订单”类的”酬金” 订单 self.酬金 = 0.01 * self.订单和 酬金 订单和
武汉大学国际软件学院
解释

布尔型
b1 and b2 逻辑与 布尔型( or, xor) 逻辑与,布尔型 布尔型 not b1 逻辑非, 布尔型 逻辑非 b1 = b2 等于 布尔型 等于,布尔型 b1 <> b2 不等于 布尔型 不等于,布尔型 b1 implies b2 蕴涵 布尔型 蕴涵,布尔型 均为真,或 为假时 表达式为真1 为假时,表达式为真 当b1和b2均为真 或b1为假时 表达式为真 和 均为真 if b1 then <expr1> else <expr2> endif 分支判断
武汉大学国际软件学院
9.2 OCL的特点 OCL的特点
• • • • •
声明性语言,不会改变模型中的内容。 声明性语言,不会改变模型中的内容。 形式化语言语言。 形式化语言语言。 无二义规范语言。 无二义规范语言。 类型性语言,每一个表达式都有类型; 类型性语言,每一个表达式都有类型; 易学好用。 易学好用。
群的操作(Collection) 群的操作 OCL定义的群的操作有下表中列出的操作 定义的群的操作有下表中列出的操作. 定义的群的操作有下表中列出的操作
小结
• • •
OCL是一种形式化语言 是一种形式化语言 OCL已经成为 已经成为UML规范说明的一部分 已经成为 规范说明的一部分 OCL可以表示施加于模型元素或模型元素的属性、操作 可以表示施加于模型元素或模型元素的属性、 可以表示施加于模型元素或模型元素的属性 等上面的约束条件
武汉大学国际软件学院
(2) 表达式的上下文 表达式的上下文表示这个表达式所作用的范围。 表达式的上下文表示这个表达式所作用的范围。可以 类的属性和操作. 是类,类的属性和操作 context 订单 -- 上下文为“订单”类 上下文为“订单” 的属性“订单和” 的属性“订单和” context 订单 求税金( ) 订单.求税金 求税金 --上下文为“订单” 上下文为“订单” 上下文为 类的操作求“税金 类的操作求“税金( )” context 订单.订单和 --上下文为“订单”类 订单 订单和 上下文为“订单” 上下文为

OCL的基本类型:包括整型,实型,字符串型,布尔 的基本类型:包括整型,实型,字符串型, 的基本类型 型
武汉大学国际软件学院
9.3 OCL的构成 OCL的构成

OCL在基本类型上的部分运算符 在基本类型上的部分运算符
武汉大学国际软件学院
ห้องสมุดไป่ตู้
解释

整型
i1 + i2 加法 整型 (-,*) 加法,整型 i1 / i2 除法 实型 除法,实型 i1.abs 取绝对值 整型 取绝对值, i1.max(i2) 取最大数 整型 取最大数,
第九章 对象约束语言
武汉大学国际软件学院
内容
• • • • •
为什么需要OCL 为什么需要 OCL的特点 的特点 OCL的构成 的构成 OCL的高级数据类型 的高级数据类型 小结
武汉大学国际软件学院
9.1 为什么需要OCL 为什么需要OCL

对象约束语言(Object Constraint Language, OCL)作为 对象约束语言 作为 图形符号的补充,说明建模元素的有关细节,例如: 图形符号的补充,说明建模元素的有关细节,例如:约 前置条件,后置条件等。 束,前置条件,后置条件等。
9.4 OCL的高级数据类型 OCL的高级数据类型 OCL定义的高级数据类型有群 集合 袋和序列 其中群是 定义的高级数据类型有群,集合 袋和序列.其中群是 定义的高级数据类型有群 集合,袋和序列 抽象数据类型,集合 袋和序列是群的子集. 集合,袋和序列是群的子集 抽象数据类型 集合 袋和序列是群的子集 集合(set):不包含重复元素 不包含重复元素; 集合 不包含重复元素 允许包含重复元素; 袋(Bag):允许包含重复元素 允许包含重复元素 序列(Sequence):元素具有有序性的袋 元素具有有序性的袋. 序列 元素具有有序性的袋
武汉大学国际软件学院
解释

运算符的优先级别
优先级决定了操作顺序; 优先级决定了操作顺序; 优先级从上到下, 优先级从上到下,改变顺序用括号 。
武汉大学国际软件学院
9.3 OCL的构成 OCL的构成

OCL的表达式 的表达式 (1) 表达式的含义 OCL的表达式由操作数和运算符按一定规则构成。 的表达式由操作数和运算符按一定规则构成。 的表达式由操作数和运算符按一定规则构成 表达式和特定的上下文有关,表达式具有确定的值。 表达式和特定的上下文有关,表达式具有确定的值。

实型
i1 + i2 加法 实型 ( -, *, / ) 加法,实型 i1.abs 取绝对值 实型 取绝对值,实型 r1.round 四舍五入取整 整型 四舍五入取整, r1.floor 向下取整 整型 向下取整,
武汉大学国际软件学院
解释

字符串型
s1.concat(s2) 连接 字符串 连接,字符串 s1.size 字符串长度,整型 字符串长度 整型 s1.toLower 转换成为小写字母 字符串 转换成为小写字母,字符串 s1.toUper 转换成为大写字母 字符串 转换成为大写字母, s1.substring(i1,i2) 取子串 字符串 取子串, s1 = s2 等于 布尔型 等于,
武汉大学国际软件学院
9.3 OCL的构成 OCL的构成

OCL作为形式化语言,基本语言要素包括: 作为形式化语言,基本语言要素包括 作为形式化语言
• • • •
类型(基本类型,高级类型 类型 基本类型,高级类型) 基本类型 操作 表达式 语句
武汉大学国际软件学院
9.3 OCL的构成 OCL的构成
武汉大学国际软件学院
9.1 为什么需要OCL 为什么需要OCL

OCL(object constraint language) 对象约束语言。用来 对象约束语言。 进行约束定义的,形式化的无二义的语言。 进行约束定义的,形式化的无二义的语言。
• • • •
OCL于1995年由 于 年由Warmer等人,在IBM设计成功,并开始 等人, 设计成功, 年由 等人 设计成功 使用。 使用。 1997年UML的1.1版本正式采用 年 版本正式采用OCL 的 版本正式采用 2003年1月推出 年 月推出 月推出OCL1.4版本 版本 OCL2.0版本正在征求意见 版本正在征求意见
武汉大学国际软件学院
相关文档
最新文档