《面向对象分析》PPT课件.ppt_第1页
《面向对象分析》PPT课件.ppt_第2页
《面向对象分析》PPT课件.ppt_第3页
《面向对象分析》PPT课件.ppt_第4页
《面向对象分析》PPT课件.ppt_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,10.2 面向对象分析,分析过程:提取系统需求的过程 分析的参与者:系统分析员、用户及领域专家,2,2) 面向对象的需求分析方法简介,1) 什么是OOA? 为什么需要OOA?,OMT(Object Modeling Technique)方法,对象模型 动态模型 功能模型,3,Coad&Yourdon 称OOA/OOD (Object Oriented Analysis)/ (Object Oriented Design),设计,分析,类和对象层,属性层,结构层,主题层,服务层,4,动态模型:执行过程中的行为 静态模型:描述系统组成和结构 逻辑模型:进行类和对象的定义 物理模型:软件系统的结构,Booch 方法 (1994),由名词导出对象,由形容词导出对象的属性, 由动词导出对象的操作,最后建立对象模型。,5,抽象 封装 继承 结构化分析原则,3) 面向对象的分析原则,4) 面向对象的分析过程,分析 系统设计 对象设计,迭代式过程,7,角色也是类。 类的继承关系是角色 的通用化关系.,(1)用例分析技术 用例:定义和描述系统的外部可见行为。 用例图=角色+系统边界+用例 +角色和用例的关系,图 10-5 角色的通用化关系,8,用例之间的关系,.扩展关系(也叫通用化关系),签订保险单,签订汽车购买合同,图 10-6 用例 扩展关系,extend,9,使用关系图,图 10-7 用例的使用关系,10,订购货物用例,前置条件:一个合法用户已登录到这个系统 事件流: 当客户选择订购货物时,用例开始 客户输入自己的姓名、地址 若客户只输入邮编,系统给出省、市名称 客户输入购买产品代码,11,订购货物用例(续),系统为每一项给出产品描述和价格 系统保存连续的已经订购的产品清单 客户输入信用卡支付信息 客户选择SUBMIT(某物) 系统检查输入信息,保存定单,向记帐系统转发支付信息,客户提交信息不对,系统提示修改,12,订购货物用例(续),支付确认,订单标记已确认,返回客户一个订单,用例结束,若系统无确认,提示客户修改或取消,修改回到7步, 取消,结束 后置条件:若订单未取消,保存在系 统里,做上标记。,13,订单处理系统,订单处理用例图 订单处理执行者描述 订单处理用例包和货物订购用例图 订购完成用例图 订购货物的上下文图 处理时间,14,订单处理用例图,订单处理,15,图 10-9 订单处理,订购货物,获得订单的状态,获得目录,取消订单,退货,获得产品信息,向账号中加钱,订单处理,记账系统,记录投诉,运送包裹,更新商品数量,接收退订项,从账号中取钱,打印信件标签,计算邮费,订单处理用例图,库存系统,16,订单处理用例包,包是载体,代表子系统,订购完成,货物订购,17,订购完成用例图,18,订购货物的上下文图,19,处理时间,20,哪些可以作为对象?,(2) 理解问题域,到何处去寻找对象 ?,图 10-15 对象来源,分析 过程,21,(3) 确定对象的方法,22,例:一家公司的ER图 对象模型,雇用 解雇,产品名 成本 重量,23,根据(事物)概念目录列表找出 名词或名词短语作为对象,表 10-2 概念目录列表,24,ATM系统,(4) 建立对象模型,图 10-17 ATM系统,25,建立对象模型,问题描述 ATM问题陈述: 某银行开发一个自动取款机系统,其组成:自动取款机、中央计算机、分行计算机、柜员终端组成的网络系统。 ATM 和中央计算机由中行投资购买。中行拥有多台ATM, 分别设在全市各个主要街道上。 分行负责提供分行计算机和柜员终端。 柜员终端设在分行营业厅及分行下属的各个储 蓄所内。该系统的软件开发成本由各个分行分摊。,26,银行柜员使用柜员终端处理储户提交 的储蓄事务。 储户可以用现金或支票向自己拥有的某个账户内存款或开新账户。储户可以从自己的账户中取款,通常一个储户可能拥有多个账户。 柜员负责把储户提交的存款或取款事务输进柜员终端,接收储户交来的现金或支票,或付给储户现金。 柜员终端与相应的分行计算机通信。分行计算机具体处理针对某个账户的事务并且维护账户。,27,拥有银行账户的储户有权申请领取现 金兑换卡,使用现金兑换卡可以通过ATM 访问自己的账户。 目前,仅限于用现金兑换卡在ATM上提 取现金,或查询有关自己账户的信息(如 有没有余额),将来还要使用ATM办理转账、 存款等事务。 现金兑换卡是一张磁卡,上面有分行 代码和卡号。,28,分行代码唯一标识总行下属的一个分行.卡号确定这张卡可以访问哪些账户。 通常,一张卡可以访问储户的若干个账户,但是不一定能访问这个储户的全部账户。 每张现金兑换卡仅属于一个储户所有,但是用一张卡可能有多个副本 因此, 必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性也就是说系统应当处理并发的访问。,29,当用户把现金兑换卡插入ATM之后, ATM 就与用户交互,以获取有关这次事务的信 息。并与中央计算机交换关于事务的信息。 首先, ATM要求输入密码,接下来ATM 把从这张卡上读到的信息以及用户输入的密 码传给中央计算机,请求中央计算机核对这 些信息并处理这些事务。,30,中央计算机根据卡上的分行代码确定这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码。 若用户输入的密码是正确的,ATM要求用户选择事务类型(取款、查询等), 当用户选择取款时,ATM请求用户输入取 款额。 最后ATM从现金出口吐出现金,并且打印出账单交给用户。,31,建立对象模型的步骤:,.确定类&对象,. 确定属性建立实例连接,. 确定结构,. 确定主题,. 确立服务建立消息连接,32,确定类&对象,找出候选的类&对象 找名词(34个) 银行,总行,分行,系统,中央计算机,分行计算机, 街道,市,营业厅,网络,储蓄所,软件,成本,信息, 柜员终端,柜员,储户,事务,现金,现金兑换卡, 支票,账户,用户,余额,磁卡,副本,卡号,密码, 类型,账单,取款额,自动取款机,分行代码,(访问),33,筛选出正确的对象和类 冗余: 储户、用户, 现金兑换卡、磁卡、副本 无关: 去掉:成本、市、街道、营业厅、储蓄所 去掉模糊类、概括类 银行指总行、分行;网络、系统、软件、信息等 去掉非独立的类(属性):描述其他对象的属性 实现:通信链路、事务日志设计实现时考虑,34,自动取款机(ATM) 中央计算机 分行计算机 柜员终端 总行 分行 柜员 储户 账户 事务 现金兑换卡,最后确定的对象:,35,确定属性建立实例连接 属性:描述对象静态特征的一个数据项. 名词词组表示属性、形容词表示枚举的属性. 注意 误把对象当作属性 在邮政目录中,“城市”是属性 在人口普查中,“城市”是对象,36,误把内部状态当成属性 构造一个“电话模型”时,“拨号”是操作 开发“电话自动记账”时,“拨号”是类,有属性(时间等) 不要把链属性误作为属性 误把限定当属性 是否存在不一致的对象,37,确定ATM对象的属性,“分行代码”是关联分行组成总行上的限定词 “卡号”是分行发放现金兑换卡关联上的限定词 “账号”是关联分行保管账户上的限定词 “雇员号”是分行雇用柜员上的限定词 “站号”是分行拥有柜员终端,柜员终端与分行 计算机通信及中央计算机ATM通信等三个关联 上的限定词,38,图 10-18 ATM对象模型中的属性及实例连接,分 行 代 码,1+,保管,1+,1+,1+,拥有,1+,修改,1+,输入,1+,修 改,1+,1+,1+,组成,通信,通信,1+,拥有,1+,通信,1+,拥 有,1+,输入,输入,授权,1+,3,拥 有,分 行 代 码,站号,柜员终端,分行计算机,站号,雇员号,分行 分行名,账号,账户 余额 限额 类型,卡号,远程事务,储户 姓名 地址,站号,发放,总行,ATM 现有金额 付出金额,中央计算机,1+,现金兑换卡 密码,类型 日期 金额,总行名,柜员事务,类型日期 金额,柜员,姓名,39,对象的关联,关联的元素:参与关联角色的种数。 关联的基数:两个相关联对象间相关数目 关联的角色:关联参与者的地位 关联的方向:关联约束发挥作用的方向,图 10-19 对象的单向、双向关联,40,关联的次序:对多关联的多端对象进行排序 关联的共享性:共享的对象可与多个对象建立联系,对象的关联,图 10-20 对象的次序、共享关联,41,特例,类可以与自身发生关联,图 10-21 对象的自身关联,经理,一对一 一对零或一(可选) 一对多 多对多,42,把关联映射为类,关联类的一些属性不属于任何一个被关联类 的属性,可以把关联映射为一个类。,图 10-22 关联映射为类,43,如果链上的类含有操作,可以将 链上的类改为中间类,图 10-23 加入中间类,姓 名 学 号,44,修饰关联,雇主,为工作,雇用数目,图 10-24 修饰关联类,45,关联间的约束,46,三元或多元关联问题,用词组定义限定词 增设对象类,47,确定ATM的关联,直接提取动词短语得出的关联(18个关联) ATM、中央计算机、分行计算机、 柜员终端组成网络。 总行有 多台ATM ATM设在 主要街道上 分行提供 分行计算机、柜员终端 柜员终端设在 分行营业厅及储蓄所内 分行分摊 软件开发成本 储户拥有 账户 分行计算机处理 针对账户的业务,48,直接提取动词短语得出的关联 分行计算机 维护 账户 柜员终端与分行计算机 通信 柜员 输入 针对账户的事务 ATM与中央计算机 交换 关于事务的信息 中央计算机 确定 事务与分析的对应关系 ATM 读 现金兑换卡 ATM与用户 交互 ATM 吐出 现金 ATM 打印 账单 系统 处理 并发的访问,49,需求陈述中的隐含关系 总行由各行 组成 分行 保管 账户 总行 拥有 中央计算机 系统 维护 事务日志 系统 提供 必要的安全性 储户 拥有 现金兑换卡 根据问题域、知识得出的关联 现金兑换卡 访问 账户 分行 雇用 柜员,50,已被删去类之间的关联 ATM、中央计算机、分行计算机、柜员终端组成网络; ATM设在主要街道上; 分行分摊软件开发成本 系统提供必要的安全性; 系统维护事务日志 ATM 吐出现金; ATM打印账单; 柜员终端设在分行营业厅及储蓄所内. 与问题无关的或在实现中要考虑的关联去掉 分行计算系统处理并发的访问,去掉不正确、不必要的关联,51,发现一般-特殊结构 具有领域的分类知识 按常识考虑事物的分类 用一般-特殊关系去发现一般-特殊 结构 考虑领域范围内的复用,确定结构,一般-特殊结构 (分类结构),52,特殊类没有自己的特殊的属性和服务,一般-特殊结构的化简,图 10-27 一般-特殊结构的化简,53,.,通过增加一般类的属性和服务取消特殊类,54,取消用途单一的一般类,图 10-29 一般-特殊结构的化简,55,减少继承的层次,56,利用关联关系(实例连 接)调整多继承为单继承,将多继承转为无继承 关系的类和对象,图 10-30 一般-特殊结构的化简,57,Java 实现轮廓: abstract public class Figure abstract public void Draw(); protected pos position; public class Group extends Figure public void Draw(); for(int i=0 ; i figures. Length ; i+) figuresi.Draw(); private Figure figures; Public class polygon extends Figure public void Draw() /*画多边形的代码*/ ,例,58,整体部分结构又称为组装结构, 描述对象之间的组成关系,聚合关系,整体部分结构,整体端的重数 不为1即可.,共享聚集,图 10-31 共享聚集,59,嵌套对象,图10-32 组合聚集,注意: 整体重数必须是 1或0,部分重数任意.,60,发现整体部分结构,客观世界存在的整体部分关系(物理上的) 如机器和它的零 件,人体和各部分器官。 组织机构上下级关系 如学校与各院、系。公司下设生产 部门、营销部门 事物的包容性 如生产车间由机器、管理人员、工人等。 抽象事务和某个抽象方面 事的章、节。 具体事物和它的某个抽象方面 人员、基本情况(姓名、出生年月),61,图 10-33 情况1:类的复用,几种情况:,62,图 10-34 情况2:作为领域的复用构件,63,图10-35 情况3 :松散的整体部分结构,表示数量不定的组成部分,64,图 10-36 情况4:动态变化的对象,用整体-部分结构表示对象特征的动态变化,65,(e) 确定主题(subject),图 10-37 ATM 系统划分成三个主题,1,2,66,建立动态模型,编写脚本 确定各个对象之间的事件 构造事件追踪图(交互图) 构造状态图 添加活动和动作 验证一致性、完整性,建立顺序图、协作图、状态图、活动图,步骤:,67,如:ATM系统正常情况下的脚本,68,ATM系统异常情况下的脚本:,69,a) 顺序图 (交互图、事件追踪图、序列图) 展示对象之间的交互顺序, 这些交互是指在场景或用例的事件流 中发生的。,70,c)状态图,当一个对象接受消息时做什么? 状态图的目的:描述对象的内部工作。,71,顺序图中: 参与者符号 对象符号 生命线符号 或消息符号 如:,名,72,例:“查询可用项目”用例的顺序图,图 10-39 查询可用项目顺序图,73,10-40 ATM系统正常情况下的对象交互,74,开发顺序图的步骤: 确定所有与场景有关的对象参与者 基于活动流,确定每一个需要用于完成 场景的消息 是发送还是有条件的发送每一个消息 正确地为这些消息排队,并附在合适的 参与者或对象生命线上 给消息加上形式化的语法以描述条件、 消息名、要传递的参数 加上响应消息和通信,以使顺序图完整,75,76,例:“查询可用项”的协作图,图 10-42 “查询可用项”的协作图,77,c)状态图,当一个对象接受消息时做什么? 状态图的目的:描述对象的内部工作。,78,状态图如下:,图 10-44 状态图符号,79,例 电梯的状态图,80,(5) 状态图中的事件与类中操作的关系,图 10-46 状态图中事件与类的操作,81,Java的实现: Public class state public final int Display=1; public final int Set_hours=2; public final int Set_minutes=3; public int Value; Public class watch private State State=new State(); private DigitalDisplay Lcd=new DigitalDisplay(); public watch(),82, State.Value=State.Display; Lcd.display_time(); Public void mode_button() switch(State.Value) case State.Display; Lcd.display_time(); State.Value=State.Set_hours; break; case State.Set_Hours: Lcd.display_hours();,83,State.Value=State.Set_minutes; break; case State.Set_minutes: Lcd.display_time(); State.Value=State.Display; Public void inc() switch(State.Value) case State.Display: break; case State.Set_hours:,84,Lcd.inc_hours(); break; case State.Set_minutes: Lcd.inc_hours(); break; case State.Set_minutes: Lcd.inc_minutes(); break; ,85,状态图的开发,检查类图,选择出需要状态图的类. 标识所有类的全部顺序图的所有输入信息. 考虑物理对象的状态,转换成相对应的系统状态. 考虑类状态图与顺序图之间关系,建立状态图片段. 找出并行的状态. 使用适当的消息事件,保护条件,行动表达式,扩展每一个转换. 检查和测试每一个状态图.,86,图 10-47 ATM 状态图中,ATM 状态图,87,“总行类”状态图:,图10-48 总行类状态图,88,“分行类”状态图:,图 10-49 分行类状态图,89,d) 活动图 (activity diagram),显示动作和结果,着重描述操作(方 法)实现中所完成的工作,及使用用 例或对象中的活动。 活动图是状态图的一个变种。,90,有守卫条

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论