面向对象分析_第1页
面向对象分析_第2页
面向对象分析_第3页
面向对象分析_第4页
面向对象分析_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第8章面向对象分析软件开发的分析过程就是提取系统需求的过程,分析工作主要包括理解、表达和验证。面向对象分析的关键是识别问题域内的对象及其关系。本章内容主要包括:面向对象分析的基本过程、发现对象的方法、定义属性与服务、定义结构、实例连接等。8.1 基础知识8.1.1 分析的基本过程 一般来说,需求分析过程是系统分析员与领域专家反复交流和多次修正的过程。也就是说,理解和验证的过程通常交替进行,反复迭代,而且往往需要利用原型系统作业辅助工具。面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。8.1.2 发现对象的方法 问题域和系统责任是面向对象分析的基本出发点。分析员的主要工作就是:通

2、过不断地研究问题域,建立一个能满足用户需求的系统模型。1系统责任系统开发初期,用户对系统提出的各种要求和期望就是用户需求。它包括系统的功能、性能、可靠性、保密要求、交互方式等技术性要求和资金强度、交付时间、资源使用限制等非技术要求。分析员提高分析这些系统需求,逐渐搞清系统责任。2问题域研究方法要发现对象、定义对象类、主要途径就是研究问题域。研究问题域采用的主要方法是:现场跟单、获取领域知识、吸收经验、听取用户见解。3确定系统边界在系统的分析与设计中,由于是将实际的系统计算机化,而实际存在的客观系统与它的周围都要发生联系。那么我们如何确定系统边界,是分析与设计中一个关键的问题。确定系统边界就是划

3、出被开发的系统和与该系统打交道的人或物之间的明确界限,并确定它们之间的接口。8.1.3 定义属性与服务面向对象的程序设计以对象为基本单位来组织系统中的数据与操作,形成对问题域中的直接映射。面向对象方法用对象表示问题域中的事务,而事务的静态特征和动态特征分别用对象中的一组属性和服务来表示。1 定义属性为了发现对象的属性,就要借鉴与以往相似的问题域中是否有已开发的面向对象分析模型,就可能复用其中同类对象的属性定义。然后,是研究当前的问题域和系统责任,以系统责任为目标进行正确的抽象,从而找出每一类对象应有的属性。2 定义服务发现和定义对象的服务和面向对象分析的其他活动一样,首先要借鉴同类系统的面向对

4、象分析结果尽可能加以复用;如果没有同类对象的服务复用,可以研究问题域、系统责任以及状态转换图来发现服务。 8.1.4 定义结构通过研究系统责任、问题域,我们可以认识系统中的对象,此后,按认识论的法则对它们都显得分类,进而分析并定义它们的内部特征,构成系统的基本单位对象类。由于系统是通过对象及其关系结构构成的。所以分析任务除研究对象及内部特征外,还要分析和定义各类对象之间的关系。目的就是要建立面向对象分析基本模型的关系层。1 一般、特殊结构 一般、特殊结构是把一组有一般、特殊关系的类组织在一起而得到的结构,它是一个以类为结点,以一般、特殊关系为边的连通有向图。 要发现合乎系统的一般、特殊结构,可

5、以从不同的角度,采用不同的策略。首先要借鉴同类问题域以往的面向对象分析结果,发现可复用的系统成分。还可以采用按领域知识、常识分类或分析类的属性与服务的策略来发现。2 整体、部分结构整体、部分结构是把一组具有整体、部分关系的类组织在一起而得到的结构。它是一个以类为结点,以整体、部分关系为边的连通有向图。发现整体、部分结构可从如下方面进行:组织机构、空间上包容关系、物理上整体、部分关系、集合与成员关系、对象与个别抽象关系、抽象事务的整体与部分等。8.1.5 实例连接实例连接是用于表达对象之间的静态关系。这种静态联系是指最终可通过对象属性来表示的一个对象对另一个对象的依赖关系。在面向对象分析模型中,

6、要发现并建立实例连接可采用如下的方法:对象间的静态联系、实例连接的属性与服务、异常情况处理、命名与定位等。8.2 单元练习8.2.1 填空题1 面向对象分析的目的是_。2 概念模型描述了系统的_。功能模型指出_,动态模型确定_,而对象模型确定_。功能模型由_组成。3 整体、部分结构称为_结构,它们之间的关系是一种“_”关系,或者是“_”关系。4 对象具有状态,描述对象的状态用它的_。5 一个方法有_、_和_。 6.一般-具体关系称为_结构,也可以说是”_”关系,或者是”_”关系.7.通过_这种机制和构造来实现不同同中的信息共享.8. 对象具有很强的_能力和_功能.9. 子类只继承一个父类的属性

