面向对象技术及UML应用.ppt_第1页
面向对象技术及UML应用.ppt_第2页
面向对象技术及UML应用.ppt_第3页
面向对象技术及UML应用.ppt_第4页
面向对象技术及UML应用.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、第10章 面向对象技术及UML应用,面向对象技术是一种非常实用而强有力的软件开发方法。它具有许多特色。一是方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。二是从生存期的一个阶段到下一个阶段的高度连续性,即在一个阶段所用到的部分与在下一个阶段所使用的部分是衔接的,所使用的技术经过生存期每一阶段后不改变。三是把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段。,10.1 面向对象的概念,问题空间到求解空间的映射应该是一种自然的映射,应该有直接的对应关系,这就是对象方法学的精髓。,对象,对象可以定义为系统中用来描述客观事物的一个实体,

2、它是构成系统的一个基本单位,由一组属性和一组对属性进行操作的服务组成。,对象的分类可以为以下几种: (1)外部实体 (2)信息结构 (3)需要记忆的事件 (4)角色 (5)组织机构 (6)位置 (7)操作规程,对象有两个视图,分别表现在分析设计和实现方面。从分析及设计方面来看,对象表示了一种概念,它们把现实世界的有关的文体模型化。从实现方面来看,一个对象表示了在应用程序中出现的实体的实际数据结构。之所以有两个视图,是为了将设计与实现相分离,对数据结构和相关操作的实现进行封装。,类和实例,继承,在软件开发中,继承性尝常常认为是重用概念的核心。,10.2 面向对象的开发过程,面向对象方法改进了在生

3、存期各个阶段之间的界面,因为在生存期各个阶段所开发出来的“部件”都是类。在面向对象生存期的各个阶段对各个类的信息进行细化,类成为分析、设计和实现的基本单元。,面向对象技术不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以及如何进行系统构造的软件方法学。,应用生存期强调阶段?,软件人员利用生存期方法来管理应用的开发。这个特定的模型叫做瀑布模型。在这个模型中,各个阶段细化成许多实际的子处理。这些阶段开始于应用的分析,直到维护老化。由于这个生存期对整个应用的开发过程进行了模型化,所以人们称它为应用生存期。,使用应用生存期(如瀑布模型)时存在的问题是它考虑问题时很

4、少有超出一个单个项目的情形,也没有考虑任何比整个应用更小的“产品”。,类生存期强调复用?,在软件开发中复用扮演了重要角色,软件部件应当独立于当初开发它们的应用而存在。 类就是一个希望能够复用的单元。 p271图10-10,类生存期与应用生存期的关系是正交的,就是说,类的标识是应用生存期的一个阶段,但类生存期的步骤独立于任一特殊应用的开发。这样可以完整地描述一个基本文体,而不仅仅考虑当前正在开发的系统。,类的定义 一旦标识了一个类,就给出了它的规格说明,其中包括类的实例可执行的操作和它们的数据结构。是否把功能纳入类的界面,要看属于这个类的对象是否具有这样的行为。因为这时可以为其他类使用的界面,因

5、此必须仔细地考虑所有的行为。若改变一个类的界面,将会给所有其他依赖于这个类的功能的类带来重大的影响。,类的设计与实现 类的规格说明可指导对存放既存类的软件库进行查找,这些既存类可用来提供为当前应用所需要的功能。,既存类的复用 这些类都已存在于资源库中的类,并假定都是稳定的,得到了有效的实现并经过了彻底的测试。不用进一步的实现和类测试。只存在一个需要,即对这个类的实例进行组装测试。不过这应是应用开发过程的一部分,而不应是类开发过程的一部分。,从既存类进行演变 新类将根据既存类渐进式地演变而成。 (1)渐进式设计 (2)渐进式实现 (3)渐进式测试,从废弃型进行开发 这个生存期的分支仅在不得已时使

6、用。任何一个类,只要它的开发不涉及既存类,就可看做是一个新的继承结构的开始。因此,将建立两种类:一种是抽象类,它概括了将要表达的概念;另一种是具体类,它要实现这个概念。,(1)设计 单个类的设计包括了构造数据存储,它是类定义的核心。 is part of(组装关系)这个联系指明,一个实体的表示中的某些局部可以利用其他实体给出。 is a (继承关系)继承联系使用一个类的现存定义作为一个新类定义的一部分。,(2)实现 (3)测试,求精和维护,综合方法,开发过程开始于问题论域,并提出一个从问题到解决的过程。,分析阶段 分析阶段包括两个步骤:论域分析和应用分析。 (1)论域分析 论域分析开发应用论域

7、的模型。论域分析最大的价值是抽象开发。 (2)应用分析 应用(或系统)分析细化在论域分析阶段所开发出来的信息,并且把注意力集中于当前要解决的问题。 分析阶段标识了在问题论域中的实体。,高层设计 在一个纯面向对象环境中,系统设计与类设计常常处于同一过程中,但还是应当把系统与类的设计分开。在高层设计阶段,设计应用的顶层视图。这相当于开发一个表示系统的类的界面。通过建立一个应用类的实例并发送一个消息给它来完成系统的“执行”。,类的开发 应用设计阶段基本上是类的开发。,实例的建立 这个阶段的结果就是对问题的最后解决。 在论域分析阶段所标识的联系是应用级的联系。,组装测试 这一阶段把系统组装成一个完整的

