面向对象方法学概述_第1页
面向对象方法学概述_第2页
面向对象方法学概述_第3页
面向对象方法学概述_第4页
面向对象方法学概述_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

面向对象方法学概述面向对象思想最初起源于20世纪60年代末的simula67语言。面向对象方法的基本要点首次在simula语言中得到了表达和实现。80年代,位于美国加州的Xerox研究中心推出smalltalk语言及其程序设计环境,使得面向对象程序设计方法得到比较完善的实现,掀起了面向对象研究的高潮。80年代中后期,面向对象的软件设计和程序设计方法已发展成为一种成熟有效的软件开发方法。相比而言,面向对象的分析技术发展得比较滞后。第2页,共63页,2024年2月25日,星期天第一节概述1.1传统方法学

传统方法学存在的问题

生产率提高的幅度远远不能满足需要

软件重用程度很低

软件仍然很难维护

软件往往不能真正满足用户需要

第3页,共63页,2024年2月25日,星期天出现问题的原因

僵化的瀑布模型 *某些类型的系统需求是模糊的 *项目参与者之间存在通信鸿沟 *预先定义的需求可能是过时的

结构化技术的缺点

*用这种技术开发出的软件,其稳定性、可修改性和可重用性都比较差。 *结构化分析、设计技术的本质是功能分析。从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,层层分解下去,直至仅剩下若干个容易实现的子处理为止。第4页,共63页,2024年2月25日,星期天功能与数据分离的软件设计结构与人类的现实世界环境很不一样,和人的自然思维也就很不一致,因此对现实世界的认识与编程之间存在着一道很深的理解上的鸿沟。

系统是围绕着如何实现一定的行为来进行的,当系统行为易变,需要常常修改时,修改极为困难。

在系统中模块之间的控制作用有重要影响时,也就是说,实际的控制发生的根源来自分散的各个模块之中时,由于在“好的模块结构”中的模块间的控制作用只能通过上下之间的调用关系来进行,造成信息传递路径过长,效率低,易受干扰,甚至出错。自顶向下功能分解的分析方法极大地限制了软件的可重用性。

第5页,共63页,2024年2月25日,星期天1.2面向对象方法学

“面向对象”(Object-Oriented)是针对“面向过程”一词提出的,是从本质上区别于传统的结构化方法的一种新方法,新思路。OO技术的基本原理是:按照问题域的基本事物实现自然分割,按人们通常的思维方式建立问题域的模型,设计尽可能直接自然表现问题求解的软件系统。为此,OO技术引入了对象(object)概念来表现事物,用消息(message)传递建立事物间的联系。用类(class)和继承(inheritance)作为适应人们一般思维方式的描述模型。用方法(method)表示作用在对象上的各种操作。

第6页,共63页,2024年2月25日,星期天建立在对象、消息、类、继承和方法等概念基础上的面向对象软件的基本特征是对象的封装性和继承性。通过封装可以将对象的定义与对象的实现分开。这样,无论是对象功能的完善扩充,还是对象实现的修改,影响仅限于该对象内部,保证了面向对象软件的可构造性和易维护性。通过继承可以表达类与类之间的联系,大大减少了重复定义,同时也使系统的结构更加清晰、易于理解和维护。

第7页,共63页,2024年2月25日,星期天早在1982年,Rentsch就曾预言80年代的面向对象程序设计就象70年代的结构化程序设计一样,每个人都喜欢用它,每个软件开发商都开发他们的软件支持它,每个管理员都要付出代价应用它,每个程序员都要以不同的方式实践它,但是没有人能清楚地讲清楚它。

第8页,共63页,2024年2月25日,星期天第二节基本概念

面向对象=对象+类+继承+通信如果一个软件系统是使用这样四个概念设计和实现的,则可以认为这个软件系统是面向对象的。

第9页,共63页,2024年2月25日,星期天2.1对象(object)一般说来,在系统分析和系统构造中,对象是对客观世界事物的一种抽象,是由数据(属性)及在其上的操作(行为)所组成的封装体。可以用一个公式表示为: 对象=属性+操作

第10页,共63页,2024年2月25日,星期天对象具有如下主要特点:*自治性对于给定的输入,经过状态转换,对象能产生输出。*封闭性对象的封闭性是指对象具有信息隐蔽的能力。*通信性

对象能够接收其它对象发来的消息,也能向其它对象发送消息。通信性反映了不同对象间的联系。上述特点分别刻画了对象不同方面的性质,自治性反映了对象独立计算的能力,封闭性和通信性说明对象是一个既封闭又开放的相对独立体。

第11页,共63页,2024年2月25日,星期天2.2类(class)

类是一组具有相同数据结构和相同操作的对象的集合。类的定义包括一组数据属性和在数据上的一组合法操作,可以用一个公式表示为: 类=(组)数据属性+(组)数据操作

