《面向对象方法学概述精选课件.ppt》由会员分享,可在线阅读,更多相关《面向对象方法学概述精选课件.ppt(66页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、关于面向对象方法学概述第一页,本课件共有66页v面向对象思想最初起源于20世纪60年代末的simula67语言。面向对象方法的基本要点首次在simula语言中得到了表达和实现。v80年代,位于美国加州的Xerox研究中心推出smalltalk语言及其程序设计环境,使得面向对象程序设计方法得到比较完善的实现,掀起了面向对象研究的高潮。v80年代中后期,面向对象的软件设计和程序设计方法已发展成为一种成熟有效的软件开发方法。相比而言,面向对象的分析技术发展得比较滞后。第二页,本课件共有66页第一节 概述 1.1 传统方法学 v传统方法学存在的问题 生产率提高的幅度远远不能满足需要 软件重用程度很低
2、软件仍然很难维护 软件往往不能真正满足用户需要 第三页,本课件共有66页v出现问题的原因 僵化的瀑布模型*某些类型的系统需求是模糊的*项目参与者之间存在通信鸿沟*预先定义的需求可能是过时的 结构化技术的缺点*用这种技术开发出的软件,其稳定性、可修改性和可重用性都比较差。*结构化分析、设计技术的本质是功能分析。从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,层层分解下去,直至仅剩下若干个容易实现的子处理为止。第四页,本课件共有66页v功能与数据分离的软件设计结构与人类的现实世界环境很不一样,和人的自然思维也就很不一致,因此对现实世界的认识与编程之间存在着一道很深的理解
3、上的鸿沟。v系统是围绕着如何实现一定的行为来进行的,当系统行为易变,需要常常修改时,修改极为困难。v在系统中模块之间的控制作用有重要影响时,也就是说,实际的控制发生的根源来自分散的各个模块之中时,由于在“好的模块结构”中的模块间的控制作用只能通过上下之间的调用关系来进行,造成信息传递路径过长,效率低,易受干扰,甚至出错。v自顶向下功能分解的分析方法极大地限制了软件的可重用性。第五页,本课件共有66页1.2 面向对象方法学 v“面向对象”(Object-Oriented)是针对“面向过程”一词提出的,是从本质上区别于传统的结构化方法的一种新方法,新思路。vOO技术的基本原理是:按照问题域的基本事
4、物实现自然分割,按人们通常的思维方式建立问题域的模型,设计尽可能直接自然表现问题求解的软件系统。v为此,OO技术引入了对象(object)概念来表现事物,用消息(message)传递建立事物间的联系。用类(class)和继承(inheritance)作为适应人们一般思维方式的描述模型。用方法(method)表示作用在对象上的各种操作。第六页,本课件共有66页v建立在对象、消息、类、继承和方法等概念基础上的面向对象软件的基本特征是对象的封装性和继承性。v通过封装可以将对象的定义与对象的实现分开。这样,无论是对象功能的完善扩充,还是对象实现的修改,影响仅限于该对象内部,保证了面向对象软件的可构造性
5、和易维护性。v通过继承可以表达类与类之间的联系,大大减少了重复定义,同时也使系统的结构更加清晰、易于理解和维护。第七页,本课件共有66页v早在1982年,Rentsch就曾预言80年代的面向对象程序设计就象70年代的结构化程序设计一样,每个人都喜欢用它,每个软件开发商都开发他们的软件支持它,每个管理员都要付出代价应用它,每个程序员都要以不同的方式实践它,但是没有人能清楚地讲清楚它。第八页,本课件共有66页第二节 基本概念 面向对象=对象+类+继承+通信v如果一个软件系统是使用这样四个概念设计和实现的,则可以认为这个软件系统是面向对象的。第九页,本课件共有66页2.1 对象(object)v一般
6、说来,在系统分析和系统构造中,对象是对客观世界事物的一种抽象,是由数据(属性)及在其上的操作(行为)所组成的封装体。v可以用一个公式表示为:对象=属性+操作 第十页,本课件共有66页对象具有如下主要特点:*自治性 对于给定的输入,经过状态转换,对象能产生输出。*封闭性 对象的封闭性是指对象具有信息隐蔽的能力。*通信性 对象能够接收其它对象发来的消息,也能向其它对象发送消息。通信性反映了不同对象间的联系。上述特点分别刻画了对象不同方面的性质,自治性反映了对象独立计算的能力,封闭性和通信性说明对象是一个既封闭又开放的相对独立体。第十一页,本课件共有66页2.2 类(class)v类是一组具有相同数
7、据结构和相同操作的对象的集合。v类的定义包括一组数据属性和在数据上的一组合法操作,可以用一个公式表示为:类=(组)数据属性+(组)数据操作 第十二页,本课件共有66页第十三页,本课件共有66页2.3 属性(attribute)v每一对象的属性是一些有着确定值的,用于描述对象状态信息的数据。v属性一般只能通过执行对象的操作来改变。第十四页,本课件共有66页2.4 消息(message)v消息就是用来请求对象执行某个处理或回答某些信息的要求,是连接对象的纽带。或者说,一个对象为实现其责任而与其它对象的通信称为消息。v消息通常由三个部分组成:接收消息的对象;消息选择符(也称为消息名);零个或多个变元
8、。第十五页,本课件共有66页2.5 服务(method,即操作、方法)v为了完成某一任务,一个对象所提供的并体现其责任的操作称为服务。属于同一类的所有对象共享相同的服务。第十六页,本课件共有66页2.6 继承(inheritance)v类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享。即子类可以沿用父类(被继承类)的某些特征。当然,子类也具有自己独有的属性和操作。v新类的定义可以是现存类所声明的数据、定义与新类所增加的声明的组合。在组合过程中,新类复用现存类的定义,而不要求修改现存类。v继承的优点:是软件开发中复用概念的核心便于模块修改简化模块 第十
9、七页,本课件共有66页2.7 多形(polymorphism)与动态连接(dynamic binding)v多形的本质是一个消息可以与不同的实例结合,而且这些实例属于不同类。第十八页,本课件共有66页v具体的多形行为主要表现在以下方面:1)运算符重载 同一个运算符可作用于多种数据类型上;2)函数名重载 相同的函数名可作用于不同的对象类上,并产生不同的行为效果;3)虚函数与动态联接 这是OO方法特有的动态性质。当将重载的函数名标识为虚函数时,该函数就有较大的灵活性。它既可以表示子类中的同名函数,也可表示父类中的同名函数。这种较大灵活性的关键在于允许在运行中才按照具体的数据类型和参量和确定选用哪一
10、个函数,这种方式称动态联接方式。第十九页,本课件共有66页第三节 面向对象的主要方法 vCoad/Yourdon的方法vRumbaugh等的OMT方法vBooch的方法vWirtf-Brock等的RDD方法v此外,还有ESA的HOOD方法、Shlear和Mellor的OOSA方法、Wasserman的OOSD方法、Reenksang的OORASS方法、Embley的OSA方法、Gibon的OBA方法、Page-Jones和Weiss及Buhr的SYNTHESIS方法等 第二十页,本课件共有66页3.1 Coad与Yourdon的方法 vCoad与Yourdon的方法是在信息模型化技术、面向对象
11、程序设计语言及知识库系统的基础上发展起来的,这个方法分为OOA和OOD两部分。第二十一页,本课件共有66页3.1.1 面向对象的分析(OOA)vCoad与Yourdon和其它描写面向对象方法的作者一样,认为OOA主要考虑与一个特定应用有关的对象及对象与对象之间在结构与相互作用上的关系。1.OOA的任务1)形式地说明所面对的应用问题,最终成为软件系统基本构成的对象,还有系统所必须遵从的,由应用环境所决定的规则和约束。2)明确地规定构成系统的对象如何协同合作,完成指定的功能。第二十二页,本课件共有66页v在OOA中,要建立分析模型来描述系统的功能第一个层次主要是识别类和对象,这是整个分析模型的基础
12、。第二层和第三层是属性层和服务层,用以说明前面已识别的类和对象。第四层是结构层,OOA允许两种类型的基本结构:一是整体与部分结构,也叫组装结构,组装结构表示聚合,即由属于不同类的成员聚合而成新的类;二是泛化与特化结构,也叫分类结构。其中,特化类是泛化类的子类,泛化类是特化类的父类。分类结构具有继承性,泛化类和对象的属性与服务一旦被识别,即可在特化类和对象中使用。第五层是主题层,是一些类和对象的特定组合表示,用来帮助和指导模型的读者。第二十三页,本课件共有66页第二十四页,本课件共有66页2.OOA的步骤 1)找到类和对象首先确定问题空间中包含哪些对象,有哪些操作,这些对象之间有什么关系,它们与
13、操作又有什么关系。对象应该是实际问题域中有意义的个体或概念实体,具有目标软件系统所关心的属性,还应该以某种方式与系统发生关联,即对象必须与系统中其他有意义的对象进行消息传递,并提供外部服务。有关对象命名的重要原则:a.使用单个名词或名词短语;b.对象名称必须简洁、精确、易于理解;c.尽量使用用户熟悉的标准词汇。第二十五页,本课件共有66页2)确定结构第一种结构是分类结构,代表了确定的类中的继承等级。另一种结构是组装结构,即由属于不同类的成员聚合而成新的类。3)定义主题 确定主题通过将类和对象划分成更大的单元来完成。主题是类和对象的组合。每个主题的规模按有助于读者通过模型理解系统来选择。第二十六
14、页,本课件共有66页4)定义属性 对每个对象,确定划给该对象所需的属性。关键是识别与当前所处理的问题相关的属性。被确定的属性放到继承等级的正确层次。注意应避免冗余的或不正确的属性 5)定义服务对象怎样进行消息通信是用消息的联系来确定的。这些都用来指定某一个操作。综上所述,OOA大体上可以按照这个顺序进行。但是,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。第二十七页,本课件共有66页3.1.2 面向对象的设计(OOD)OOA到OOD实际上是一个逐渐扩充模型的过程。面向对象分析主要模拟问题空间和系统任务;而面向对象设计则是对其进行扩充,主要是增加各种组成部分。O
15、OA识别和定义的类/对象,是一些直接反映问题空间和系统任务的;而OOD识别和定义的类/对象则是附加的,反映需求的一种实现。Coad与Yourdon在设计阶段中继续采用分析阶段中提到的五个层次,他们认为这有助于从分析到设计的过渡。不同的是,在设计阶段中,这五个层次是用于建立系统的四个组成成分上。这四个组成成分是:问题论域,用户界面,任务管理和数据管理。第二十八页,本课件共有66页问题论域部分包括与所面对的应用问题直接有关的所有类和对象。在其它的三个部分中,识别和定义新的类和对象。第二十九页,本课件共有66页1.问题域部分(PDC)的设计 OOA阶段得到的有关应用的概念模型描述了所要解决的问题。在
16、OOD阶段,主要是对OOA产生模型中的某些类与对象、结构、属性、操作进行组合与分解,或者增加必要的类、属性和联系。第三十页,本课件共有66页1)复用设计 根据问题解决的需要,把从现有的类库或其它来源得到的现存类增加到问题解决方案中去。第三十一页,本课件共有66页第三十二页,本课件共有66页2)把问题论域的专用类关联起来3)为建立公共操作集合建立一般类4)调整继承级别 第三十三页,本课件共有66页2.用户界面部分(HIC)的设计 v通常在OOA阶段给出了所需的属性和操作,在设计阶段必须根据需求把交互的细节加入到用户界面的设计中,包括有效的人机交互所必需的实际显示和输入。第三十四页,本课件共有66
17、页1)用户分类 通常可将其分为外行型、初学型、熟练型和专家型四类 2)描述人及其任务的场景什么人、特点、期望软件用途、主要要求与喜好以及任务场景等。3)设计命令层尽量遵循用户界面的一般原则和规范,根据用户分析结果确定初步的命令系统,然后再优化。4)设计详细的交互5)设计HIC(人机交互)类 第三十五页,本课件共有66页3.任务管理部分(TMC)的设计 v任务是进程的别称,是执行一系列活动的一段程序,或者说,任务是由目标软件系统中一段代码决定的处理行为。v任务管理主要包括任务的选择和调整。第三十六页,本课件共有66页1)识别事件驱动任务 一些负责与硬件设备通信的任务是事件驱动的,也就是说这些任务
18、可由事件来激发,而事件常常是当数据到来时发出的一个信号。2)识别时钟驱动任务 以固定的时间间隔激发这种事件,以执行某些处理。3)识别优先任务和关键任务 根据处理的优先级别来安排各种任务。在系统中,有些操作具有高优先级,因此必须在很强的时间限制内完成;有些操作具有较低的优先级,可进行时间要求较低的处理。关键任务是对系统的成败起关键作用的处理,这些处理要求有较高的可靠性。第三十七页,本课件共有66页4)识别协调者 当有三个或更多的任务时,应当增加一个附加任务,专门负责任务之间的调度、协同和仲裁。5)评审各个任务 6)定义各个任务定义任务的工作主要包括它是什么任务、如何协调工作及如何通信。任务的定义
19、如下:vname(任务名)vdescription(描述)vpriority(优先级)vservicesincluded(包含的操作)vcommunication via(经由谁通信)第三十八页,本课件共有66页4.数据管理部分(DMC)的设计 数据管理部分提供了在数据管理系统中存储和检索对象的基本结构 设计数据管理部分的目的是,将目标软件系统中依赖开发平台的数据存取部分与其他功能分离,数据存取通过一般的数据管理系统实现,但实现细节集中在DMC中。这样既有利于软件的扩充、移植和维护,又简化了软件设计、编码和测试的过程。第三十九页,本课件共有66页1)数据管理方法数据管理方法主要有三种v文件管理
20、v关系数据库管理v面向对象的数据库管理 2)数据管理部分的设计数据存储管理部分的设计包括数据存放方法的设计和相应操作的设计 第四十页,本课件共有66页3.2 OMT(object modeling technique)OMT是美国通用电气公司在总结其内部多年来采用OO技术开发实践的基础上提出的一套系统开发方法学。OMT最早是由Loomis,Shan和Rumbaugh在1987年提出的,曾扩展应用于关系DB设计。J.Rumbaugh在1991年正式把OMT应用于OO的分析和设计。它以面向对象思想为基础,通过构造一组相关模型(对象模型、动态模型和功能模型)来获得关于问题的全面认识(即问题领域模型)
21、,是在实体关系模型上扩展了类、继承和行为而得到的。第四十一页,本课件共有66页对象模型(object model)代表了系统的静态的、结构方面的特性。动态模型(dynamic model)代表了系统对象之间的时间的、行为的、控制方面的特性。功能模型(functional model)主要描述值与值之间的函数关系。v这三个模型从不同角度对系统进行描述,分别抓住了系统的一个重要方面,组合起来构成了对系统的完整描述。vOMT认为一个典型的软件过程是三个方面的合作:它的数据结构(对象模型)、它按时间顺序的操作(动态模型)和它所改变的值(功能模型)。第四十二页,本课件共有66页v在分析阶段,应用领域的一
22、个模型被建立,不考虑最后的实现。v在设计阶段,解决领域的结构加入模型中,明确系统中各个类的定义和相互关系以及各个类中的操作,并考虑到重用效率,重新设计一些类和关系。v在实现阶段,应用领域和解决领域的结构都被编码。第四十三页,本课件共有66页模型有两层含义:从系统的观点看v对象模型v动态模型v功能模型从开发阶段看v分析模型v设计模型v实现模型第四十四页,本课件共有66页3.2.1 三种模型介绍1.对象模型对象模型描述了系统中对象的结构,即它们的标识、它们与其它对象之间的关系、它们的属性以及它们的操作。对象模型为动态模型和功能模型提供了重要的框架,因为只有当事物变化时,动态模型和功能模型才有存在的
23、意义。对象模型用包含对象及对象的关系图表示。第四十五页,本课件共有66页第四十六页,本课件共有66页v类之间的联系称为关系。类之间的关系在OMT符号中用一条线表示。对象图在关系线的端点用特定的符号表示多元性。第四十七页,本课件共有66页对象模型中类之间的三种基本关系以OMT符号来表示 1)相关关系 第四十八页,本课件共有66页2)包容关系 第四十九页,本课件共有66页3)继承关系 第五十页,本课件共有66页vOMT建立一个对象模型的步骤大致如下:确定对象类定义一个DD,包括类、属性和关系的描述增加类之间的关系增加对象和联系的属性用继承组织和简化对象类用场景测试访问路径如有需要重复以上各步基于相
24、近的关系和相关的功能将成组的对象形成模块 第五十一页,本课件共有66页2.动态模型动态模型描述系统中与时间有关的方面以及操作执行的顺序,包括引起变化的事件、事件的序列、定义事件序列上下文的状态、以及事件和状态的主次。动态建模中的主要概念是事件和状态。一个对象的状态是指对象所拥有的属性值和连接关系。从一个对象到另一个对象的单个消息叫作一个事件。在系统的一个特定的执行中发生的一系列事件叫一个场景。第五十二页,本课件共有66页第五十三页,本课件共有66页v动态模型由多个状态图组成,每个用来描述一个类的重要动态行为,并表明整个系统的活动方式,不同类的状态图通过共享的事件组成一个动态模型。v状态图的结点
25、是状态,标有事件的线是转移。v转移的箭头指向接收事件后的目标状态。第五十四页,本课件共有66页第五十五页,本课件共有66页第五十六页,本课件共有66页v建立一个动态模型的步骤准备典型的交互序列的场景确定对象之间的事件和为每个场景准备一个事件跟踪图为每个系统准备一个事件流图为每个有重要的动态行为的类开发一个状态图检验状态图之间的共享的事件的一致性和完整性。第五十七页,本课件共有66页3.功能模型对象模型指出事件要发生在什么方面,动态模型指出什么时候发生,功能模型则指出要发生什么。功能模型表示怎样从输入值得到输出值。包括函数、映射、约束和功能性依赖。功能模型由多个DFD组成,它们表示从外部输入,通
26、过操作和内部数据存储,到外部输出这样一个流。DFD不表示控制或对象结构信息,这些分别属于动态模型和对象模型。功能是由动态模型的动作引起,并在对象模型里表示对对象的操作。一个DFD包括转换数据的过程,移动数据的DF,生产和消费数据的角色对象,以及被动地存储数据的数据存储对象。第五十八页,本课件共有66页v建立一个功能模型的步骤确定输入和输出值需要时用DFD表示功能的依赖性描述每个功能干什么确定限制,指定优化准则 第五十九页,本课件共有66页4.三个模型之间的关系对象模型、动态模型和功能模型都包含了同样的概念、数据、序列和操作,但它们描述了系统的不同方面,同时也互相引用。对象模型描述了动态模型、功
27、能模型所操作的DS。对象模型中的操作对应于动态模型中的事件和功能模型中的函数。动态模型描述了对象的控制结构,告诉我们哪些决策是依赖于对象值,哪些引起对象的变化,并激活了功能。功能模型描述了由对象模型中操作和动态模型中动作所激活的功能,而功能作用在对象模型说明的数据上,功能模型还表示对对象值的约束。第六十页,本课件共有66页3.2.2 OMT的开发过程 1、分析阶段分析阶段关心和理解要处理的应用和领域并建模。分析阶段首先输入的是问题陈述,它主要描述了需要处理的问题,并提供了将要产生的系统概况。分析后的输出是一个描述了系统三个重要方面的形式化模型:对象和对象之间的关系、动态的控制流,以及函数性转换
28、。系统分析文档包括问题陈述和三类模型。第六十一页,本课件共有66页第六十二页,本课件共有66页v2、系统设计阶段系统设计阶段决定系统的整个体系结构。系统设计是一个用于解决问题和形成解答的高层次的策略。它是最先的设计阶段,在这里将选择解决问题的基本方法。在系统设计阶段,总体的结构和风格被决定,这将为以后的设计阶段中更详细的决定提供依据。通过作出用于整个系统的高层决定,系统设计者以对象模型为依据,将系统划分成子系统,以便以后的工作可以由几个设计者独立地在不同的子系统上完成。系统设计文档包括系统的基本的体系结构以及高层的策略决定。第六十三页,本课件共有66页3.对象设计阶段在对象设计阶段中,从着重于应用概念逐步转移到着重于计算机概念上。对象设计阶段决定实现中所用的类和关系的全部定义,包括接口和用于实现操作的算法。在对象设计时,设计者执行系统设计期间所选的策略和给出细节。对象设计文档包括详细的对象模型、详细的动态模型和详细的功能模型。第六十四页,本课件共有66页4、实现阶段实现是在良好的面向对象编程风格的编码原则指导下进行的。第六十五页,本课件共有66页09.12.2022感感谢谢大大家家观观看看第六十六页,本课件共有66页