8、应用来进行测试。各个类的封装和类测试的完备性可减少组装测试所需要的时间。面向对象应用的界面通常可像单个对象的界面那样进行定义。充分隔离单个操作,减少改变操作的次序所造成的综合影响。,维护 维护的要求将影响应用和各个类。继承联系可帮助扩充现有的应用,加入新的行为,或者改变某些行为的工作方式。,系统体系结构,一个面向对象系统的体系结构通过它的成分对象和对象间的联系来确定。 面向对象模型中的对象的体系结构是对问题论域的对象进行模型化,因此,设计相对稳定。同时可把对问题论域的考虑与环境相关的考虑分开。 类的抽象特性提供了模块化体系结构。把类的实现与它的界面分离,系统的行为可以相对容易地彻底改变。,10

9、.3 面向对象系统的分析与设计,面向对象分析(OOA)的主要任务是对问题域进行分析,找出问题域中的对象,确定其属性和操作以及对象之间的关系,提出问题域的对象模型。面向对象设计(OOD)的任务是确定子系统、对象的总体结构以及对象之间的接口,进而确定对象行为的具体算法等。,面向对象分析,分析过程都是提取用户需求的过程。面向对象分析(通常缩写为OOA),就是抽取和整理用户需求并用面向对象观点建立问题域模型的过程。 分析工作主要包括三项内容:理解、表达和验证。,首先,系统分析员通过与用户及领域专家的多次反复交流,力求充分理解用户需求和该应用领域中的关键性背景知识。通常,快速建立起一个可在计算机上运行的

10、原型系统,让用户试用原型系统并听取用户的反馈意见,能够更准确地抽取出用户的需求。然后,系统分析员把对用户需求的理解,用无二义性的文档资料表达出来。分析过程得出的最重要的文档资料是软件需求规格说明书。面向对象的软件需求规格说明书,主要是对象模型、动态模型和功能模型组成。,解决的问题不同,这三个模型的重要程度也不同:在任何情况下,对象模型都是最基本、最核心和最有价值的;当问题涉及交互作用和时序时(例如,人机界面和过程控制等),动态模型是重要的;解决运算量很大的问题时(例如,高级语言编译和工程计算等),功能模型是重要的。,需求分析过程是系统分析员与用户及领域专家反复交流和多次修正的过程。也就是说,理

11、解、表达和验证的过程通常交替进行,反复迭代,而且往往需要利用原型系统作为辅助沟通的工具。,面向对象分析的关键,是识别出问题域内的对象,并分析确定它们相互之间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。,建立对象模型的工作大体上按照下列顺序进行: (1)寻找问题域内的对象 (2)识别出对象间的关系、定义属性、定义服务。,先构造出模型的子集,然后再逐渐扩充,直到完全、充分地理解了要解决的问题,才能最终把问题域的模型建立起来。通常把分析阶段建立的问题域模型称为分析模型。,确定问题域内的对象 对象是在问题域中客观存在的,系统分析员的主要任务,就是通过分析找出这些对象。首先,找出所有候选的对

12、象,然后,从候选对象中筛选掉不正确的或不必要的,从而得出问题域内应有的对象。,(1)找出候选的对象。 对象是对问题域中有意义的事物的抽象,它们既可能是物理实体,也可能是抽象概念。 可感知的物理实体;人或组织的角色;应该记忆的事件;两个或多个对象的相互作用,通常具有交易或接触的性质;需要说明的概念,(2)筛选出正确的对象。 仅通过一个简单、机械的过程不可能正确地完成分析工作。非正式分析仅仅帮助我们找到一些候选的对象,接下来应该严格考察每个候选对象,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象。 冗余;无关;笼统;属性;操作;实现,确定关联 两个或多个对象之间的相

13、互依赖、相互作用的关系就是关联。 在分析确定关联的过程中,不必花过多的精力去区分关联和聚集。事实上,聚集不过是一种特殊的关联,是关联的一个特例。,(1)初步确定关联 描述性动词或动词词组 (2)筛选 已删去的对象之间的关联。与问题无关的或应在实现阶段考虑的关联。瞬时事件。三元关联。派生关联。,确定属性 确定属性的过程包括分析和选择两个步骤: (1)分析 用名词词组表示属性,用形容词表示可枚举的具体属性 (2)选择,建立继承关系 (1)自底向上。抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类的归纳思维过程。 (2)自顶向下。把现有类细化成更具体的子类,这模拟了人类的演绎思维过程。从需