第12页,共63页,2024年2月25日,星期天第13页,共63页,2024年2月25日,星期天2.3属性(attribute)

每一对象的属性是一些有着确定值的,用于描述对象状态信息的数据。属性一般只能通过执行对象的操作来改变。

第14页,共63页,2024年2月25日,星期天2.4消息(message)

消息就是用来请求对象执行某个处理或回答某些信息的要求,是连接对象的纽带。或者说,一个对象为实现其责任而与其它对象的通信称为消息。消息通常由三个部分组成:接收消息的对象;消息选择符(也称为消息名);零个或多个变元。

第15页,共63页,2024年2月25日,星期天2.5服务(method,即操作、方法)为了完成某一任务,一个对象所提供的并体现其责任的操作称为服务。属于同一类的所有对象共享相同的服务。第16页,共63页,2024年2月25日,星期天2.6继承(inheritance)

类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享。即子类可以沿用父类(被继承类)的某些特征。当然,子类也具有自己独有的属性和操作。新类的定义可以是现存类所声明的数据、定义与新类所增加的声明的组合。在组合过程中,新类复用现存类的定义,而不要求修改现存类。

继承的优点:是软件开发中复用概念的核心便于模块修改简化模块第17页,共63页,2024年2月25日,星期天2.7

多形(polymorphism)与动态连接(dynamicbinding)

多形的本质是一个消息可以与不同的实例结合,而且这些实例属于不同类。

第18页,共63页,2024年2月25日,星期天具体的多形行为主要表现在以下方面:

1)运算符重载同一个运算符可作用于多种数据类型上;

2)函数名重载相同的函数名可作用于不同的对象类上,并产生不同的行为效果;

3)虚函数与动态联接

这是OO方法特有的动态性质。当将重载的函数名标识为虚函数时,该函数就有较大的灵活性。它既可以表示子类中的同名函数,也可表示父类中的同名函数。这种较大灵活性的关键在于允许在运行中才按照具体的数据类型和参量和确定选用哪一个函数,这种方式称动态联接方式。

第19页,共63页,2024年2月25日,星期天第三节面向对象的主要方法

Coad/Yourdon的方法Rumbaugh等的OMT方法Booch的方法Wirtf-Brock等的RDD方法此外,还有ESA的HOOD方法、Shlear和Mellor的OOSA方法、Wasserman的OOSD方法、Reenksang的OORASS方法、Embley的OSA方法、Gibon的OBA方法、Jones和Weiss及Buhr的SYNTHESIS方法等

第20页,共63页,2024年2月25日,星期天3.1Coad与Yourdon的方法

Coad与Yourdon的方法是在信息模型化技术、面向对象程序设计语言及知识库系统的基础上发展起来的,这个方法分为OOA和OOD两部分。

第21页,共63页,2024年2月25日,星期天3.1.1面向对象的分析(OOA)Coad与Yourdon和其它描写面向对象方法的作者一样,认为OOA主要考虑与一个特定应用有关的对象及对象与对象之间在结构与相互作用上的关系。

1.OOA的任务

1)形式地说明所面对的应用问题,最终成为软件系统基本构成的对象,还有系统所必须遵从的,由应用环境所决定的规则和约束。

2)明确地规定构成系统的对象如何协同合作,完成指定的功能。

第22页,共63页,2024年2月25日,星期天在OOA中,要建立分析模型来描述系统的功能第一个层次主要是识别类和对象,这是整个分析模型的基础。第二层和第三层是属性层和服务层,用以说明前面已识别的类和对象。第四层是结构层,OOA允许两种类型的基本结构:一是整体与部分结构,也叫组装结构,组装结构表示聚合,即由属于不同类的成员聚合而成新的类;二是泛化与特化结构,也叫分类结构。其中,特化类是泛化类的子类,泛化类是特化类的父类。分类结构具有继承性,泛化类和对象的属性与服务一旦被识别,即可在特化类和对象中使用。第五层是主题层,是一些类和对象的特定组合表示,用来帮助和指导模型的读者。

第23页,共63页,2024年2月25日,星期天第24页,共63页,2024年2月25日,星期天2.OOA的步骤

1)找到类和对象首先确定问题空间中包含哪些对象,有哪些操作,这些对象之间有什么关系,它们与操作又有什么关系。对象应该是实际问题域中有意义的个体或概念实体,具有目标软件系统所关心的属性,还应该以某种方式与系统发生关联,即对象必须与系统中其他有意义的对象进行消息传递,并提供外部服务。有关对象命名的重要原则:

a.使用单个名词或名词短语;

b.对象名称必须简洁、精确、易于理解;

c.尽量使用用户熟悉的标准词汇。第25页,共63页,2024年2月25日,星期天2)确定结构第一种结构是分类结构,代表了确定的类中的继承等级。另一种结构是组装结构,即由属于不同类的成员聚合而成新的类。

