面向对象分析全解Word文档下载推荐.docx

上传人:b****6 文档编号:16515187 上传时间:2022-11-24 格式:DOCX 页数:14 大小:232.71KB
下载 相关 举报
面向对象分析全解Word文档下载推荐.docx_第1页
第1页 / 共14页
面向对象分析全解Word文档下载推荐.docx_第2页
第2页 / 共14页
面向对象分析全解Word文档下载推荐.docx_第3页
第3页 / 共14页
面向对象分析全解Word文档下载推荐.docx_第4页
第4页 / 共14页
面向对象分析全解Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

面向对象分析全解Word文档下载推荐.docx

《面向对象分析全解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《面向对象分析全解Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

面向对象分析全解Word文档下载推荐.docx

我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类

中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行:

(1)确定类和对象

(2)确定关联

(3)划分主题

(4)定义属性

(5)确定继承关系

(6)建立动态模型

(7)建立功能模型

(8)定义服务

需要注意地是在这里我们根本不强调顺序,更不是谈什

么步骤。

10.2需求陈述

需求陈述的主要任务是准确地回答“系统必须做什

么?

”,而不是“系统应该怎么做?

10.2.1书写要点

1022例子

我们用“ATM系统”(ATM是AutomaticTellerMachine的缩

写,意即自动柜员机)的开发作为OOA&

OOD的实例

图10.2ATM系统

10.3建立对象模型

10.3.1确定类与对象

1.找出候选的类与对象(例:

P236ATM系统)

一般来说,大千世界中的客观事物可分为5类:

1)可感知的物理实体,如:

飞机,汽车,房屋

2)人或组织的角色,如:

教师,医生,计算机系,学生处

3)应该记忆的事件,如:

飞行,演出,访问,交通事故

4)对象的相互作用,如:

购买,结婚,纳税

5)概念,如:

政策,刑法,泛化,集合

2.

筛选出正确的类与对象

我们需要确定的类与对象是:

(1)应该记录的对象

(2)需要它提供服务的对象

同时要关注下述6个方面:

1)冗余:

去掉冗余的类(如“用户”)

2)无关:

去掉无关的类(如“储蓄所”)

3)笼统:

去掉笼统的类(如“银行”)

4)属性:

区分属性和类(某个性质若具有很强的独立性应当作为“类”)

5)操作:

区分操作和类(本身具有属性且需独立存在的“操作”应当作为“类”)

6)实现:

忽略实现内容(应当去掉仅和实现有关的“类”,如“事务日志”)

10.3.2确定关联

对象之间的相互依赖、相互作用的关系就是关联。

在分

析的起始阶段,我们不必花过多的精力去区分关联和聚集,

聚集不过是一种特殊的关联,是关联的一个特例。

1.初步确定关联

ATM系统)

2.筛选

筛选时要关注下述5个方面:

1)已删去的类之间的关联也要删除

2)无关的或在实现阶段考虑的关联要删除

3)描述瞬时事件的关系不应作为关联(关联应该描述问题域的静态结构)

4)三个或三个以上对象的关联要作分解或描述成限定关联

5)冗余关联要删除

3.进一步完善

完善时要关注下述4个方面:

1)正名:

选择更明确的名字作为关联名

2)分解:

分解已确定的类以适用关联

3)补充:

及时补充遗漏关联

4)标明重数:

但无需花过多精力

图10.3ATM系统原始的类图

10.3.3划分主题

按问题领域而不是用功能分解来高度概括主题

10.3.4确定属性

属性是类中所定义的数据,它表明了对象的性质。

一般来说,确定属性的过程包括分析和选择两个步骤:

1.分析

通常用名词词组表示属性,^口:

“汽车的颜色”、“光标的位置”,而用形容词表示可枚举的具体属性,如:

“红色的”、“白色的”。

在分析阶段应该仅考虑与具体应用直接相关的属性,不要考虑那些纯粹用于实现的属性。

2.选择

选择时要关注下述6个方面:

1)区分对象与属性(仅关注其值的是属性);

2)区分关联类属性与对象属性(例:

依赖某个关联链的性质是关联类属性);

3)区分限定词和属性(能用限定词更好)

4)区分内部状态和属性(例:

某性质是对象的内部状态)

5)忽略无影响的属性(在分析阶段应该忽略对

大多数操作无影响的属性)

