第7章面向对象分析(案例讲座)

上传人:命****币 文档编号:113701465 上传时间:2019-11-09 格式:PPT 页数:62 大小:948.01KB
返回 下载 相关 举报
第7章面向对象分析(案例讲座)_第1页
第1页 / 共62页
第7章面向对象分析(案例讲座)_第2页
第2页 / 共62页
第7章面向对象分析(案例讲座)_第3页
第3页 / 共62页
第7章面向对象分析(案例讲座)_第4页
第4页 / 共62页
第7章面向对象分析(案例讲座)_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《第7章面向对象分析(案例讲座)》由会员分享,可在线阅读,更多相关《第7章面向对象分析(案例讲座)(62页珍藏版)》请在金锄头文库上搜索。

1、软件工程,第7章 面向对象分析,2,面向对象的分析,面向对象分析的目的是对客观世界的系统进行建模。以前面介绍的模型概念为基础,结合“银行网络系统ATM”的具体实例来构造客观世界问题的准确、严密的分析模型。 分析模型有三种用途: 用来明确问题需求; 为用户和开发人员提供明确需求; 为用户和开发人员提供一个协商的基础,作为后继的设计和实现的框架。,3,4,系统分析的第一步是:陈述需求,分析者必须同用户一块工作来提炼需求,因为这样才表示了用户的真实意图,其中涉及对需求的分析及查找丢失的信息。 下面以“银行网络系统”为例,用面向对象方法进行开发。,5,银行网络系统问题陈述:,设计支持银行网络的软件,银

2、行网络包括人工出纳站和分行共享的自动出纳机。 每个分理处用分理处计算机来保存各自的帐户,处理各自的事务;各自分理处的出纳站与分理处计算机通信,出纳站录入帐户和事务数据; 自动出纳机与分行计算机通信,分行计算机与拨款分理处结帐,自动出纳机与用户接口接受现金卡,与分行计算机通信完成事务,发放现金,打印收据; 系统需要记录保管和安全措施;系统必须正确处理同一帐户的并发访问;每个分处理为自己的计算机准备软件,银行网络费用根据顾客和现金卡的数目分摊给各分理处。,6,7,系统分析的第二步是:建立对象模型,首先标识和关联,因为它们影响了整体结构和解决问题的方法, 其次是增加属性,进一步描述类和关联的基本网络

3、,使用继承合并和组织类, 最后操作增加到类中去作为构造动态模型和功能模型的副产品。,8,1.确定类,构造对象模型的第一步是标出来自问题域的相关的对象类,对象包括物理实体和概念。 常用的识别类的方法有:名词识别法、系统实体识别法、使用重用、从用例中识别类等。 所有类在应用中都必须有意义,在问题陈述中,并非所有类都是明显给出的。有些是隐含在问题域或一般知识中的。,9,按图所示的过程确定类和对象,10,(1)找出候选的类与对象,查找问题陈述中的所有名词,产生如下的候选类与对象。 软件 银行网络 出纳员 自动出纳机 分行 分处理 分处理计算机 帐户 事务 出纳站 事务数据 分行计算机 现金卡 用户 现

4、金 收据 系统 顾客 费用 帐户数据 访问 安全措施 记录保管,11,(2)筛选出正确的类与对象,根据下列标准,筛选出正确的类与对象,去掉不必要的类和不正确的类。 (1) 冗余类:若两个类表述了同一个信息 ,保留最富有描述能力的类。如“用户”和“顾客”就是重复的描述,因为“顾客”最富有描述性,因此保留它。 (2) 无关类:除掉与问题没有关系或根本无关的类。例如,摊派费用超出了银行网络的范围。 (3) 笼统(模糊)类:类必须是确定的,有些暂定类边界定义模糊或范围太广,如“记录保管”就模糊类,它是“事务”中的一部分。 在银行网络系统中,模糊类还有“系统”、“安全措施”、“银行网络”等。,12,(4

5、) 属性:某些名词描述的是其他对象的属性,则从暂定类中删除。如果某一性质的独立性很重要,就应该把他归属到类,而不把它作为属性。“现金 ”“卡号”“密码”等,应该作为属性对待。 属于属性的有:“帐户数据”、“收据”、“现金”、“事务数据”。,13,(5) 操作:如果问题陈述中的名词有动作含义,则描述的操作就不是类。但是具有自身性质而且需要独立存在的操作应该描述成类。如我们只构造电话模型,“拨号“就是动态模型的一部分而不是类,但在电话拨号系统中,“拨号“是一个重要的类,它日期、时间、受话地点等属性。 属于实现的如:“访问”、“软件”等。这些均应除去。在分析阶段不应该过早考虑系统的实现,因此,应该去

