- 29
- 0
- 约5.14千字
- 约 55页
- 2021-10-16 发布于广东
- 举报
第10章 面向对象分析;10.1 面向对象分析的基本过程;10.1 面向对象分析的基本过程;10.1 面向对象分析的基本过程;面向对象分析的过程
寻找类与对象
识别结构
识别主题
定义属性
建立动态模型
建立功能模型
定义服务
;10.2 需求陈述;ATM机系统问题描述
银行网络中包含柜员和 ATM,ATM 被共享中心所分享。
每家银行利用自己的计算机维护自己的账户并处理账户所属的交易,这些交易包括存款和取款。
某些银行拥有自己的柜员站,柜员站直接和该银行的计算机通信,柜员键入账户数据和交易数据。
ATM 和中心计算机通信,中心计算机再和银行清账。
ATM 接受金融卡,要求用户做些操作后和中心计算机通信,执行交易给予现金和打印收据。
系统要求保留交易记录和严守安全规定。
能同时存取客户的相同账户。
;自动取款机(ATM)系统
ATM系统
;10.3 建立对象模型;10.3 建立对象模型;10.3 建立对象模型;10.3 建立对象模型;10.3 建立对象模型;10.3 建立对象模型;直接提取动词短语得出的关联
ATM、中央计算机、分行计算机及柜员终端组成网络。
总行拥有多台ATM。
ATM设在主要街道上。
分行提供分行计算机和柜员终端。
柜员终端设在分行营业厅及储蓄所内。
分行分摊软件开发成本。
储户拥有账户。
分行计算机处理针对账户的事务。
分行计算机维护账户。
柜员终端与分行计算机通信。
柜员输入针对账户的事务。
ATM与中央计算机交换关于事务的信息。
中央计算机确定事务与分行的对应关系。
ATM读现金兑换卡。
ATM与用户交互。
ATM吐出现金。
ATM打印账单。
系统处理并发的访问。
;10.3 建立对象模型;10.3 建立对象模型;10.3 建立对象模型;10.3 建立对象模型;10.3 建立对象模型;10.3 建立对象模型;10.3 建立对象模型;经过筛选之后,得到ATM系统中各个类的属性,如图所示。
;建立类间的继承是为了共享其公共性质/属性。
继承也对类按层次加以组织。
继承关系反映出一定深度的领域知识,需领域专家密切配合才能完成。
继承前人的成果是提高效率的重要方法,也是复用的基础。;两种建立继承(即泛化)关系???方式:
(1) 自底向上: 抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思维过程。
例如,在ATM系统中,“远程事务”和“柜员事务”是类似的,可以泛化出父类“事务”;类似地,从“ATM”和“柜员终端”泛化出父类“输入站”。
(2) 自顶向下: 把现有类细化成更具体的子类或从已知类派生出一个新类,这模拟了人类的演绎思维过程:从一般到特殊。
带有形容词修饰的名词词组往往暗示了一些具体类。分析阶段应该避免过度细化。
;增加了继承关系之后的ATM对象模型
;一次建模过程很难得到完全正确的对象模型。
有些细化工作(例如,定义服务)是在建立了动态模型和功能模型之后才进行的。
由于面向对象的概念和符号在整个开发过程中都是一致的,因此远比使用结构分析、设计技术更容易实现反复修改、逐步完善的过程。
建模的步骤并不一定按照前面讲述的次序进行。
它给初学者提供了一个指南。
下面以ATM系统为例,讨论可能做的修改:
;1. 分解“现金兑换卡”类
“现金兑换卡”有两个相对独立的功能,它既是鉴别储户及使用ATM的权限的卡,又是ATM获得分行代码和卡号等数据的数据载体。
因此,把“现金兑换卡”类分解为“卡权限”和“现金兑换卡”两个类,将使每个类的功能更单一:前一个类标志储户访问账户的权限,后一个类是含有分行代码和卡号的数据载体。
多张现金兑换卡可能对应着相同的访问权限。;2. “事务”由“更新”组成
一个事务可包含对账户的若干次更新。更新指的是对账户所做的一个动作(取款、存款或查询)。“更新” 有自己的属性(类型、金额等),应该独立存在,因此应该把它作为类。
3. 把“分行”与“分行计算机”合并
区分“分行”与“分行计算机”,对于分析这个系统来说,并没有多大意义,为简单起见,把它们合并。类似地,应该合并“总行”和“中央计算机”。
下图给出了修改后的ATM对象模型,与修改前比较起来,它更简单、更清晰。;修正:
总行/分行的通信,
储户输入事务(ATM)
ATM读卡
拥有/通信
修改后的ATM对象模型;对于仅存储静态数据的系统(例如数据库)来说,
动态模型并没有什么意义。
但是若开发交互式系统时,动态模型却起着很重要的作用。
例如: 收集输入信息是目标系统的主要工作
;建立动态模型的三步:
编写典型交互行为的脚本, 不遗漏常见的交互行为。
从脚本中提取出事件,
原创力文档

文档评论(0)