6)注意属性的相关性(分解该“类”)

图10.4ATM系统对象模型中的属性

1035识别继承关系

确定了类中的属性之后,就可以利用继承机制共享公共

性质,并对众多的类重新加以组织。

般来说,可以应用两种方式建立继承(即泛化)关系:

(1)自底向上:

抽象出现有类的共同性质泛化出父

类;

2)自顶向下:

把现有类细化成更具体的子类

输AM

输入►

1+

査型

日期

1十

-

I'

ll;

图10.5带有继承关系的ATM对象模型

1036反复修改

对象模型的建立是一个反复修改、逐步完善的迭代过

程。

对于初学者来说,可尝试用面向对象方法开发几个较小系统,取得一定的经验后,再总结更适合自己的工作方式

1.分解“现金兑换卡”类

2.“事务”由“更新”组成

3.把“分行”与“分行计算机”合并

图10.6修改后的ATM对象模型

10.4建立动态模型

般来说,建立动态模型的典型步骤如下:

 

(1)编写脚本,确保不遗漏正常的交互行为;

(2)从脚本中提取事件,确定每个事件的发送对象

(触发该事件动作的对象)和接受对象;

(3)画事件跟踪图(SequenceDiagram,时序图或顺

序图,描述对象之间的时间顺序)

(4)画状态图

(5)审查状态图的完整性和一致性

10.4.1编写脚本

脚本是指系统在某一执行期间内出现的一系列事件(脚

本描述事件序列,是用例的实例,是系统的一种实际使用方法。

),它描述用户(或其它外部设备)与系统之间的交互过程;

对于每个事件,脚本都应该指明触发该事件的动作对象(如:

系统、用户或其它外部事物)、接受事件的目标对

象,以及该事件的参数。

[目的]编写脚本的目的是保证不遗漏重要的交互步骤<

[实质]编写脚本的实质是分析用户对与系统交互过程的要求。

编写脚本时,首先编写正常情况的脚本,其次考虑特殊

情况,最后考虑出错情况;

如有可能还应该允许用户“异常

操作”。

此外还应该提供“在线帮助”、状态查询等在基本交互行为之上的“通用”交互行为。

表10.1ATM系统的正常悄况脚本

*ATM请储户插卡;

储户插人一张现金兑换卡

*ATM接嚨该卡并读它上面的分行代码和卡号

*ATM要求储户输入密码;

储户输入自己的密码】為4等数宇

•玄TN(请求总行验证卡号和密码|总行要求39号分行樓对储户密码’然后通知為TM说这张卡有效

*ATM要求储户选择事务类型(取款、转账、査询等};

储户选择乂取款”

・ATM要求储户输入取款额,储户输人細0

*ATM确认取款额在预先規定的限额内,然后要求嵐行处理这牛事务:

总行把请求转给分行,该分行成功地处理完这项事务井返回该账户的新余额

*ATM吐出现金并请储户拿走这些现金#储户拿走现金

*ATM问储户是習继续这映事务|储户回答“不“

*ATM打印脈单,退出现金兑换卡,请储户拿走它们;

储户取走账单和卡

*ATM请储户插卡

表】山2ATM的异常情况脚本

•ATM请储户插卡;

•A丁就接受这张卡并顷序读它上面的数字

•ATM要求犠码;

储户课输入鹽闕

•ATM请求思行验证输人的数字和密码’总行在向有关分行咨洵之后拒绝遠张卡

•ATM显示“密码错讯并请储户重新输人密码;

储户输入谴总行验证后知道这找输入的密码正确

•ATM请储户选择事务类型;

储户选择“取款”

•ATM询问取款额;

储户改蛮主意不想取款了,他按下“取消抄键

•ATM退出现金兑换卡’并诸储户拿走它;

储户拿走他的卡

•ATNI请储户插卡

1042设想用户界面

否喜欢一个系统起很重要的作用,因此在分析阶段也不能完

全忽略用户界面。

设计用户界面时重要的是用户和系统进行信息交换的方式

向储户显示的信息

EHHBSCHEESE||ENTER]|CLEAR||CANCER

胀单出口现金出口

图10.7ATM的界面格式

1043画事件跟踪图