6、掉和实现有关的候选类。,14,最终确定的类为:,分行计算机 分行 出纳站 出纳员 分理处 中央计算机 自动出纳机 账户 现金卡 事务 顾客,15,2.准备数据字典,为所有建模实体准备一个数据字典。准确描述各个类的精确含义,描述当前问题中的类的范围,包括对类的成员、用法方面的假设或限制。,16,3.确定关联,两个或多个类之间的相互依赖、相互作用的关系就是关联。 可用各种方式来实现关联,但在分析模型中应删除实现的考虑,以便设计时更为灵活。 关联常用描述性动词或动词词组来表示,其中有物理位置的表示、传导的动作、通信、所有者关系、条件的满足等。 从问题陈述中抽取所有可能的关联表述,把它们记下来,但不要

7、过早去细化这些表述。,17,下面是银行网络系统中所有可能的关联,大多数是直接抽取问题中的动词词组而得到的。 在陈述中,有些动词词组表述的关联是不明显的。 最后,还有一些关联与客观世界或人的假设有关,必须同用户一起核实这种关联,因为这种关联在问题陈述中找不到。,18,(1)初步确定关联,银行网络问题陈述中的关联: 银行网络包括出纳站和自动出纳机; 分行共享自动出纳机; 分理处提供分理处计算机; 分理处计算机保存帐户; 分理处计算机处理帐户支付事务; 分理处拥有出纳站; 出纳站与分理处计算机通信; 出纳员为帐户录入事务;,19,自动出纳机接受现金卡; 自动出纳机与用户接口; 自动出纳机发放现金;

8、自动出纳机打印收据; 系统处理并发访问; 分理处提供软件; 费用分摊给分理处。,20,隐含的动词词组: 分行由分理处组成; 分理处拥有帐户; 分行拥有分行计算机; 系统提供记录保管; 系统提供安全; 顾客有现金卡。,21,基于问题域知识的关联: 分理处雇佣出纳员; 现金卡访问帐户。,22,(2)筛选,使用下列标准去掉不必要和不正确的关联: (1) 若某个类已被删除,那么与它有关的关联也必须删除或者用其它类来重新表述。在例中,我们删除了“银行网络”,相关的关联也要删除。 (2) 与问题不相干的关联或实现阶段的关联:删除所有问题域之外的关联或涉及实现结构中的关联。如“系统处理并发访问“就是一种实现

9、的概念。,23,(3)瞬时事件(动作):关联应该描述应用域的结构性质而不是瞬时事件,因此应删除“自动出纳机接受现金卡”,“自动出纳机与用户接口”等。 (4) 派生关联:省略那些可以用其他关联来定义的关联。因为这种关联是冗余的。 银行网络系统的初步对象图如图所示。其中含有关联。,24,25,系统分析的第三步是:确定类属性,属性是对象的性质,属性通常用修饰性的名词词组来表示. 只考虑与具体应用直接相关的属性,不要考虑那些超出问题范围的属性; 找出重要属性,避免那些只用于实现的属性要为各个属性取有意义的名字。,26,按下列标准删除不必要的和不正确的属性:,(1) 误把对象当作属性:若实体的独立存在比

10、它的值重要,那么这个实体不是属性而是对象。如在邮政目录中,“城市”是一个属性,然而在人口普查中,“城市”则被看作是对象。在具体应用中,具有自身性质的实体一定是对象。 (2) 把限定误码当成属性:若属性值取决于某种具体上下文,则可考虑把该属性重新表述为一个限定词。如“账号”“分行代码” (3) 名称:名称常常作为限定词而不是对象的属性,当名称不依赖于上下文关系时,名称即为一个对象属性,尤其是它不惟一时。,27,(4) 标识符:在考虑对象模糊性时,引入对象标识符表示,在对象模型中不列出这些对象标识符,它是隐含在对象模型中,只列出存在于应用域的属性。 (5) 误把内部状态当成属性:若属性描述了对外不

11、透明的对象的内部状态,则应从对象模型中删除该属性。 (6) 过于细化:忽略那些不可能对大多数操作有影响的属性。,28,29,系统分析的第四步是:使用继承来细化类,1 、自底而上 将现有类的共性一般化为父类。找出具有相同属性、关联、操作的类,来发现继承。例如:“出纳事务”和“远程事务”,可以将它们的共性一般化,得到父类“事务”。,30,31,2 、自顶而下 将现有类细化为更具体的子类。 如:例如:菜单,可以有固定菜单,顶部菜单,弹出菜单,下拉菜单等,这就可以把菜单类具体细化为各种具体菜单的子类。当同一关联名出现多次且意义也相同时,应尽量具体化为相关联的类, 例如“事务“从“出纳站“和“自动出纳机

