Chapter 11 操作契约.

Slides:



Advertisements
Similar presentations
2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
Advertisements

7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
會計學 Chapter 1 基本概念 1-2 基本概念 第一節 單式簿記 第二節 會計學的定義與功用 第三節 會計學術與會計人員 第四節 企業組織 第五節 會計學基本第五節 會計學基本慣例 第六節 會計方程式 第七節 財務報表.
Chapter 5 教育發展與職業選擇. 1. 認識高職學生的生涯進路。 2. 了解個人特質與職業屬性之 間的關係。 3. 認識打工安全與勞動權益。
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
小 王 子 組別:第五組 班級:財金二甲 組員:A 林安潔 A 陳思羽 A 許雅涵
11-1 保險業之定義 11-2 保險業之設立 11-3 保險業之組織 11-4 保險業之營業範圍
GRASP:基于职责设计对象.
9-1 火災保險 9-2 海上保險 9-3 陸空保險 9-4 責任保險 9-5 保證保險 9-6 其他財產保險
教材版本:新教材人教版九年级(上) 作品名称:同类二次根式 主讲老师:张翀 所在单位:珠海市平沙第一中学.
槍砲病菌與鋼鐵 第三組.
導覽解說與環境教育 CHAPTER 3 解說員.
財務報表的內容 四種報表格式 財務報表的補充說明 會計師簽證的重要性 合併報表 財務報表分析 Chapter 2 財務報表的內容.
老師 製作 法律與生活.
面向对象的需求分析 余阳 教授 中山大学软件学院
第十七章休閒農業之經營策略與成功之道 17 Chapter.
Chapter 2 勞工安全衛生法.
被动语态 (The Passive Voice)
第九課 新詩選 (一)等你,在雨中  余光中 (二)雁 白 萩.
風險分析與財務結構 瞭解風險的定義與種類 衡量企業風險與財務風險 影響企業風險的因素 影響財務風險的因素 以現金流量衡量企業長期的財務狀況
國際行銷管理 林 建 煌 著.
第一章 商品 第一节 价值创造 第二节 价值量 第三节 价值函数及其性质 第四节 商品经济的基本矛盾与利己利他经济人假设.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
第一節 知覺 第二節 認知 第三節 學習 第四節 創造力
第九章 字符串.
CHAPTER 2 綜合所得稅之架構.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第17章 网站发布.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
管理信息系统 第九章 面向对象的系统开发方法.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
老師 製作 休閒農場.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
第十一章 物件資料結構塑模.
心理學—日常生活中的應用 人際溝通.
分裂对象模型 C++ otcl.
牛津9A Unit6 Grammar.
项目二:HTML语言基础.
Web安全基础教程
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
組別:第七組 組員: 英一C楊宏毅 英一C徐瑋維 英一C鄭偉呈 英一C李冠緯 英一C劉怡汝 英一C余顯樺 英一A熊泓彥
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
MODELING GENERALIZATION & REFINING THE DOMAIN MODEL
海报题目 简介: 介绍此项仿真工作的目标和需要解决的问题。 可以添加合适的图片。
临界区问题的硬件指令解决方案 (Synchronization Hardware)
財務預測 財務預測的用途 法令相關規定 預測的基本認知 預測的方法 製作預測性報表 財務報表分析 Chapter 16 財務預測.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
滤波减速器的体积优化 仵凡 Advanced Design Group.
基于列存储的RDF数据管理 朱敏
徐迎晓 复旦大学软件学院 用例模型--用操作合约添加细节 徐迎晓 复旦大学软件学院.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
自慢 社長的成長學習筆記 何飛鵬.
團體工作的倫理議題 CHAPTER 12. 團體工作的倫理議題 CHAPTER 12 團體工作的倫理議題 1.如果我有資格執行個別治療,那麼我也可以執行團體治療。 2.仔細而審慎地篩選團體成員,較符合專業倫理要求。 3.在團體治療開始前,讓成員能先有準備以便從團體中獲得最大利益,是非常重要的。
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Chapter1 大師的視界,見證歷史的腳步
海报题目 简介: 介绍此项仿真工作的目标和需要解决的问题。 可以添加合适的图片。
Presentation transcript:

Chapter 11 操作契约

我们在哪儿

目标 确定系统操作 为系统操作创建契约

为什么需要操作契约 用例和SSD是用来描述系统行为的主要方式,在大多数情况下足以满足需求。 有时需要对系统行为进行更为详细和精确的描述 操作契约用于描述领域模型里对象的详细变化,作为系统操作的结果。

什么是系统操作 在SSD中定义了系统事件,而一个系统事件可以通过一个系统操作来实现。 将所有用例的系统操作的完整集合封装到一个类中,这个类定义了系统对外界的公共接口。

系统操作处理输入的系统事件

系统操作契约示例 操作: enterItem(itemID: ItemID, quantity: integer) 交叉引用:处理销售用例 前置条件:有一个正在进行的销售 后置条件: 创建了SaleLineItem的实例sli(创建实例) sli与当前的Sale关联(形成关联) sli.quantity赋值为quantity(修改属性) 基于itemID的匹配,将sli关联到ProductionDescription(形成关联)

操作契约 系统操作可以进一步通过操作契约来说明。 操作契约包括前置条件和后置条件。 前置条件表述了操作前系统应该处于的状态 后置条件 表述了操作后,领域模型内对象状态的变化。领域模型状态的变化包括创建实例,形成或消除关联以及改变属性。 后置条件不是在操作过程中执行的活动,它们是对领域模型对象的观察结果。

示例:enterItem 操作: enterItem (itemID: ItemID, quantity: integer) 交叉引用:处理销售(用例) 前置条件:存在一个正在进行销售 后置条件: 创建了SalesLineItem的实例sli(创建实例) Sli与当前Sale关联(形成关联) Sli.quantity的值应该为quantity(修改属性) 基于itemID的匹配,将sli关联到ProductDescription(形成关联)

契约的组成 操作:操作的名称和参数 交叉引用:会发生此操作的用例 前置条件: 执行操作前,对系统或领域模型对象状态的重要假设。 后置条件: 最重要的部分,表示完成操作后,领域模型对象的状态。

编写操作契约的步骤 从SSD中确定系统操作 如果系统操作比较复杂,其结果可能不明显,或者在用例中不清楚,则可为其构造契约 使用以下几种类别来描述后置条件 创建和删除实例 修改属性 形成和清除关联

一些准则 以过去时态表达后置条件,以强调它们是操作引起的可观察的结果。 (较好)创建了SalesLineItem (较差)创建SalesLineItem 轻量级地书写后置条件。如果开发者在没有契约操作的情况下,能够准确地理解所要完成地工作,则没有必要编写契约。 书写后置条件时,在必要的情况下更新领域模型。

操作契约示例

示例:makeNewSale 操作:makeNewSale() 交叉引用:处理销售用例 前置条件:无 后置条件: 创建了Sale的实例s(创建实例) s被关联到Register(形成关联) s的属性被初始化(修改属性)

示例:makePayment 操作:makePayment(amount:Money) 交叉引用:处理销售用例 前置条件:当前有一个正在进行的销售 后置条件: 创建了Payment的实例p(创建实例) p.ammountTendered被赋值为amout(修改属性) p被关联到当前的Sale 当前的Sale被关联到Store(形成关联),将其加入到完成的销售日志中。

示例:endSale 操作:endSale() 交叉引用:处理销售用例 前置条件:当前有一个正在进行的销售 后置条件:sale.isComplete被置为true 注意:涉及到领域模型的修改。

UML:操作契约和OCL OCL是UML中定义的形式化的表示操作契约的语言。 OCL很少被使用