3)定义主题确定主题通过将类和对象划分成更大的单元来完成。主题是类和对象的组合。每个主题的规模按有助于读者通过模型理解系统来选择。

第26页,共63页,2024年2月25日,星期天4)定义属性对每个对象,确定划给该对象所需的属性。关键是识别与当前所处理的问题相关的属性。被确定的属性放到继承等级的正确层次。注意应避免冗余的或不正确的属性

5)定义服务对象怎样进行消息通信是用消息的联系来确定的。这些都用来指定某一个操作。综上所述,OOA大体上可以按照这个顺序进行。但是,分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。第27页,共63页,2024年2月25日,星期天3.1.2面向对象的设计(OOD)OOA到OOD实际上是一个逐渐扩充模型的过程。面向对象分析主要模拟问题空间和系统任务;而面向对象设计则是对其进行扩充,主要是增加各种组成部分。OOA识别和定义的类/对象,是一些直接反映问题空间和系统任务的;而OOD识别和定义的类/对象则是附加的,反映需求的一种实现。Coad与Yourdon在设计阶段中继续采用分析阶段中提到的五个层次,他们认为这有助于从分析到设计的过渡。不同的是,在设计阶段中,这五个层次是用于建立系统的四个组成成分上。这四个组成成分是:问题论域,用户界面,任务管理和数据管理。

第28页,共63页,2024年2月25日,星期天问题论域部分包括与所面对的应用问题直接有关的所有类和对象。

在其它的三个部分中,识别和定义新的类和对象。

第29页,共63页,2024年2月25日,星期天1.问题域部分(PDC)的设计

OOA阶段得到的有关应用的概念模型描述了所要解决的问题。在OOD阶段,主要是对OOA产生模型中的某些类与对象、结构、属性、操作进行组合与分解,或者增加必要的类、属性和联系。

第30页,共63页,2024年2月25日,星期天1)复用设计

根据问题解决的需要,把从现有的类库或其它来源得到的现存类增加到问题解决方案中去。

第31页,共63页,2024年2月25日,星期天第32页,共63页,2024年2月25日,星期天2)把问题论域的专用类关联起来3)为建立公共操作集合建立一般类4)调整继承级别

第33页,共63页,2024年2月25日,星期天2.用户界面部分(HIC)的设计

通常在OOA阶段给出了所需的属性和操作,在设计阶段必须根据需求把交互的细节加入到用户界面的设计中,包括有效的人机交互所必需的实际显示和输入。第34页,共63页,2024年2月25日,星期天1)用户分类通常可将其分为外行型、初学型、熟练型和专家型四类2)描述人及其任务的场景什么人、特点、期望软件用途、主要要求与喜好以及任务场景等。3)设计命令层尽量遵循用户界面的一般原则和规范,根据用户分析结果确定初步的命令系统,然后再优化。4)设计详细的交互5)设计HIC(人机交互)类第35页,共63页,2024年2月25日,星期天3.任务管理部分(TMC)的设计

任务是进程的别称,是执行一系列活动的一段程序,或者说,任务是由目标软件系统中一段代码决定的处理行为。任务管理主要包括任务的选择和调整。

第36页,共63页,2024年2月25日,星期天1)识别事件驱动任务一些负责与硬件设备通信的任务是事件驱动的,也就是说这些任务可由事件来激发,而事件常常是当数据到来时发出的一个信号。2)识别时钟驱动任务以固定的时间间隔激发这种事件,以执行某些处理。3)识别优先任务和关键任务

根据处理的优先级别来安排各种任务。在系统中,有些操作具有高优先级,因此必须在很强的时间限制内完成;有些操作具有较低的优先级,可进行时间要求较低的处理。关键任务是对系统的成败起关键作用的处理,这些处理要求有较高的可靠性。

第37页,共63页,2024年2月25日,星期天4)识别协调者

当有三个或更多的任务时,应当增加一个附加任务,专门负责任务之间的调度、协同和仲裁。5)评审各个任务6)定义各个任务定义任务的工作主要包括它是什么任务、如何协调工作及如何通信。任务的定义如下:name(任务名)description(描述)priority(优先级)servicesincluded(包含的操作)communicationvia(经由谁通信)

第38页,共63页,2024年2月25日,星期天4.数据管理部分(DMC)的设计

数据管理部分提供了在数据管理系统中存储和检索对象的基本结构

设计数据管理部分的目的是,将目标软件系统中依赖开发平台的数据存取部分与其他功能分离,数据存取通过一般的数据管理系统实现,但实现细节集中在DMC中。这样既有利于软件的扩充、移植和维护,又简化了软件设计、编码和测试的过程。