14、求陈述中往往能够看出应该做的细化工作,例如,带有形容词修饰的名词词组往往暗示了一些具体类。但是在分析阶段应该避免过度细化。,建立动态模型 第一步,编写典型交互行为的脚本。 第二步,排列事件发生的次序,确定每个对象可能有的状态及状态见的转换关系,并用状态图描绘它们。,建立功能模型 功能模型表明了系统中数据之间的依赖关系以及有关的数据处理功能,它是由遗嘱数据流图组成。,定义服务 对象是由描述其属性的数据,以及可以对这些数据施加的操作(即服务),封装在一起构成的独立单元。在确定类中应有的服务时,既要考虑该类实体的常规行为,又要考虑在本系统中特殊需要的服务。,(1)常规行为 (2)从事件导出的操作 (

15、3)与处理框对应的操作 (4)利用继承减少冗余操作,面向对象设计,访问属性的唯一方式是通过一个服务。 具有相同的属性和服务抽象的一系列对象组成对象类。,标识对象 一个对象是一个封装和一个抽象。封装是属性以及这些属性上专有的操作的封装;抽象是对问题空间的抽象,指问题空间某类事物的一次或多次出现。,标识结构 结构,在问题空间里表示复杂性。面向对象分析方法中有两种结构类型,即分类结构和组装结构。(1)分类结构表示一般和特殊的关系,这一关系描述了一个对象类是另一对象类的子类超类。(2)组装结构表示组装、容纳、包含关系,它描述了一个对象(通常称为聚合)是由另外一个或多个称之为成分的对象组成的。,标识主题

16、,定义属性 属性,是描述对象或分类结构实例的数据单元。定义属性分以下几步: (1)标识属性 (2)属性定位 (3)标识和定义实例连接 (4)修订对象 (5)说明属性和实例连接的约束,定义服务 一个服务就是收到一条消息之后所执行的处理。 定义服务的中心问题是为每个对象和分类结构定义所需要的行为。 定义服务的第二个问题是确定对象实例之间必要的通讯,即消息连接。,定义服务分为四步: (1)标识服务基本策略。 对每一个对象或分类结构考虑三类基本服务:Occur(实例的增加、修改、删除和选择)、Calculate和Monitor。通常,Occur服务为隐含服务;Calculate服务为某个实例或代表另一

17、个实例计算结果;Monitor服务为执行对外界系统、设备或用户的运行监控。把服务名放入模型图中。,(2)标识服务辅助策略。 通过对象或分类结构以后发生的事件,由基本服务出发,检查每一步的演变,增加基本序列,增加服务,把这些附加的服务名放入模型图中。,(3)标识消息连接。 消息连接用于适应服务的需要,表示发出一条消息,也表示接收到一个响应,在考虑消息连接时,首先在已存在实例连接的对象和分类结构之间增加消息连接,然后再对属性寻找服务。消息连接在图形中用箭头表示,它从发送者指向接收者。,(4)详细说明服务。 为了建立所有服务的细节文档,对服务的规格说明分为以下几个部分: 集中于所需要的外部可见的行为

18、。 使用一个模板。 增加图示以简化服务说明。 增加支持的表。 建立服务的文字叙述(必要的话)。,10.4 UML概述,UML的发展,UML的特点,(1)UML统一了Booch、OMT和OOSE等方法中的基本概念。 (2)UML还吸取了面向对象技术领域中其他流派的长处,其中也包括非OO方法的影响。 (3)UML在演变过程中还提出了一些新的概念。,UML的组成,作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。,UML语义 UML语义是基于UML的精确元模型(Meta model)。元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发在语义上取得一致,

19、消除了人为表达方法所造成的影响。,UML表示法,(1)用例图(Usecase diagram)。 (2)静态图(Static diagram)。包括类图、对象图和包图,其中类图描述系统中类的静态结构。 (3)行为图(Behavior diagram)。描述系统的动态模型和组成对象间的交互关系,分为状态图和活动图。 (4)交互图(Interactive diagram)。描述对象间的交互关系,分为顺序图和合作图。 (5)实现图(Implementation diagram)。分为部件图和配置图。,UML模型的基本概念,UML的建筑块 UML由三种基本的建筑块组成,即事物、关系和图。 事物是UML

20、中重要的组成部分;关系把事物紧密联系在一起;图是很多有相互相关的事物的组。,UML的事物,UML中有始终类型的事物是结构事物、动作事物、分组事物、注释事物。 它们在模型中属于最静态的部分,代表概念上或物理上的元素。,结构事物(7种),第一种是类,类是描述具有相同属性、方法、关系和语义的对象的集合。一个类实现一个或多个接口。 第二种是接口,接口是指类或组件提供特定服务的一组操作的集合。因此,一个接口描述了类或组件的对外的可见的动作。一个接口可以实现类或组件的全部动作,也可以只实现一部分。,第三种是协作,协作定义了交互的操作,是一些角色和其他元素一起工作,提供一些合作的动作,这些动作比元素的总和要大。 第四种是用例(use case),用例是描述一系列的动作,这些动作是系统对一个特定角色执行,产生值得注意的结果的值。,第五种是活动类(active class),活动类是这种类,它的对象有一个或多个进程或线程。 第六种是组件(component),组件是物理上或可替换的系统部分,它实现了一个接口集合。 第七种是结点(node),结点是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处

温馨提示

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

最新文档

评论

0/150

提交评论