第九章 对象约束语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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版本正在征求意见 版本正在征求意见
武汉大学国际软件学院