对象模型描述类及相互关系,表达目标系统静态结构。
建立对象模型步骤:
- 确定分析类
- 确定类的关联
- 划分主体
- 确定属性
- 识别继承
- 反复修改
1.确定分析类
分析模型中,分析类是概念层次上内容,类直接与应用逻辑相关,不关注技术实现。
1.1找出候选分析类
(1)边界类
通常,一参与者与一用例间交互或通信关联对应一边界类

ATM系统用例图

边界类 | 说明 |
SetupForm | 开新账户的操作界面 |
DepositForm | 存款的操作界面 |
ATMWithdrawForm | ATM用户取款的操作界面 |
ATMBalanceForm | ATM查询余额的操作界面 |
ATMPasswordForm | ATM改变密码的操作界面 |
TellerWithdrawForm | Teller用户取款的操作界面 |
TellerBalanceForm | Teller查询余额的操作界面 |
TellerPasswordForm | Teller改变密码的操作界面 |
(2)控制类
控制类负责协调边界类和实体类,通常在现实世界没有对应的事物。 一般来说,一个用例对应一个控制类。

控制类 | 说明 |
SetupControl | 负责执行开新账户 |
DepositControl | 负责执行存款 |
WithdrawControl | 负责执行取款 |
BalanceControl | 负责执行查询余额 |
PasswordControl | 负责执行改变密码 |
(3)实体类
实体类通常是用例中的参与对象,对应着现实世界中“事物”

提取实体类方法:非正式分析法:需求陈述中名词。
例:用非正式分析法提取ATM系统中的实体类。
银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问
ATM系统分析员根据领域知识或常识提取出隐含的类。通信链路、事务日志
1.2筛选出正确的类
(1)冗余
储户与用户,现金兑换卡与磁卡及副本应去掉“用户”、“磁卡”、“副本”,保留“储户”和“现金兑换卡”。
(2)无关
与本问题密切相关类放进目标系统,去掉“成本”、“市”“街道”、“营业厅”、“储蓄所”。
(3)笼统
银行(总行和分行)、系统、软件、信息、访问(事务)。
(4)属性
现金、支票、取款额、账单、余额、分行代码、卡号、密码和类型。
(5)操作
需求陈述中既作名词又作动词的词,慎重考虑是作类合适,还是作类中操作合适。
(6)实现
事务日志、通信链路。
1.3筛选出的候选类
银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市街道,营业厅,储蓄所,柜员,储户,现金,支票,账 户,事务,现金兑换卡,余额,磁卡,分行代码,卡号、用户,副本,信息,密码,类型,取款额,账单,访问

2.确定类的关联
2.1初步确定关联
(1)提取动词或动词词组
- ATM、中央计算机、分行计算机及柜员终端组成网络
- 总行拥有多台ATM。
- ATM设在主要街道上。
- 分行提供分行计算机和柜员终端。
- 柜员终端设在分行营业厅及储蓄所内。
- 分行分摊软件开发成本。
- 储户拥有账户。
- 分行计算机处理针对账户的事务。
- 分行计算机维护账户。
- 柜员终端与分行计算机通信。
- 柜员输入针对账户的事务。
- ATM与中央计算机交换关于事务的信。
- 中央计算机确定事务与分行的对应关系。
- ATM读现金兑换卡。
- ATM与用户交互。
- ATM吐出现金。
- ATM打印账单。
- 系统处理并发的访问。
(2)需求陈述中隐含的关联
- 总行由各分行组成。
- 分行保管账户。
- 总行拥有中央计算机。
- 系统维护事务日志。
- 系统提供必要安全性。
- 储户拥有现金兑换卡。
(3)根据问题领域知识得出的关联
- 现金兑换卡访问账户。
- 分行雇用柜员。
2.2筛选
(1)已删除类之间关联
(2)与问题无关或与实现密切相关的关联删去
- 系统处理并发的访问
(3)瞬时事件
- “ATM读现金兑换卡”
- “ATM与用户交互”
- “中央计算机确定事务与分行对应关系”隐含“中央计 算机与分行通信”。
(4)三元关联
三个或三个以上对象关联,可分解为二元关联或限定关联。
如:“柜员输入针对账户的事务”分解成“柜员输入事务”和“事务修改账户”。
2.3进一步完善
(1)正名
"分行提供分行计算机和柜员终端"改为"分行拥有分行计算机"和"分行拥有柜员终端"。
(2)分解
把“事务”分解成“远程事务”和“柜员事务”。
(3)补充
需补充"柜员输入柜员事务"、"柜员事务输进柜员终端"、"在ATM上输入远程事务"和"远程事务由现金兑换卡授权"。
2.4原始类图

3.划分主题

4.确定属性
4.1需求陈述中的名词
(1)误把类当属性
独立存在更重要,则应为类。
(2)误把链属性作为属性
属性要依赖某关联链存在,则为关联类的属性。
(3)误把限定当属性
属性值固定下来可减少重数,则应为限定。
(4)误把内部状态当属性
对象的非公开内部状态不作属性。
(5)过于细化
忽略对大多数操作都没有影响的属性.
(6)存在不一致属性
分解两个类
4.2加上属性的实体类图

5.识别继承

6.反复修改
6.1修改
(1)分解“现金兑换卡”类
现金兑换卡有两独立功能:标志储户访问账号的权限;含有 分行代码和卡号的数据载体。(卡权限和现金兑换卡)
(2)“事务”由“更新”组成
更新包括取款、存款、查询。有自己属性(类型、金额),应独立存在。
(3)合并“分行”和“分行计算机”
同理合并总行和总行计算机。
6.2修改后的实体类图