第39页,共63页,2024年2月25日,星期天1)数据管理方法数据管理方法主要有三种文件管理关系数据库管理面向对象的数据库管理2)数据管理部分的设计数据存储管理部分的设计包括数据存放方法的设计和相应操作的设计

第40页,共63页,2024年2月25日,星期天3.2OMT(objectmodelingtechnique)

OMT是美国通用电气公司在总结其内部多年来采用OO技术开发实践的基础上提出的一套系统开发方法学。OMT最早是由Loomis,Shan和Rumbaugh在1987年提出的,曾扩展应用于关系DB设计。J.Rumbaugh在1991年正式把OMT应用于OO的分析和设计。它以面向对象思想为基础,通过构造一组相关模型(对象模型、动态模型和功能模型)来获得关于问题的全面认识(即问题领域模型),是在实体关系模型上扩展了类、继承和行为而得到的。

第41页,共63页,2024年2月25日,星期天对象模型(objectmodel)代表了系统的静态的、结构方面的特性。动态模型(dynamicmodel)代表了系统对象之间的时间的、行为的、控制方面的特性。功能模型(functionalmodel)主要描述值与值之间的函数关系。这三个模型从不同角度对系统进行描述,分别抓住了系统的一个重要方面,组合起来构成了对系统的完整描述。OMT认为一个典型的软件过程是三个方面的合作:它的数据结构(对象模型)、它按时间顺序的操作(动态模型)和它所改变的值(功能模型)。

第42页,共63页,2024年2月25日,星期天在分析阶段,应用领域的一个模型被建立,不考虑最后的实现。在设计阶段,解决领域的结构加入模型中,明确系统中各个类的定义和相互关系以及各个类中的操作,并考虑到重用效率,重新设计一些类和关系。在实现阶段,应用领域和解决领域的结构都被编码。

第43页,共63页,2024年2月25日,星期天模型有两层含义:从系统的观点看对象模型动态模型功能模型从开发阶段看分析模型设计模型实现模型第44页,共63页,2024年2月25日,星期天3.2.1三种模型介绍

1.对象模型对象模型描述了系统中对象的结构,即它们的标识、它们与其它对象之间的关系、它们的属性以及它们的操作。对象模型为动态模型和功能模型提供了重要的框架,因为只有当事物变化时,动态模型和功能模型才有存在的意义。对象模型用包含对象及对象的关系图表示。

第45页,共63页,2024年2月25日,星期天第46页,共63页,2024年2月25日,星期天类之间的联系称为关系。类之间的关系在OMT符号中用一条线表示。对象图在关系线的端点用特定的符号表示多元性。

第47页,共63页,2024年2月25日,星期天对象模型中类之间的三种基本关系以OMT符号来表示

1)相关关系

第48页,共63页,2024年2月25日,星期天2)包容关系

第49页,共63页,2024年2月25日,星期天3)继承关系

第50页,共63页,2024年2月25日,星期天OMT建立一个对象模型的步骤大致如下:确定对象类定义一个DD,包括类、属性和关系的描述增加类之间的关系增加对象和联系的属性用继承组织和简化对象类用场景测试访问路径如有需要重复以上各步基于相近的关系和相关的功能将成组的对象形成模块

第51页,共63页,2024年2月25日,星期天 2.动态模型动态模型描述系统中与时间有关的方面以及操作执行的顺序,包括引起变化的事件、事件的序列、定义事件序列上下文的状态、以及事件和状态的主次。动态建模中的主要概念是事件和状态。一个对象的状态是指对象所拥有的属性值和连接关系。从一个对象到另一个对象的单个消息叫作一个事件。 在系统的一个特定的执行中发生的一系列事件叫一个场景。

第52页,共63页,2024年2月25日,星期天第53页,共63页,2024年2月25日,星期天动态模型由多个状态图组成,每个用来描述一个类的重要动态行为,并表明整个系统的活动方式,不同类的状态图通过共享的事件组成一个动态模型。状态图的结点是状态,标有事件的线是转移。转移的箭头指向接收事件后的目标状态。

第54页,共63页,2024年2月25日,星期天第55页,共63页,2024年2月25日,星期天第56页,共63页,2024年2月25日,星期天建立一个动态模型的步骤准备典型的交互序列的场景确定对象之间的事件和为每个场景准备一个事件跟踪图为每个系统准备一个事件流图为每个有重要的动态行为的类开发一个状态图检验状态图之间的共享的事件的一致性和完整性。

第57页,共63页,2024年2月25日,星期天 3.功能模型对象模型指出事件要发生在什么方面,动态模型指出什么时候发生,功能模型则指出要发生什么。功能模型表示怎样从输入值得到输出值。包括函数、映射、约束和功能性依赖。功能模型由多个DFD组成,它们表示从外部输入,通过操作和内部数据存储

温馨提示

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

评论

0/150

提交评论