7、和操作,这称为_.10. 聚集是一种”_”关系.聚集最重要的性质是_,也具有_.11. 面向对象的牲是_,_._,_.12. 说明一个状态可采用_, _, _, _, _等内容描述.13. 在类层次中,子类只继承一个父类的数据结构和方法,则称为_. 子类继承了多个父类的数据结构和方法则称为_.14. 功能模型由多张数据流图组成.数据流图中包含有_._,_对象和_对象.15, 对象的抽象是_,类的具体化就是_.16. 类通常有两种主要的结构关系,妈_关系和_关系.17. 主要的对象类型有_, _, _和_.18. 动态模型描述了系统的_.19. 对象具有封装性,实现了_的组合.20. 事件跟踪图

8、用来表示_,_对象和_对象._和_可用一条垂直线表示,各_用水平箭头表示箭头方向是从_-对象指向_对象.21. 一般化关系是”_”的关系,有一般化类和具体类之分,一般化类又称_类,具体类又称_类,各_类继承了_类的性质,各_类的一些共同性质和操作又归纳了到_类中.22. 面向对象的三种分析模型是:_模型,_模型和_模型.23. 类的实例化是_.24. 不同同中信息共享的这种机制和构造是通过_来实现的.25. 结构化方法的本质是_,其_,可修改的性和可重用性都比较差.26. 对象还有_,用于改变对象的状态.对象实现了_和_的结合.27. 对象具有状态,对象用_来描述它的状态.8.2.2选择题1.

9、 面向对象分析阶段建立的三个模型中,核心的模型是( )模型。A.功能 B.动态 C.对象 D.分析2. 表示对象的相互行为的模型是( )模型A.对象 B.动态 C功能 D.表态3. 汽车有一个发动机,汽车与发动机之间的关系是( )关系A.一般与具体 B.整体与部分 C. 分类关系 D.is a4.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是( )关系.A.组装 B. 整体与部分 C. has a D.一般与具体5. 软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程叫( )A. 生存期 B.整体与部分 C.面向对象程序设计 D. 面向对象分析6. 一个面向对象的系统的体系结

10、构通过它的( )的关系确定A. 类与对象 B 成分对象和对象 C过程与对象 D. 类与界面7. 在面向对象的系统设计中,以下说法错误的是( )A. 系统中主要的组成部分称为子系统B. 子系统是一个对象或一个功能C. 子系统是类,关联,操作,事件和约束的集合D. 每次分解的各子系统数目不能太多,最底层子系统称谓模块8. 在软件工和学中,我们把一组具有相同数据结构和相同操作的对象的集合定义为( ),此定义包括一级数据属性和在数据上的一组合法操作.A. 类型 B.属性 C.对象 D.消息9. 以下说法错误的是( )A. 采用面向对象方法开发软件的主要优点是通过重用提高软件的生产率B. 在面向对象程序

11、中,对象是属性(状态)和方法(操作)的封装体C. 在面向对象程序中,对象彼此间通过继承和多态性启动相应操作D. 继承和多态机制是面向对象程序中实现重用的主要手段10. 以下说法错误的是( )A. 面向对象分析与面向对象设计的定义没有明显区别B. 在实际的软件开发过程中面向对象分析与面向对象设计的界限是模糊的C. 面向对象分析和面向对象设计活动是一个多次反复迭代的过程D. 从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程11. 面向对象开发产生的分析文档应当( )考虑问题,在分析阶段识别的概念是高层的概念A.与问题直接相关 B. 与问题不相关C.在更小的问题范围内 D.在更大的问题范围内1

12、2. 以下说法正确的是( )A. 组装结构可用来描述现实世界中的一般的抽象关系B. 分类结构可用来描述现实世界中的类的组成的抽象关系C. 面向对象的继承性是子类自动共享父类数据结构和方法的机制D. 面向对象的惟一性是指将具有一致性的数据结构(属性)和行为(操作)的对象抽象成类13. 功能模型中中的( )往往形成一个层次结构.在这个层次结构中一个数据流图的过程可以由下一层数据流图做进一 说明.A. 数据流图 B. 概念模型图C. 状态迁移图 D. 事件追踪图14. 在有多重继承的类层次结构中,类层次结构是( )层次结构A.树型 B. 网状型 C. 环型 D. 星型15. 在数据流图中,以下说法错