脚本为建立动态模型(状态图)提供了很好的基础,但用自然语言书写的脚本还不够简明,并且会有二义性,因此在画状态图前,我们往往先画出事件跟踪图[简化的UML顺序图(SequenceDiagram,时序图)],为此需进一步明确事件

(事件就是引起系统做动作或(和)转换状态的控制信息)及事件与对象的关系。

1.确定事件

事件包括系统与用户(或外部设备)交互的所有信号、

输入、输出、中断、动作等,要注意的是

(1)对象的动作

也是事件;

(2)对控制流产生相同效果的那些事件应作为一类事件。

经过分析要确定每类事件的发送对象和接受对象。

2.画出事件跟踪图

从脚本中提取出各类事件,并确定每类事件的发送对象和接受对象,就可以用事件跟踪图把事件序列以及事件与对象的关系表示出来,事件跟踪图是扩充的脚本,更是简化了的UML顺序图。

益讣.乐匸蛾戸甘效°

耍求耶务英叫

'

轍心型」OWAiOMi

输人取就瓢

请:

瓯即灯门华抹厅卅爹瓏朗.

吐:

出残懂

工芒现金:

请求堪馥此鼻必帖或_

印贱爪■

退代-

图10.8ATM系统正常情况脚本的事件跟踪图(时序图)1044画状态图

状态图描述了事件与对象状态(对象生命周期中的阶段)的关系。

UML用状态图来表示对象的动态行为,它确定了由事件序列引出的状态序列。

系统分析员应仅考虑系统内具有重要交互行为的哪些类,即每个主动发送事件的对象类的动态行为用一张状态图来表示,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。

从一张事件跟踪图出发画状态图时,

象的事件,即考虑指向某条竖线(对象)的箭头线,把这些事件作为状态图中的有向边(箭头线),边上标以事件名,

两个事件之间的间隔就是一个状态。

:

」护&

Mill;

r[可读叫

显示主恥电丿

1卡[车可设的]

厂不可連的尸、£

{do^iCff.nI^P消

j佶息y

图10.9ATM类的状态图

图10.10总行类的状态图

图10.11分行类的状态图

1045审查动态模型

各个类的状态图通过共享事件合并起来,就构成了系统

的“动态模型”,应该细致审查动态模型的完整性和一致性

10.5建立功能模型

的数据处理功能,它由一组DFD组成,其中处理功能可以用IPO图(或表)、伪码等描述10.5.1画出基本系统模型图[最高层的DFD]

图10.12ATM系统的基本系统模型

10.5.2画出功能级数据流图

现金

tf

图10.13ATM系统的功能级数据流图

10.5.3描述处理框功能

表」63对更新账户功能的描述

更新账户(账号'

事务类型*金额)f现金额•厳单數据•信息

如果融熬额超过账户当前余额,拒绝该事务且不忖出现金"

如果取款额不超过账户当前余制’从余额中减去取款额后柞为新的余额,忖出储户要取的现金°

如果事务是存款,把存款额加到余额中得到新余额,不付出现金.

如果事务是查询,不忖出现金<,

在上述任何一种情况下,厳单内容都是’ATM号,日期,时间,岷号’事务类型.事务金额(如果有的话如新余额.

10.6定义服务

对象是由描述其属性的数据,以及可以对这些数据施

加的操作,封装在一起构成的独立单元。

在确定类中的操作时,既要考虑该类实体的常规行

为,又要考虑本系统中特殊的服务。

1.常规行为

在分析阶段可以认为,类中定义的每个属性都是可以访问

的,也就是类中已经定义了读、写该类每个属性的操作,

而无需显式表示这些常规操作。

2.从事件导出的操作

状态图中若有发往对象的事件,该对象必须要有相应的

操作

3.与数据流图中处理逻辑对应的操作

DFD中的每个处理逻辑都与一个对象(或几个对象)上的操作相对应。

4.利用继承减少冗余操作

应尽量利用继承机制减少所需定义的操作。

10.7小结

习题10

1.用面向对象方法分析研究本书习题系统,试建立它的对

象模型、动态模型和功能模型。

2.用面向对象方法分析研究本书习题预订系统,试建立它的对

3.用面向对象方法分析研究本书习题监护系统,试建立它的对

2第2题中描述的储蓄

2第3题中描述的机票

2第4题中描述的患者

4.下面是自动售货机系统的需求陈述,试建立它的对象模

型、动态模型和功能模型:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1