第八章面向对象设计工作流

  • 格式:ppt
  • 大小:14.46 MB
  • 文档页数:100

下载文档原格式

  / 50
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人(通信地址) ❖ 若不使用多态机制,凡是在一般类中定义了的属性不要在
特殊类中重复出现。 ❖ 如果一个属性的值明显可以从另一个属性值直接导出,则
应考虑是否去掉这个属性。
4、属性的定位
❖ 把属性放置到由它直接描述的那个对象所属的类的符号中。 ❖ 在继承结构中把通用的属性放在一般类中,把专用的属性放
在特殊类中。 ❖ 总的原则:一个类的属性必须适合这个类和它的全部特殊类
录这些状态? ▪ 在用户给出的需求说明中寻找做定语用的词汇。
3、审查与筛选
❖ 看该属性是否提供了系统中用得着的信息。 ❖ 一个对象中的属性要描述这个对象本身的特征,而不要把
其他对象或关系的属性错放在这个对象中。(整体对象的 属性不应该描述部分对象的性质。) ❖ 一个属性所对应的一个事物性质的粒度要适当。 例如:人(国家、省、城市、接到、门牌号码)
❖ 尽可能晚的把信息添加进行模块中是有意义的。
1、属性
❖ 属性是用来描述对象的静态特征的一个数据项。 ❖ 属性的基本格式:
[可见性]属性名[:类型][=初始值](可选) ▪ 可见性:
• 公共的:该属性可由拥有它的对象和其他对象访问; • 受保护的:可由拥有它的对象以及该对象所属于的类的子类
所产生的对象访问; • 私有的:该属性仅能由拥有它的对象访问; • 包范围的:只有在同一个包中声名的元素才能使用。
的所有对象,并在此前提下充分地运用继承。
5、 Osbert 案例研究的属性的格式
6、 MSG基金会案例研究的属性的格式
8.3.2 分配操作给类
❖ 操作是类的对象被要求执行的服务。 ❖ 为什么在设计工作流期间添加操作?
▪ 统一过程中进行不断的迭代,添加过早则修改过多。 ▪ 要分配给类的操作是从用例的实现的交互图中推断出
MSG基金会案例中Estimate Funds Available for Week用例的方案
Mortgage Class具有职责 Compute Estimated grants and payment for week
Manage an Asset用例方案1实现
ห้องสมุดไป่ตู้
Manage an Asset用例方案2实现
2、识别操作
❖对象行为分类
(1)系统行为 例:创建、删除、复制、转存
(2)对象自身的行为——算法简单的操作 例:读、写属性值
(3)对象自身的行为——算法复杂的操作 计算或监控
识别操作的启发策略
(1)考虑系统责任 有哪些功能要求在本对象提供?
(2)考虑问题域 对象在问题域对应的事物有哪些行为?
(3)分析对象状态 在每种状态下对象可能发生什么行为? 对象状态的转换,是由哪些操作引起的?--状态图讲述
(4)用动词识别操作 (5)查看每一个属性,因为要用对象的操作来对其进行操纵。 (6)追踪操作的执行路线
模拟操作的执行,并在整个系统中跟踪 。
3、审查与调整
(1)审查每个操作是否真正有用 是否直接提供系统责任所要求的某项功能?或者响应其 它操作的请求,间接地完成某种功能的某些局部操作?
调整——取消无用的操作
来的。
❖ 除了确定操作之外,还需要确定把每种操作分配 给哪个类。
1、操作的格式
[可见性] 操作名[‘(‘参数列表’)’][‘:’返回类型] (特征标记 ) ❖ 可见性的取值为+(公有的)、#(受保护的) 、-(私有的)或~( 包) 。 ❖ 对象的操作可分为内部操作和外部操作 ▪ 内部操作:只供对象内部的操作使用,不对外提供。 ▪ 外部操作:当其他对象用消息请求它时,它进行响应。 ❖ 类操作(静态操作)是用来创造实例或者操纵静态属性的 操作。 ▪ 例如C++中的前面冠以static的成员函数,就是类操作。
2、识别属性
❖ 启发性策略
▪ 按一般常识这个对象应该有哪些属性? ▪ 在当前的问题域中这个对象应该有哪些属性? ▪ 根据系统责任的要求,这个对象应具有哪些属性? ▪ 建立这个对象是为了保存和管理哪些信息? ▪ 为了在对象的操作中实现特定功能,需要增设哪些属性? ▪ 对象有哪些需要区别的状态?是否需要增加一个属性来记
系统可以尽快交付。
体系结构师的工作
❖ 把组件分配给子系统。 ❖ 体系结构师需要知道如何折中选择系统的功能性需
求与非功能性需求,并帮助客户做出正确决策。
▪ 如一组符合新的安全性标准的安全性需求将需要另外3个 月的时间和350000美元的钱来合并进信息系统中。
▪ 如推迟一项特殊的需求直到信息系统交货时,并且现在维 护可能节省150000美元,但是往后加入该需求将花费 300000美元。
与实现有关的因素有:图形用户界面系统、硬件、操 作系统、网络、数据管理系统和编程语言等。
OOD模型
——从两个侧面来描述
从另一侧面观察 OOD模型每个部分
用OO概念表达 ——采用OOA的概念 及模型组织方式
从一个侧面观察 OOD模型包括几个主 要部分 ——一个核心部分加 几个外围部分
在辅助模型中要增加分别 用于描述构件模型和部署 模型的构件图和部署图
2、OOA与OOD的关系:
(1)从OOA到OOD不是转换,是调整和增补
将OOA模型搬到OOD; 进行必要的调整, 作为OOD模型的问题域 部分;
增补其它四个部分,成 为完整的OOD模型。
OOA 模型
构件部署


