第十章 面向对象分析(wang)
软件工程导论第10章面向对象分析
易于理解,同时减少了代码冗余和重复,提高了开发效率和代码质量。
03
提高软件的可重用性
面向对象分析鼓励使用抽象和封装技术,使得软件组件更加模块化和可
重用,减少了重复开发的工作量,提高了软件开发的效率。
02
面向对象分析的主要步骤
问题识别
总结词
明确问题的本质和范围
详细描述
在面向对象分析中,问题识别是首要步骤,它要求对问题进行深入理解和明确, 包括确定问题的范围、目标、限制条件等,以便为后续的分析和设计工作提供 清晰的方向。
面向对象分析的优势与不足
过度抽象
面向对象分析有时会过度抽象,导致 系统过于复杂,难以理解和实现。
缺乏对系统流程的关注
面向对象分析更关注静态结构,可能 忽略系统流程和动态行为。
面向对象分析与传统分析方法的结合使用
在实际软件开发中,可以结合 面向对象分析和传统分析方法, 取长补短,提高软件开发的效
率和成功率。
05
面向对象分析与传统分析方法的 比较
传统分析方法的问题与挑战
缺乏对系统整体结构的考虑
传统分析方法往往只关注单个功能或模块,忽略了系统整体的结 构和关系。
难以处理复杂系统
对于复杂系统,传统分析方法难以有效地进行抽象和建模。
难以维护和扩展
由于缺乏整体结构和面向对象的思维,传统分析方法构建的系统往 往难以维护和扩展。
对象是指系统中具有明确边界和状态 的结构,它可以包含数据和操作,并 且具有封装性、继承性和多态性等特 征。
面向对象的基本特征
封装
封装是将对象的属性和操作封装 在一起,形成一个独立的实体, 对外隐藏内部实现细节,只通过 接口与外界交互。
继承
继承是指子类可以继承父类的属 性和方法,并且可以扩展或修改 它们,从而实现代码的重用和扩 展。
第10章 面向对象分析
分析人员和用户一起研究和讨论才能准确表达用户的要求, 并找出遗漏的信息。
《软件工程》~黄进~
※ 第10章 面向对象分析 ※
10
10.1.2 需求陈述(2)
实例:
用OTM(Object Modeling Technique)开发方法, 以ATM(Auto Take Money )系统为例,提出需 求陈述。
通过用户、领域专家、系统分析员和系统设计人员的 评审,并进行反复修改后,确定需求规格说明。
注意事项:
1) 需求分析是复杂而又艰辛的过程。 2) 系统分析人员应该多和用户交流,认真和领域
专家探讨。 3) 必须在领域专家的指导和密切配合下进行,才
能有效地完成任务。
《软件工程》~黄进~
※ 第10章 面向对象分析 ※
码传给中央计算机,请求中央计算机核对这些信息并处理这 次事务。 d) 中央计算机根据卡上的分行代码确定这次事务与分行的对 应关系,并且委托相应的分行计算机验证用户密码。 e) 如果用户输入的密码是正确的,ATM就要求用户选择事务 类型(取款、查询等)。 f) 当用户选择取款时,ATM请求用户输入取款额。 g) 最后,ATM从现金出口输出现金,并且打印出账单交给用 户。
《软件工程》~黄进~
※ 第10章 面向对象分析 ※
2
本章目录(II)
10.2.1.2.4 属性准则 10.2.1.2.5 操作准则 10.2.1.2.6 实现准则
10.2.2 确定关联
10.2.2.1 初步确定关联 10.2.2.2 筛选 10.2.2.3 完善关联
10.2.3 划分主题 10.2.4 确定属性
面向对象分析过程是提取和确定系统需求的过程。
第十章 状态机图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
对应于触发器转换,没有明确的触发器的转换成为结束转换或无触 发器转换,是在状态的内部活动执行完毕后隐式触发的。
转换——事件
能够在触发器中接收的事件有以下四种:
调用事件:调用事件表示对象接收到一个调用操作的请求。其期待的结 果是事件的接收者触发一个转换并执行相应的操作。
改变事件:改变事件的发生依赖于事件中某个表达式所表达的布尔条件。 改变事件没有参数,要一直等到条件被满足才能发生。
信号事件:信号由一个对象准确地送给另一个或一组对象。发送给一组 对象的信号可能触发每个对象的不同转换。
时间事件:时间事件的发生依赖于事件中的一个时间表达式。比如,可 以让对象进入某状态后经过一段给定的时间或到达某个绝对时间后发生 该事件。
转换——事件
stm 订单类 Unselected
click(posX, posY) [posX==x and posY==y]
Selected
(a)
SingleSelectionMode shiftKeyUp MultiSelectionMode shiftKeyDown (c)
状态机图
状态机 状态机图
状态机图的基本概念
状态机
状态机是一种行为,它说明对象在其生命周期中响应事件所经历的 状态变化序列以及对那些时间的响应。
一般情况下,一个状态机依附于一个类,用来描述这个类的实例的 状态及其转换,和对接收到的事件所做出的响应。此外,状态机也可 以依附于用例、操作、协作等元素上,描述它们的执行过程。
等待支付
[立即支付] 审核完成
[及时支付]
[超出支付时限]
审核失败
状态机图
第10章 面向对象分析
第10章 面向对象分析
第10章 面向对象分析
• 面向对象软件开发技术
– 面向对象分析(OOA) – 面向对象设计(OOD) – 面向对象实现(OOP)
面向对象技术是一个有全新概念 的开发模式,其特点是:
(1)方法是对软件开发过程所有阶段进 行综合考虑而得到的; (2)从生存期的一个阶段到下一个阶段 所使用的方法与技术具有高度的连 续性;
取消交易
顾客可在按下选择键前任何一个时刻,拉动退币杆取 消交易收回硬币。
自动售货系统系统
-端1 * -端2
自动售货系统::售货
*
顾客
-端2
-端1 *
自动售货系统::供货
*
供货人
-端1 * -端2
自动售货系统::取货款
*
收银员
自动售货系统系统
-端1 *
-端2
售货
*
<<extends>>
售散装饮料
顾客
• 业务中的执行者扮演什么角色?这些角色可以 看作类,如客户、操作员等。
(2)筛选对象类,确定最终对象类 我们可以用以下选择特征来确定最终的对象: 1) 保留的信息:仅当必须记住有关潜在对象的 信息,系统才能运作时,则该潜在对象在分 析阶段是有用的; 2) 需要的服务:潜在对象必须拥有一组可标识 的操作,它们可以按某种方式修改对象属性 的值; 3) 多个属性:在分析阶段,关注点应该是“较 大的”信息(仅具有单个属性的对象在设计 时可能有用,但在分析阶段,最好把它表示 为另一对象的属性);
定义服务
• 对象=属性+操作(服务) • 因为在动态模型和功能模型中更明确地描 述了每个类中应该提供哪些服务,所以在 建立了这两个模型后才能最终确定类中应 有的服务。 • 事实上,在确定类中应有的服务时,既要 考虑该类实体的常规行为,又要考虑在本 系统中特殊需要的服务。
第10章面向对象分析全解
第10章面向对象分析10.1面向对象分析的基本过程不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。
图:参照当前系统建立目标系统面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。
10.1.1 概述系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。
[[注注]]“OOA 就是抽取和整理用户需求并建立问题域精精确确模模型型的过程。
”(P231)——这在一开始能做到吗?——扯蛋10.1.2 3个子模型与5个层次面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。
建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。
对于一个大型复杂系统来说对对象象模模型型一般由下述5个层次组成:图10.2 复杂问题的对象模型的5个层次其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。
其实上述5个层次就是OOA中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。
我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行:(1)确定类和对象(2)确定关联(3)划分主题(4)定义属性(5)确定继承关系(6)建立动态模型(7)建立功能模型(8)定义服务需要注意地是在这里我们根本不强调顺序,更不是谈什么步骤。
10.2需求陈述需求陈述的主要任务是准确地回答“系统必须做什么?”,而不是“系统应该怎么做?”10.2.1书写要点10.2.2例子我们用“ATM系统”(ATM是Automatic Teller Machine的缩写,意即自动柜员机)的开发作为OOA&OOD的实例。
软件工程第10章 面向对象分析(简)
单击此处编辑母版标题样 下图所示为自动取款机(ATM)系统(作为OO分析和OO设计实例) (ATM)系统 OO分析和OO设计实例 下图所示为自动取款机(ATM)系统(作为OO分析和OO设计实例) 式
10.2.2 需求陈述书写举例
ATM系统 图10.2 ATM系统
单击此处编辑母版标题样 自动取款机(ATM)系统需求陈述 P234): (ATM)系统需求陈述( 自动取款机(ATM)系统需求陈述(P234): 某银行拟开发一个自动取款机系统,它是一个由自动取款机、 某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计 式
主题含义:主题是指导开发人员和用户理解大型、 主题含义:主题是指导开发人员和用户理解大型、复杂模型的一种机 实际上, 制。实际上,主题就是对对象模型所涉及的诸多类和对象按照问题空 间的组成范围(方面)进行划分和归类。 间的组成范围(方面)进行划分和归类。 5个层次对应着建立对象模型的5项主要活动:找出类与对象,识别结 个层次对应着建立对象模型的5项主要活动:找出类与对象, 识别主题,定义属性,定义服务。 构,识别主题,定义属性,定义服务。 面向对象分析的一般步骤:寻找类与对象,识别结构,识别主题, 面向对象分析的一般步骤:寻找类与对象,识别结构,识别主题,定 义属性,建立动态模型,建立功能模型,定义服务。 义属性,建立动态模型,建立功能模型,定义服务。
单击此处编辑母版标题样 式
复杂问题的对象模型的5 图10.1 复杂问题的对象模型的5个层次
单击此处编辑母版标题样 对象模型5个层次的含义:类与对象、结构(类或对象之间的关系)、 对象模型5个层次的含义:类与对象、结构(类或对象之间的关系)、 式 属性和服务的概念,已经在第9章介绍过。现在介绍主题的概念。 属性和服务的概念,已经在第9章介绍过。现在介绍主题的概念。
第10章面向对象分析(OOA)
建立模型:
系统分析员应该深入理解用户需求,抽象出目标系 统的本质属性,并用模型准确地表示出来
分析模型应该成为对问题的精确而又简洁的表示 后继的设计阶段将以分析模型为基础
通过建立分析模型能够纠正在开发早期对问题域的 误解
建模的过程中,系统分析员必须认真向领域专家学 习
注意结果的可重用性
候选类:
银行,自动取款机(ATM),系统,中央计算机,分 行计算机,柜员终端,网络,总行,分行,软件, 成本,市,街道,营业厅,储蓄所,柜员,储户, 现金,支票,账户,事务,现金兑换卡,余额,磁 卡,分行代码,卡号,用户,副本,信息,密码, 类型,取款额,账单,访问
根据领域知识或常识进一步把隐含的类与对象 提取出来
当用户把现金兑换卡插入ATM之后,ATM就与 用户交互,以获取有关这次事务的信息,并与 中央计算机交换关于事务的信息。首先,ATM 要求用户输入密码,接下来ATM把从这张卡上 读到的信息以及用户输入的密码传给中央计算 机,请求中央计算机核对这些信息并处理这次 事务。中央计算机根据卡上的分行代码确定这 次事务与分行的对应关系,并且委托相应的分 行计算机验证用户密码。如果用户输入的密码 是正确的,ATM就要求用户选择事务类型(取款、 查询等)。当用户选择取款时,ATM请求用户输 入取款额。最后,ATM从现金出口吐出现金, 并且打印出账单交给用户。
需求陈述的内容包括:
问题范围 功能需求 性能需求 应用环境及假设条件等
应该阐明“做什么”而不是“怎样做” 应该描述用户的需求而不是提出解决问题的方法 应该指出哪些是系统必要的性质,哪些是任选的 需求陈述可简可繁、要尽力做到语法正确 最好是分析员和系统用户共同完成
10.2.2 例子
面向对象分析
面向对象分析:是确定需求或者业务的角度,按照面向对象的思想来分析业务。
例如:OOA只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象。
OOA与结构化分析有较大的区别。
OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
基本步骤:
在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤:
第一步,确定对象和类。
这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。
类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。
第二步,确定结构(structure)。
结构是指问题域的复杂性和连接关系。
类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
第三步,确定主题(subject)。
主题是指事物的总体概貌和总体分析模型。
第四步,确定属性(attribute)。
属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。
第五步,确定方法(method)。
方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。
对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。
软件工程导论_第十章
2. OOA基本任务是:
运用面向对象的方法,对问题域和系统责任 进行分析和理解,找出描述问题域及系统责任所需的 对象,定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户功能需求的 OOA模型。
问题域:被开发系统的应用领域,记载现实世界中要
由这个系统进行处理的业务范围。现实世界中系统 所要解决问题的领域为“问题域”,如“银行业务” 属于“银行的问题域”。 系统责任:所开发的系统应该具备的职能。
• “小镇”是牙科诊所的地址属性,不是独 立的对象;“软件系统”和“系统”是 同义词,指的是将要开发的软件产品, 不是问题域中的对象;“就诊时间”、 “预约时间”和“约定时间”在本问题 陈述中的含义相同,指的都是预约的就 诊时间,实际上,预约的就诊时间既包 括日期又包括时间,但是,它们是预约 登记表包含的属性,不是问题域中的独 立的对象;“名字”和“姓名”是同义 词,应该作为病人和预约登记表的属性;
我们目标是尽可能全面的发现属性,宁可多费时, 也不要遗漏所需要的属性。
10.3.5 识别继承关系
继承关系的建立实质上是知识抽取过程,它应该 反映出一定深度的领域知识,因此必须有领域专家密 切配合才能完成。通常,许多归纳关系都是根据客观 世界现有的分类模式建立起来的,只要可能,就应该 使用现有的概念。
10.3 建立对象模型(类图)
1. 描述系统静态的对象模型(类图)是面向对象
的三个模型中的基本模型。 2. 它表述了系统中各个对象的类型及其间存在 的各种关系。在面向对象建模中,建立类图是最 基本的任务;建立类图也是最需要花费精力和时 间的技术活动。
3. 该模型主要关心系统中的:
①对象的结构; ②属性; ④关联; ⑤类的层次。 ③操作和方法;
面向对象的系统分析
学生
0-n
1
注册
出纳窗口
0-n
1
缴注册费
图10.15 参与者—事务模板
图10.16 地方—事务模板
1 注册费细目
学生
1
0-n
学院
缴注册费 1-n
图10.18 参与者--地方模板
图10.19 事务—事务细目模板
注册费项目 0-n
1 注册费细目
T3—保险费
实验费 体检费 保险费 学费
项目
T3--学费 T2--实验费 T2--学费 T1—保险费 T1-学费
其他事件流A1: (1)控制面板响铃一次. (2)系统复位. (3)执行事件流A0. 错误事件流E1: (1)控制面板显示系统出错. (2)结束使用案例.
10.3.2 类—责任—协作者模型
类—责任—协作者模型:用于描述用户的 需求,标出对象和类。 构成:CRC卡片,顶部: 类名,中左部: 责 任,中右部: 协作者。
10.3.1 使用案例
描述目标系统的一种使用情况。
1)角色 2)使用案例作用 3)使用案例图示 4)使用案例描述(事件流方法)
1)角色
和系统通讯并外部于系统的任何事物 (人、设备)。 特点:① 一个角色代表一类外部实体 ② 仅起一个作用 主要角色:直接并经常和系统相互作用。 次要角色:支持系统,使主要角色起作用。
class class_B { public: class_B( ); ~class_C( ); … }
面向对象分析
面向对象分析
面向对象分析是计算机科学领域中使用最广泛的一种分析技术,它是一种结构化的分析方法,是系统分析的更新与系统设计的预备工作。
面向对象分析可以帮助我们更好地理解和分析现有系统,并为系统重构提供指导。
面向对象分析是一种以对象为中心,以建模和分析实体、对象和对象之间的关系为主要任务的分析方法。
它的主要目的是将概念抽象为实体,然后利用视图及关系描述它们之间的关系。
面向对象分析包括分析、设计、建模过程,分析过程也称为面向对象分析(OOA)。
面向对象分析强调对对象的分析,对象可以看作对实际世界中的实际事物的抽象。
对象可以由属性和行为组成,属性描述了对象的内部状态,行为描述了它如何处理消息。
在面向对象分析中,这种抽象事物被描绘为类,每个类有一组共享的属性和行为。
面向对象分析和设计的主要工作是抽象建模,确定对象之间的关系,并利用抽象和关系建模系统。
建模可以帮助我们清楚地了解系统结构,以及每个系统元素之间的联系。
一旦建模完成,可以使用模型来设计、分析和实现高级的系统。
面向对象分析是一种结构化的分析方法,用于理解和描述系统的行为,从而有效地构建高质量的系统。
它的关键是建立系统的实体、关系和视图,从而提出系统的结构,并提出系统实现的可行方案。
总体而言,面向对象分析是一种重要而普遍应用的管理技术,它是系统分析和设计过程中的重要组成部分。
对对象的分析有助于进行
更好的系统设计,增强了系统容量,提高了系统灵活性和性能,为组建现代软件系统提供了可行的工具。
软件工程导论 第10章 面向对象分析
第10章面向对象分析不论采用哪种方法开发软件,分析的过程都是提取系统需求的过程。
分析工作主要包括3项内容,这就是理解、表达和验证。
首先,系统分析员通过与用户及领域专家的充分交流,力求完全理解用户需求和该应用领域中的关键性的背景知识,并用某种无二义性的方式把这种理解表达成文档资料。
分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型、动态模型和功能模型组成)。
由于问题复杂,而且人与人之间的交流带有随意性和非形式化的特点,上述理解过程通常不能一次就达到理想的效果。
因此,还必须进一步验证软件需求规格说明的正确性、完整性和有效性,如果发现了问题则进行修正。
显然,需求分析过程是系统分析员与用户及领域专家反复交流和多次修正的过程。
也就是说,理解和验证的过程通常交替进行,反复迭代,而且往往需要利用原型系统作为辅助工具。
面向对象分析(OOA)的关键是识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。
在用面向对象观点建立起的3种模型中,对象模型是最基本、最重要、最核心的。
10.1面向对象分析的基本过程10.1.1 概述面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。
通常,面向对象分析过程从分析陈述用户需求的文件开始。
可能由用户(包括出资开发该软件的业主代表及最终用户)单方面写出需求陈述,也可能由系统分析员配合用户,共同写出需求陈述。
当软件项目采用招标方式确定开发单位时,“标书”往往可以作为初步的需求陈述。
需求陈述通常是不完整、不准确的,而且往往是非正式的。
通过分析,可以发现和改正原始陈述中的二义性和不一致性,补充遗漏的内容,从而使需求陈述更完整、更准确。
因此,不应该认为需求陈述是一成不变的,而应该把它作为细化和完善实际需求的基础。
在分析需求陈述的过程中,系统分析员需要反复多次地与用户协商、讨论、交流信息,还应该通过调研了解现有的类似系统。
第10章---面向对象分析
(2) 与问题无关的或应在实现阶段考虑的关联
• 如: “系统处理并发的访问”
(3) 瞬时事件
• 关联应该描述问题域的静态结构,而不应该是一个瞬时事 件。 • 如: “ATM读现金兑换卡”
确定关联
(4) 三元关联
三个或三个以上对象之间的关联,大多可以 分解为二元关联或用词组描述成限定的关联。
• “柜员输入针对账户的事务”可以分解成“柜员 输入事务”和“事务修改账户”这样两个二元关 联。 • “ATM与中央计算机交换关于事务的信息” , 隐含了“ATM与中央计算机通信”和“在ATM上 输入事务”这两个二元关联。
一个事务包含对账户的若干次更新, 如(取 款、存款或查询)。
3. 把“分行”与“分行计算机”合并 参见图10.6(见书238页)
第十章面向对象分析
10.1 10.2 10.3 10.4 10.5 10.6 面向对象分析的基本过程 需求陈述 建立对象模型 建立动态模型 建立功能模型 定义服务
建立动态模型
确定类与对象
(3) 笼统
如“银行”、“网络”、“系统”、“软件”、 “信息”、“访问”等
(4) 属性
如:“现金”、“支票”、“取款额”、“账单”、 “余额”、“分行代码”、“卡号”、“密码”、 “类型”等
(5) 操作
本身具有属性需独立存在的操作,应该作为类与对 象。
(6) 实现
如:“事务日志”, “通信链路”
确定类与对象
2. 筛选出正确的类与对象
筛选标准
• (1) 冗余-----两个类表达了同样的信息 • (2) 无关--仅需要把与本问题密切相关的类与 对象放进目标系统中。 • (3) 笼统 • (4) 属性--有些名词实际上描述的是其他对象 的属性。 • (5) 操作--有时可能使用一些既可作为名词, 又可作为动词的词 • (6) 实现--不应该过早地考虑怎样实现目标系 统
张海藩《软件工程导论》(第6版)(章节题库 第10章 面向对象分析)【圣才出品】
第10章面向对象分析一、选择题1._____是系统一个特定执行期间所发生的事件序列。
【答案】脚本2.功能模型描述系统内的计算,它和_____、_____共同构成系统模型结构的三大支柱。
【答案】对象模型;动态模型3.状态是对象的_____、_____的一种抽象。
【答案】属性值;链接4.在对象模型中,访问操作是直接从类的_____和_____中导出的。
【答案】属性;关联5.对象模型为建立_____和_____,提供了实质性框架。
【答案】动态模型;功能模型6.功能模型由多个_____组成,每个_____说明了操作和结束的含义。
【答案】数据流图;数据流图7.功能模型由多张数据流图组成。
数据流图中包含_____、_____、_____对象和_____对象。
【答案】处理;数据流;动作;数据存储8.事件跟踪图用来表示_____、_____对象和_____对象。
_____和_____可用一条垂直线表示,各_____用水平箭头表示,箭头方向是从_____对象指向_____对象。
【答案】事件;事件的接收;发送;接收对象;发送对象;事件;发送;接收9.状态转换图是_____的重要工具。
【答案】启发分析员认识对象服务10.说明一个状态可采用_____、_____、_____、_____、_____等内容描述。
【答案】状态名;状态目的描述;产生该状态的事件序列;表示状态特征的事件;在状态中接收的条件二、填空题1.一个()能用不同的方法表示它的特征。
A.事件B.抽象C.状态D.脚本【答案】C【解析】状态是对象的属性值和链接的一种抽象。
根据影响对象总的行为的性质,一系列组合在一起是一个状态。
它能用不同的方法表示它的特征。
2.在对象模型中,访问操作是直接从类的属性和关联中导出的。
下列不是对象模型的访问操作的是()。
A.查询B.动作C.抽象D.活动【答案】C【解析】对象模型的访问操作主要包括三大类:查询、活动和动作。
3.()对整个对象的状态/行为关系的图示,它附属于该对象的类描述模板。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
验证----二义性,完善性
对象模型最基本、最重要、最核心。
10.1 面向对象分析的基本过程
3个子模型
静态结构(对象模型)
3个子模型
交互次序(动态模型)
数据变换(功能模型)
解决问题不同,三个子模型的重要程度也不同。
10.1 面向对象分析的基本过程
5个层次
主题指读者理解大 型、复杂模型的一 种机制(记忆的7+2 原则)
某些银行拥有自己的柜员站,柜员站直接和该银行的计算机通 信,柜员键入账户数据和交易数据。
ATM 和中心计算机通信,中心计算机再和银行清账。
ATM 接受金融卡,要求用户做些操作后和中心计算机通信,执 行交易给予现金和打印收据。
系统要求保留交易记录和严守安全规定。
能同时存取客户的相同账户。
10.3.2 确定关联
1.初步确定关联
需求陈述中使用的描述性动词或动词词组,通
常表示关联关系。
直接提取动词短语得出关联 需求陈述中隐含的关联 根据问题域知识得出的关联
直接提取动词短语得出的关联 ATM、中央计算机、分行计算机及柜员终端组成网络。 总行拥有多台ATM。 ATM设在主要街道上。 隐含的关联 分行提供分行计算机和柜员终端。 总行由各个分行组成。 柜员终端设在分行营业厅及储蓄所内。 分行保管账户。 分行分摊软件开发成本。 总行拥有中央计算机。 储户拥有账户。 系统维护事务日志。 分行计算机处理针对账户的事务。 系统提供必要的安全性。 分行计算机维护账户。 储户拥有现金兑换卡。 中央计算机与分行通信 柜员终端与分行计算机通信。 柜员输入针对账户的事务。 根据问题域知识得出的关联 ATM与中央计算机交换关于事务的信息。 中央计算机确定事务与分行的对应关系。 现金兑换卡访问账户。 ATM读现金兑换卡。 分行雇用柜员。 ATM与用户交互。 ATM吐出现金。 ATM打印账单。 系统处理并发的访问。
大型系统对象模型的5个层次
五个层次像是对象模型的5张水平切片, 一层比一层显示出对象模型的更多细节。
10.1 面向对象分析的基本过程
上述5个层次对应着面向对象分析过程中建
立对象模型的5项主要活动
寻找类与对象 识别结构 识别主题
定义属性
建立动态模型 定义服务
10.2 需求陈述
需求陈述是阐明“做什么”,而不是“怎样做”,其内
10.4.1 编写脚本
脚本: 是指系统在某一执行期间内出现的一系列事件。 脚本功能: 描述用户(或其他外部设备)与目标系统之
间的一个或多个典型的交互过程。
编写脚本的目的: 是保证不遗漏重要的交互步骤,有
助于确保整个交互过程的正确性的和清晰性。
10.4.1 编写脚本
编写脚本内容
描写既可以包括系统中发生的全部事件,也可以只包括由
ATM系统
10.3.4 确定属性
属性是对象的性质或特征
在分析阶段,不要用属性来表示对象间的关系,
使用关联能够表示两个对象间的任何关系,而且
把关系表示得更清晰、更醒目。
确定属性的过程包括分析和选择两个步骤。
10.3.4 确定属性
分析
在需求陈述中一般用名词词组表示属性 需藉助于领域知识和常识才能分析得出属性 属性对问题域的基本结构影响很小 属性的确定与问题域和目标系统的任务有关。
最后,利用适当的继承关系进一步合并和组织类
10.3 建立对象模型
10.3.1 确定类与对象
1.找出候选的类与对象
寻找以下五类客观事物
可感知的物理实体(飞机,汽车。。。) 人或组织的角色(医生,教师。。。) 应该记忆的事件(飞行,访问。。。)
两个或多个对象的相互作用,通常具有交易或接触 的性质(购买,纳税。。。)
(储户、用户;现金兑换卡、磁卡和副本) (成本、市、街道、营业厅和储蓄所) (银行、访问、信息、网络、系统、软件等) (现金、支票、取款额、账单、余额、分行代码、 卡号、密码、类型) (事务日志、通信链路)
10.3.1 确定类与对象
2.筛选出正确的类与对象
ATM、中央计算机、分行计算机、 柜员终端、总行、分行、柜员、储户、 账户、事务、现金兑换卡
软件工程
第十章
面向对象分析
中南大学 Central South University
10.1 面向对象分析的基本过程
面向对象分析——抽取和整理用户需求,并建立
问题域精确模型的过程。
理解----系统分析员、用户和领域专家
表达----需求规格说明书(在面向对象分析中,主要由对
象模型、动态模型、功能模型组成)
不要考虑那些超出所要解决的问题范围的属性。
先找最重要的属性,再逐渐把其余属性增添进去。分
析阶段不考虑那些纯粹用于实现的属性。
10.3.4 确定属性
选择
(1) 误把对象当作属性 同一个实体在不同应用领域中,到底应该作为对 象还是属性,需要具体分析才能确定。
例如,储户/账户.
(2) 误把关联类的属性当作对象的属性
,事物,现金兑换卡,余额,磁卡,分行代码,卡号,用
户,副本,信息,密码,类型,取款额,账单,访问。 通信链路 事务日志(领域知识决定的隐含的类对象)
10.3.1 确定类与对象
2.筛选出正确的类与对象
筛选时依据下列标准,删除不正确或不必要的类与对象
(1)冗余 (2)无关 (3)笼统 (4)属性 (5)操作 (6)实现
出一个新类,这模拟了人类的演绎思维过程:从一般到特殊。 带有形容词修饰的名词词组往往暗示了一些具体类。分析阶段 应该避免过度细化。
增加了继承关系之后的ATM对象模型
10.3.6 反复修改
一次建模过程很难得到完全正确的对象模型。 有些细化工作(例如,定义服务)是在建立了动态模型和 功能模型之后才进行的。
10.4 建立动态模型
建立动态模型的三步:
编写典型交互行为的脚本, 不遗漏常见的交互行为。
从脚本中提取出事件,确定触发每个事件的动作对象以及接受
事件的目标对象。 排列事件发生的次序,确定每个对象可能有的状态及状态间的
转换关系,并用状态图描绘它们。
最后,比较各个对象的状态图,检查它们之间的一致性,确保 事件之间的匹配。
如果某个性质依赖于某个关联链的存在,则该性质 是关联类的属性,不应该把它作为一般对象的属性。
例如,带宽是体现关联的属性而不是ATM的
10.3 建立对象模型
选择
(3) 把限定误当成属性 正确使用限定词往往可以减少关联的重数。如果 把某个属性值固定下来以后能减少关联的重数,则应 该考虑把这个属性重新表述成一个限定词。
Hale Waihona Puke 兑换卡”两个类,将使每个类的功能更单一:前一个类
标志储户访问账户的权限,后一个类是含有分行代码和 卡号的数据载体。
多张现金兑换卡可能对应着相同的访问权限。
10.3.6 反复修改
2. “事务”由“更新”组成
一个事务可包含对账户的若干次更新。更新指的是对账户 所做的一个动作(取款、存款或查询)。“更新” 有自己的属性 (类型、金额等),应该独立存在,因此应该把它作为类。
建模的步骤并不一定按照前面讲述的次序进行。
它给初学者提供了一个指南。
下面以ATM系统为例,讨论可能做的修改:
10.3.6 反复修改
1. 分解“现金兑换卡”类
“现金兑换卡”有两个相对独立的功能,它既是鉴别储 户及使用ATM的权限的卡,又是ATM获得分行代码和卡号 等数据的数据载体。 因此,把“现金兑换卡”类分解为“卡权限”和“现金
在ATM系统的例子中,“分行代码”、“账号”、“雇员 号”、“站号”等都是限定词。
(4) 误把内部状态当成了属性
如果某个性质是对象的非公开的内部状态,则应 该从对象模型中删掉这个属性。
10.3.4 确定属性
选择
(5) 过于细化 在分析阶段应该忽略那些对大多数操作都没有影响 的属性。 (6) 存在不一致的属性 类应该是简单而且一致的。如果得出一些看起来与 其他属性毫不相关的属性,则应该考虑把该类分解成 两个不同的类。
3. 把“分行”与“分行计算机”合并
区分“分行”与“分行计算机”,对于分析这个系统来说,并
没有多大意义,为简单起见,把它们合并。类似地,应该合并
“总行”和“中央计算机”。
下图给出了修改后的ATM对象模型,与修改前比较起来,它
更简单、更清晰。
修正: 总行/分行的通信, 储户输入事务(ATM) ATM读卡 拥有/通信 修改后的ATM对象模型
10.3 建立对象模型
面向对象分析的首要工作是建立问题域的对象模型,然后再
建立另外2个模型。
对象模型描述了现实世界中的“类与对象”以及它们之间的
关系。通常有5个层次组成,典型的工作步骤:
首先确定对象类和关联,大型复杂问题还需进一步划分出若干
主题
然后,给类和关联添加属性,以进一步描述它们
需要说明的概念(政策,法规。。。)
10.3.1 确定类与对象
1.找出候选的类与对象
非正式分析方法:以自然语言书写的需求分析为依据,
把陈述中的名词作为类和对象的初步候选者,形容词作为 确定属性的线索,动词作为服务(操作)的候选者。
银行,自动取款机(ATM),系统,中央计算机,分行计
算机,柜员终端,网络,总行,分行,软件,成本,市, 街道,营业厅,储蓄所,柜员,储户,现金,支票,账户