12、“进入,则“录入站“就是“出纳站“和“自动出纳站“的一般化。,32,系统分析的第五步是: 完善对象模型,对象建模不可能一次就能保证模型是完全正确的,软件开发的整个过程就是一个不断完善的过程。 模型的不同组成部分多半是在不同的阶段完成的,如果发现模型的缺陷,就必须返回到前期阶段去修改,有些细化工作是在动态模型和功能模型完成之后才开始进行的。,33,(1) 几种可能丢失对象的情况及解决办法: 同一类中存在毫无关系的属性和操作,则分解这个类,使各部分相互关联; 一般化体系不清楚,则可能分离扮演两种角色的类 存在无目标类的操作,则找出并加上失去目标的类; 存在名称及目的相同的冗余关联,则通过一般化创建

13、丢失的父类,把关联组织在一起。,34,(2) 查找多余的类。 类中缺少属性,操作和关联,则可删除这个类。 (3)查找丢失的关联。 丢失了操作的访问路径,则加入新的关联以回答查询。,35,36,(4) 网络系统的具体情况作如下的修改: 现金卡有多个独立的特性。把它分解为两个对象:卡片权限和现金卡。 a.卡片权限:它是银行用来鉴别用户访问权限的卡片,表示一个或多个用户帐户的访问权限;各个卡片权限对象中可能具有好几个现金卡,每张都带有安全码,卡片码,它们附在现金卡上,表现银行的卡片权限。 b.现金卡:它是自动出纳机得到表示码的数据卡片,它也是银行代码和现金卡代码的数据载体。,37,38,“事务“不能

14、体现对帐户之间的传输描述的一般性,因它只涉及一个帐户,一般来说,在每个帐户中,一个“事务“包括一个或多个“更新“,一个“更新“是对帐户的一个动作,它们是取款,存款,查询之一。一个“更新“中所有“更新“应该是一个原子操作。 “分行“和“分行处理机“之间的区别似乎并不影响分析,计算机的通信处理实际上是实现的概念,将“中央计算机”并入“总行”。同理,将“分行计算机”并入“分行”。,39,40,系统分析的第六步是:建立动态模型,通常动态模型有:事件跟踪表、状态图。 建立动态模型的步骤分为 4 步: 1 、准备典型的对话脚本 动态分析从寻找事件开始,然后确定各对象的可能事件顺序。在分析阶段不考虑算法的执

15、行,算法是实现模型的一部分。,41,自动出纳机与用户交互的正常情况脚本:,( 1 )自动出纳机请求用户插入卡片;用户插入现金卡。 ( 2 )自动出纳机接受卡片并读出它的卡号。 (3) 自动出纳机要求密码,用户键入密码“ 4011 ”。 ( 4 )自动出纳机与总行确认卡号和密码;分理处检查它并通知承兑的自动出纳机。 ( 5 )自动出纳机要求选择事务类型(取款、存款、转户及查询),用户选择取款。,42,( 6 )自动出纳机要求现金数量;用户输入¥ 100 。 ( 7 )自动出纳机要求分行处理事务;分行把要求转给分理处,确认事务成功。 ( 8 )自动出纳机分发现金并且要求用户取现金;用户取现金。 (

16、 9 )自动出纳机提示用户是否想继续;用户指出不继续。 ( l0 )自动出纳机打印收据,退出卡,并请求用户取出它们;用户拿走收据和卡。 ( ll )自动出纳机请求用户插入。,43,自动出纳机与用户交互的异常情况脚本:,( 1 )自动出纳机请求用户插入卡;用户插入现金卡。 ( 2 )自动出纳机接受卡并读它的卡号。 ( 3 )自动出纳机要求密码;用户键入: 9999 :。 ( 4 )自动出纳机与分行确认卡号和密码,在咨询分理处后拒绝它。 ( 5 )自动出纳机指示密码错并要求重新键入;用户键入: 4011 : ,分行确认成功。,44,( 6 )自动出纳机请求用户选择事务类型;用户选择取款。 ( 7 )自动出纳机请求键入现金数量;用户改变选择并键入 “ CANCEL , , (取消)。 ( 8 )自动出纳机退出卡并且请求用户拿走卡;用户取出卡。 ( 9 )自动出纳机请求用户插入卡。,45,2.确定事件 确定所有外部

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号