机 交 互
问题域 部分
据 口 部



任务管理部分
(2)采用一致的概念和表示法
——不存在分析与设计之间的鸿沟
操作getAuctionPrice的分配
(2)继承
❖ PaintingClass具有一个属性title。
❖ 使用操作setTitle把油画的名称分配给油画对象。 ▪ 如果Osbert购买一幅新油画,系统会创建一个新对象,并 且调用操作setTitle把新油画的名称分配给那个对象。
❖ 使用操作GetTitle获得油画对象的名称。 ▪ 如果Osbert希望打印他所购买的所有油画的一份清单,那 就依次检查信息系统中的每个对象,并且发送一条消息 给操作GetTitle,以获得那个对象表示的油画的名称。
▪ 在编程实现时,一个属性是一个变量,在包括它的每 一个对象中均有自己的值。
❖ 属性有“实例属性”和“类属性”之分。
❖ 类属性:若类的一个属性对于该类的任何对象,它的 值都是相同的,则该属性称为“类属性”。
❖ 如:仪表测试系统中,把每种型号的仪表作为一个类, 仪表的输入电压、功率以及规定的质量指标等,对具体 的每一台仪表都是相同的,应该把这样的属性作为类属 性。但每台仪表的编号、精度以及它实际达到的性能值 是各不相同的,应该把这样的属性作为实例属性。
(2)是不是高内聚的 一个操作应该只完成一项单一的、相对完整的功能。
调整——拆分 或 合并
4、职责驱动型设计
❖ 设计原则:
如果Class A发送消息给 Class B以告诉它做某些事 情,那么执行请求的操作就 是Class B的职责。
如:MSG基金会案例研究的 Estimate Funds Available for Week用例
件体系结构师)
❖ 统一过程提供一种可用于开发大型信息系统的方法 学。
▪ 分析工作流的一个重要部分是把信息系统分割成分析程 序包。每个分析程序包都包含一组相关的类,它可以实 现成一个单一的单元。
▪ 设计工作流目标是把即将到来的实现工作流分解成可管 理的部分,将其称为子系统。
• 实现较小的子系统比实现大系统更容易些。 • 编程团队可以并行工作实现各个相对独立的子系统,
❖问题域部分设计
▪ 按照实现条件对OOA模型进行补充与调整。
❖人机交互部分设计
▪ 设计人机界面
❖控制驱动部分设计
▪ 定义和协调各个并发的控制流
❖数据管理部分设计
▪ 对永久对象的存取建模
❖构件及部署部分设计
▪ 构件模型用于描述构件及构件之间的关系,部署模型 用于描述节点、节点之间的关系以及构件在节点上的 分布。
❖ 例:如果MSG基金会的工作人员把基金会的资金投资到通 用汽车公司的股票上,那么信息系统就会创建一个对象,并 且调用操作setAssetNumber把相关的资产编号分配给那个对 象,该对象表示新的投资。
❖ 当工作人员想打印MSG基金会的所有资产清单时,将以此 考虑信息系统中的每个对象,并发送一条消息来调用操作 GetAssetNumber,以获得由那个对象表示的资产编号。
8.2 传统的与面向对象设计
8.3 问题域部分的设计
8.3.1 属性
❖ 设计工作流期间,必须指定类图的每个属性的精确格式。 ❖ 为什么不在分析工作流期间确定格式呢?
▪ 面向对象范型是迭代式的,每次迭代都会改变已经完成 的工作的一部分。如果更早的确定属性,将不得不修改 这些属性,并把它们从一个类移动到另一个类。
❖前4项不强调次序 ❖每个部分均采用与OOA一致的概念、表示法及活动,但具有 自己独特的策略。 ❖进行构件部署设计要在其前面四个部分完成后进行。
4、本书主要讲述内容
❖ 设置属性的格式 ❖ 标识操作,分配给合适的类 ❖ 选择用于实现信息系统的编程语言 ❖ 可移植性 ❖ 把每种软件组件分配给在其上运行的硬件组件(软
❖ 在面向对象范型中子类的每个实例可以继承父 类的实例的属性,父类具有的操作也同时应用 到子类的实例上。
6、操作分配:Osbert 案例研究
(1)职责驱动型设计
❖ 在购买油画时,为了计算精品或名品的最大价格,信息系 统需要执行一种操作来获得一幅拍卖油画的价格,即需要 一种操作getAuctionPrice。类Auctioned PaintingClass负责 确定相关的拍卖价格,所以操作getAuctionPrice应该分配 给Auctioned PaintingClass。
必须包括操作 getAnnualReturnOnInvestment
5、继承
❖ 如果某个操作既适合用于某个超类的实例,又适合用于那个 超类的子类的实例,那么该操作分配给超类是有意义的。
❖ 面向对象信息系统中的约定是:与类的每种属性相关联的都 是操作。
▪ SetAttribute,用于为那个属性分配一个特殊值。 ▪ GetAttribute,用于返回那个属性的当前值。
❖把操作setTitle 和操作GetTitle分配给Painting Class。
操作
7、 CRC卡
❖ CRC卡:类-职责-协作(class-responsibilitycollaboration)
❖ 对于每个类,信息系统开发团队都会填充在一张卡 中,以显示类名、那个类的功能以及它为了实现那 种功能而调用的一份其他类的列表。
第二种观点
分析

问题域与

系统责任
种 观
分做 什
点 析么
设计
与实现有 关的因素
设怎 么
计做
关键问题:对象的特征细节(如属性的数据类型和服务 流程图),是在分析时定义还是在设计时定义?
3、OOD过程
❖设计OOD模型的五个部分 ❖问题域部分的设计:对OOA的结果进行细化与调整。 ❖人机交互部分的设计:人机界面设计。 ❖控制流管理部分的设计:定义和协调并发的各个控制流。 ❖数据管理部分的设计:对永久对象的存取建模。 ❖构件部署设计:描述构件及构件之间的关系,描述节点之 间的关系及各构件在节点上的分布。
(3)有不同的侧重点和不同的策略
OOA主要针对问题域,识别有关的对象以及它们之 间的关系,产生一个映射问题域,满足用户需求,独立 于实现的OOA模型。
OOD主要解决与实现有关的问题,基于OOA模型, 针对具体的软、硬件条件(如机器、网络、OS、GUI、 DBMS等)产生一个可实现的OOD模型。
两种不同的观点
第8章 面向对象设计工作流
Company
LOGO
wuyan@hpu.edu.cn
学习目标
执行设计工作流 问题域部分设计 人机交互部分设计 控制驱动部分设计 数据管理部分设计 构件及部署部分设计
8.1 设计工作流
1、OOD模型
面向对象设计是在OOA模型基础上运用面向对象方 法,主要解决与实现有关的问题,目标是产生一个符合 具体实现条件的可实现的OOD模型。
Mortgage Class具有职责 Intilialize,update,and delete mortgages
Produce a Report用例方案1实现
Mortgage Class具有职责 Generate list of mortgage
❖ MSG系统的类图
❖ CRC图中列出某个类 的协作者,但并不是 和每个协作者都有相 关的职责。