13、误的是( )C. 数据存储用一条直线表示,线段之上标存储名D. 动作对象用长方形表示,说明它是一个对象E. 处理用椭圆表示,椭圆中含有对处理的描述F. 数据流图中的数据流将对象的输出与处理,处理与对象的输入.处理与处理联系起来G. 有些数据流也是对象.在数据流图中,用空三角来表示产品对象的数据流16. 以下说法错误的是( )A. 功能模型是类似编译器之类系统的主要模型B. 功能模型由多张数据流图组成C. 数据流图不表示控制信息控制信息在动态模型中表示D. 数据流图也不表示对象中值的组织.这种信息在对象模型中表示E. 有些数据流也是对象,把对象看成是单纯的数值和把对象看成是包含许多数值的数据存储

14、这二者是相同的17. 描述类中某个对象的行为,反映了状态与事件关系的是( )A. 对象图 B.状态图B. 流程图 D.结构图18. 与事件联系在一起的瞬时操作是( )A. 处理 B.动作B. 活动 D.加工19. 同一类活动中有相同的数据结构,这是( )级别的共享.B. 不同应用C. 同一应用D. 不同类E. 同一类20. 类库这种机制是( )级别的共享A. 同一类B. 不同类C. 同一应用D. 不同应用8.2.3简答题1.对象设计包含哪些内容?2.简述对象模型的特征,并举一个现实的先例,给出它的一般化关系,聚集关系的描述3.面向对象分析模型的用途是什么?4.简述对象建模的过程5.在类的实现中

15、,如何利用既存类的途径?6.简述动态模型的特征.说明事件,事件跟踪图,状态,状态图的含义.8.3一, 填空题1.对客观世界的系统进行建模2.所有计算.发生了什么.什么时候发生,发生的客体,多张数据流图3.组装,与,has a4.属性值5.方法名6.,参数.方法体7.分类,或,is a 8.类库9.表达,描述10.单重继承11.整体-部分,传递性,逆对称性12.对象惟一性,分类性,继承性,多态性13.状态名14.,状态目的描述,产生该状态的事件序列,表示状态特征的事件,在状态中接收的条件15.单重继承,多重继承16.处理,数据流, 动作,数据存储17.类,对象18.一般-具体结构,整体-部分结构

16、19.有形实体,作用事件,性能说明20.动态行为21.数据和操作22.事件,事件的接收,发送,接收对象,发送对象,事件,发送,接收23.一般-具体,父,子,子,父,子,父24.对象,动态,功能25.对象26.类库27.功能分解,稳定性28.行为,数据,操作29.数据值二. 选择题1. C 2. B 3. B 4. D 5. D6. B 7.B 8. A 9. C 10. A11. D 12.C 13. A 14. B 15. A16.E 17.B 18.B 19. D 20. D三. 简答题1.对象设计要确定实现用到的类,关联的完整定义,接口的形式以及实现操作方法的算法,可以增加实现必需的内部

17、对象,对数据结构和算法进行优化(1)获得操作.对象模型是组织对象设计的主要框架,来自分析阶段的对象模型可能示表示操作必须将动态模型中的动作及活动以及功能模型中的处理转换成操作,加入对象类中.各对象图描述了对象的生存周期,状态转换是指对象状态的变化,应把它映射成对象上的操作某对象发出的事件可能表示了另一种对象上的操作事件常常成对出现.第一事件触发一个动作,而第二事件返回结果或者说明该动作已经完成.在这种情况下,事件映射成执行该动作的操作和返回控制,只要这两个事件位于对象之间的单个控制线上.(2)确定操作的目标(3)对象.状态图中转换所触发的动作或活动可以扩展为功能模块的数据流图,数据流图的处理网

18、络表示了操作的主体,图中的数据流是该操作的中间值,必须将这种图表结构转换成算法的线性步骤序列.数据流图中的处理组成了子操作,其中一些子操作可能是原始目标(4)对象或其他对象上的操作.(5)算法设计.对象类中确定的各个操作都必须用算法来表示算法设计按如下过程进行:1.选择极小化开销的算法2.选择适用于该算法的数据结构3.定义必需的新的内部类和操作4.将操作响应赋给合适的类.选择算法时涉及的选择算法使用的数据结构,许多实现的数据结构都是包容类的实例,大多数面向对象语言提供了基本数据结构供用户自选组合定义.在展开算法时,可能引入一些新对象类,用来存放中间结果,在分解高层操作时也可引入新的低层操作.必

