第5讲 面向对象的分析-建立对象模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
筛选
1 去冗余 例如磁卡,实际上就是现金兑换卡 2 去掉与系统无关的 如街道,成本,储蓄所 3 去掉抽象词 如银行,网络,系统,软件 4 将属性词去掉 如 分行代码,取款额,余额 5 属于操作的名词 如 6 实现阶段才考虑的 例如日志,通信链路
备选对象
ATM, 中央计算机,分行计算机,柜员终端, 总行,分行,柜员,储户,账户,事务,现 金兑换卡
在需求陈述中,找到一些名词词组 领域知识和常识 只需要重要的属性,不需要实现阶段的属性 不能把对象作为属性 不能把关联类的属性作为一般对象的属性 不能把限定当作属性,如分行代码是限定词,决定 总行拥有的哪一个分行 如果有毫不相关的属性,则可以考虑分解为两个类
识别继承关系
继承关系的识别,需要领域知识 自底向上,有共同属性泛化出父类 自顶向下,将父类细化成子类
1.面向对象分析过程
首先,系统分析员要对需求文档进行分析。发现和改正需求 文档中的歧义性、不一致性,剔除冗余的内容,挖掘潜在的 内容,弥补不足,从而使需求文档更完整、更准确。 然后,是需求建模。系统分析员根据提取的用户需求,即用 面向对象观点建立对象模型、动态模型和功能模型。
最后,是需求评审。通过用户、领域专家、系统分析员和系 统设计人员的评审,并进行反复修改后,确定需求规格说明。
确定类间关联
由需求陈述中的动词词组表示关联关系 确定隐含的关联
总行有多个分行构成 分行保管帐号 储户拥有现金兑换卡
根据问题域知识得到的关联
现金兑换卡访问帐号 分行雇佣柜员
筛选
1去掉前面已删除的对象引起的关联 2 去掉实现阶段考虑的关联 3 去掉瞬时事件(有更长期的联系存在) 4 将3元关联,变为两个2元的,或者限定的 5 去掉重复的关联。如总行拥有多台ATM, 事 实上是与(总台拥有中央计算机,中央计算 机与ATM通信)重复的
ห้องสมุดไป่ตู้
某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行 计算机及柜员终端组成的网络系统。ATM和中央计算机由总行投资购买。总 行 拥有多台ATM。,分别设在全市各主要街道上。分行负责提供分行计算机和柜 员终端。柜员终端设在分行营业厅及分行下属的各个储蓄所内。该系统的软件开 发 成本由各个分行分摊。 银行柜员使用柜员终端处理储户提交的储蓄事务。储户可以用现金或支票向 自己拥有的某个账户内存款或开新账户。储户也可以从自己的账户中取款。通常, 一个储 户可能拥有多个账户。柜员负责把储户提交的存款或取款事务输进柜员 终端,接收储户交来的现金或支票,或付给储户现金。柜员终端与相应的分行计 算机通信,分 行计算机具体处理针对某个账户的事务并且维护账户。 拥有银行账户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过 ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取款),或 查询 有关自己账户的信息(例如,某个指定账户上的余额)。将来可能还要求使用 ATM办理转账、存款等事务。 所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号。分行代码唯 一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。通常,一张 卡可以访 问储户的若干个账户,但是不一定能访问这个储户的全部账户。每张 现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须 考虑同时在若干 台.ATM上使用同样的现金兑换卡的可能性。也就是说,系统 应该能够处理并发的访问。 当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事 务的信息,并与中央计算机交换关于事务的信息。首先,.ATM要求用户输入 密 码,接下来ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算 机,请求中央计算机核对这些信息并处理这次事务。中央计算机根据卡上的分行 代码确 定这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密 码。如果用户输入的密码是正确的,ATM就要求用户选择事务类型(取款、查询 等)。当用 户选择取款时,ATM请求用户输人取款额。最后,ATM从现金出口吐 出现金,并且打印出账单交给用户。
面向对象的3个模型
对象模型总是很重要 设计人机交互,以及过程控制时,动态模型 很重要 涉及科学计算等问题,功能模型很重要
面向对象的5个层次 类与对 象层 属性层
属性
类边界 实例边界 实例连接
服务层
服务
消息
结构层
主题层
主题
主题(Subject)层:主题给出分析模型的总体概貌,是控制读者 在同一时间所能考虑的模型规模的机制。 类-&-对象(Class & Object)层:对象是数据及其处理的抽象。 它反映了保存有关信息和与现实世界交互的能力。 结构(Structure)层:结构表示问题域的复杂性。类 - 成员结构 反映了一般-特殊关系,整体 - 部分结构反映了整体 - 部分的关 系。 属性(Attribute)层:属性是数据元素,用来描述对象或分类结 构的实例,可在图中给出并在对象的储存中指定,即给出对象 定义的同时,指定属性。 服务(Serves)层:服务是接收到消息后必须执行的一些处理, 可在图上标明它并在对象的储存中指定,即给出对象定义的同 时,定义服务。
对象模型的5个层次
对应着面向对象分析中对象建模的5个活动, 这5项活动并没有先后次序,可以并行进行, 什么时候想起,什么时候补充。 面向对象分析的基本步骤:寻找类与对象, 识别结构,识别主题,定义属性,建立动态 模型,建立功能模型,定义服务
需求陈述
实现一个基于Android的手机拼图游戏,能计 时,能记录成绩,能切换不同的图,能按玩 家要求分割等分,能提示玩家走法。 需求陈述做什么而不是怎么做。哪些是必须 的功能,哪些是任选的,性能规定,与环境 的交互协议,适合的标准,扩充和可维护性 要求等
反复修改
1 根据功能独立性,将现金兑换卡分解为两个 类,其一负责权限,其二负责卡号里的数据 2 在”事务”中,独立出一个更新,一个事务包含 对帐户的若干次更新. 3 分行和分行计算机合并,总行和总行计算机 合并, 因为对分析来说,分开没有什么意义.
完善
1 给关联定义含义明确的名字。“分行拥有柜员终 端” 2 为了适应不同的关联,分解前面析出的类 如事务分解为远程事务和柜员事务 3 补充。 当分解出柜员事务后,多出几个关联,如 柜员输入柜员事务,ATM上输入远程事务 4 标明重数。
ATM系统原始的类图
确定属性
自动柜员机系统
某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行 计算机及柜员终端组成的网络系统。ATM和中央计算机由总行投资购买。总 行 拥有多台ATM。,分别设在全市各主要街道上。分行负责提供分行计算机和柜 员终端。柜员终端设在分行营业厅及分行下属的各个储蓄所内。该系统的软件开 发 成本由各个分行分摊。 银行柜员使用柜员终端处理储户提交的储蓄事务。储户可以用现金或支票向 自己拥有的某个账户内存款或开新账户。储户也可以从自己的账户中取款。通常, 一个储 户可能拥有多个账户。柜员负责把储户提交的存款或取款事务输进柜员 终端,接收储户交来的现金或支票,或付给储户现金。柜员终端与相应的分行计 算机通信,分 行计算机具体处理针对某个账户的事务并且维护账户。 拥有银行账户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过 ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取款),或 查询 有关自己账户的信息(例如,某个指定账户上的余额)。将来可能还要求使用 ATM办理转账、存款等事务。 所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号。分行代码唯 一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。通常,一张 卡可以访 问储户的若干个账户,但是不一定能访问这个储户的全部账户。每张 现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须 考虑同时在若干 台.ATM上使用同样的现金兑换卡的可能性。也就是说,系统 应该能够处理并发的访问。 当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事 务的信息,并与中央计算机交换关于事务的信息。首先,.ATM要求用户输入 密 码,接下来ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算 机,请求中央计算机核对这些信息并处理这次事务。中央计算机根据卡上的分行 代码确 定这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密 码。如果用户输入的密码是正确的,ATM就要求用户选择事务类型(取款、查询 等)。当用 户选择取款时,ATM请求用户输人取款额。最后,ATM从现金出口吐 出现金,并且打印出账单交给用户。