19、须定义这些低层操作,因为大多数这类操作是外部不可见的.(6)优化设计.效率低但语法正确的分析模型应该进行优化,其目的是使实现更为有效.但优化后的系统有可能会产生二义性且减少了可重用的能力,必须在清晰性和效率之间寻找一种适宜的折中方案.(7)控制的实现.作为系统设计的一部分,已为动态模型的实现选择了一种基本策略,面对象设计中必须完善这种策略.(8)高速继承.随着对象设计的深入,常常要调整类及操作的定义以提高继承的数目.(9)关联的设计.关联是对象模型的纽带,它提供了对象之间的访问路径.关联是用于建模和分析的概念实体,在对象设计时,要实现对象模型中的关联.2. 对象模型表示了静态的,结构化的系统数

20、据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系.该模型主要关心系统中对象的结构,属性和操作,使用了对象图的工具来刻画,它是分析阶段三个模型的核心,也是其他两个模型的框架.在对象模型中,定义了两种类的层次结构:一般化关系和聚集关系.一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象的方式,即”一般-具体”的关系.如图81所示.一般化类具体类具体类 交通工具类汽车类船类卡车类轿车类汽船类轮船类图8-1聚集关系是一种“整体-部分”关系。在这种关系中,有整体和部分类之分。如图8-2所示。整体类部分类PC类主机主板芯片图8-23.分析模型有三种用途:

21、用来明确问题要求,为用户和开发人员提供明确要求,为用户和开发人员提供一个协商的基础,作为后继的设计和实现的框架.4.首先标5.识类和关联,因为它们影响了整体结构和解决问题的方法;其次是增加属性,进一步描述类的关联的基本网络,使用继承合并和组织类,使用继承合并和组织类,最后将操作增加到类中去作为动态模型和功能模型的副产品.(1)确定类.构造对象模型的第一步是标(2)出来自问题域的相关的对象类,对象包括物理实体和概念.所有类在应用中都必须有意义.检查问题陈述中的所有名(3)词,产生暂定类,然后根据标(4)准,去掉不(5)必要的类和不(6)正确的类.(7)准备(8)数据字典.为所有建模实体准备(9)

22、一个数据词典.准确描述各个类的精确含义,描述当前问题中的类的范围,包括对类的成员,用法方面假设或限制(10)确定关联.两个或多个类之间的相互依赖就是关联.一种依赖表示一种关联,可用种种方式来实现关联,但在分析模型中应删除实现的考虑,以便设计时更为灵活.关联常用描述性动词或动词词组来表示,其中有物理位置的表示,传导的动作,通信,所有者关系,条件的满足等.从问题陈述中抽取所有可能的关联表述,把它们记下来,但不要过早去细化这些表述.使用标准去掉不必要和不正确的关联.(11)确定属性.属性是个体对象的性质,属性通常修饰性的名(12)词词组来表示.形容词常常表示具体的可枚举的属性值,属性不(13)可能在

23、问题陈述中完全表述出来,必须借助于应用域的知识及及对客观世界的知识才可以找出它们.只考虑与具体应用直接相关的属性,不要考虑那些超出问题范围的属性.首先找出重要属性,避免那些只用于实现的属性,要为各个属性取有意义的名字(5)使用继承来细化类.使用继承来共享公共结构,以此来组织类,可以用两种方式来进行。自底向上通过把所有的公共性质一般化成父类,寻找具有相似的属性,关联或操作的类来发现继承。自顶向下将现有的类细化成为更具体的子类。完成对像模型。完善对象模型。对象建模不可能一次就能保证模型是完全正确的,软件开发的整个过程就是一个不断完善的过程。模型的不同组成部分多半是在不同阶段完成的,如果发现模型的缺

24、陷,就必须返回到前期阶段去修改,有些细化工作是在动态模型和功能模型完成之后才开始进行的。5.在类的实现中,利用既存类的途径有三种:“原封不动”重用。寻找“原封不动”使用的即存类,提供所需要的特性。此时,所需要的类已经存在,建立它的一个实例,用以提供所需要的特性。这个实例可直接为软件利用,或者它可以用来作为另一个类的实现部分。通过重用一个既存类,可得到不如修改就能工作的已测试的代码。由于大多数面向对象语言的两个特性,即类的规格说明与实现的分离(信息隐蔽)和封装,这种重用一般是成功的。进化性重用。此时,一个能够完全符合要求特性的类可能并不存在。但是,如果具有类似功能的类存在,则可能通过继承,由既存的类渐进式地设计新类。还可以将几个既存类的特性混合起来开发出新的类。每个既存类是某些概念的模型。混合起来则产生了一个为特定应用的具有多生概念的类。一个既存的类可能是会提供某些在我们的新类中需要的特性以及某些新类不需要的特性。因此,可以先建立一个的更抽象的类,使之成为我们要设计的类的父类,然后,修改既存类以继承新的父类。“废弃性”开发。不用任何重用来开发一个新类。虽

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论