信息系统项目管理师考试辅导教程(第3版)第4章面向对象方法(共19页).doc
《信息系统项目管理师考试辅导教程(第3版)第4章面向对象方法(共19页).doc》由会员分享,可在线阅读,更多相关《信息系统项目管理师考试辅导教程(第3版)第4章面向对象方法(共19页).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上第4章面向对象方法结构化分析和设计方法在一定葙度上缓解了“软件危机”。但随着人们对软件提出的要求越来越高,结构化方法己经无法承担快速高效开发复杂软件系统的重任。2 0世纪80年代逐渐成熟的面向对象方法学,使软件开发者对软件的分析、设计和编程等方面都有了全新的认识。由于“对象”概念的引入,将数据和方法封装在一起,提高了模块的聚合度,降低了模块的耦合度,更大程度上支持了软件重用,从而十分有效地降低了软件的复杂度,提高了软件开发的生产率。目前,面向对象方法学已成为软件开发者的第一选择。根据考试大纲,本章要求考生掌握以下知识点:面向对象的基本概念;统一建模语言UML;可视化建
2、模;面向对象系统分析;面向对象系统设计。4.1面向对象的基本概念为了讨论面向对象(Object-Oriented,0 0)的技术和方法,必须首先明确什么是“面向对象”?为什么要讨论面向对象的方法?什么是对象?对于这些问题,有许多不同的看法。其中Booch、Coad/Yourdon和Jacobson的方法在面向对象软件开发界得到了广泛的认可。特别值得一提的是统一建模语言(UML,Unified Modeling Language),该方法结合了Booch、OMT和Jacobson方法的优点,统一了符号体系,并从其他的方法和工程实践中吸收了许多经过实践检验的概念和技术。Peter Coad和Edw
3、ard Yourdon曾提出了下列等式:面向对象=对象(Objects)+类(Classes)+继承(Inheritance)+消息通信(Communication with Messages)4.1.1对象与封装对象(Object)是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。面向对象的软件系统是由对象组成的,复杂的对象由比较简单的对象组合而成。也就是说,面向对象方法学使用对象分解取代了传统方法的功能分解。对象三要素:对象标志、属性和服务。对象标志(Object Identifier),也就是对象的名字,供系统内部唯一地识别对象。定义或使用对象时,均应指定对象标志。属性(A
4、ttribute),也称状态(State)或数据(D at a),用来描述对象的静态特征。在某些面向对象的程序设计语言中,属性通常被称为成员变量(Member Variable)或简称变量(Variable)。服务(Service),也称操作(Operation)、行为(Behavior)或方法(Method)等,用来描述对象的动态特征。在某些面向对象的程序设计语言中,服务通常被称为成员函数(MemberFunction)或简称函数(Function)。封装(Encapsulation)是对象的一个重要原则。它有两层含义:第一,对象是其全部属性和全部服务紧密结合而形成的一个不可分割的整体;第二
5、,对象是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码都被封装在黑盒子里面。使用一个对象的时候,只需知道它向外界提供的接口形式,无须知道它的数据结构细节和实现操作的算法。从外面看不见,也就更不可能从外面直接修改对象的私有属性了。4.1.2类与类库类(class)是对象的抽象定义,是一组具有相同数据结构和相同操作的对象的集合。类的定义包括一组数据属性和在数据上的一组合法操作。类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。类与对象是抽象描述与具体实例的关系,一个具体的对象被称为类的一个实例(Instance)。它们都可使用类中提供的函数。一个对象的状态则包含在它的实
6、例变量中。从物理特征上来看,类库和传统例程库是类似的,它们都是一种预先定义的程序库。类库是一种预先定义的程序库,它以程序模块的形式,按照类层次结构把一组类的定义和实现组织在一起。较上层的类代表了较一般的事物,相反,较下层的类代表了较具体的事物,很好地体现了面向对象机制的继承性、重载等许多特征。类属类(Generic Class)仅描述了适用于一组类型的通用样板,由于其中所处理对象的数据类型尚未确定,因而程序员不可用类属类直接创建对象实例,即一个类属类并不是一种真正的类类型。类属类必须经过实例化后才能成为可创建对象实例的类类型。类属类的实例化是指用某一数据类型替代类属类的类型参数。类属类定义中给
7、出的类型参数称为形式类属参数,类属类实例化时给出的类型参数称为实际类属参数。如果类属类实例化的实际类属参数可以是任何类型,那么这种类属类称为无约束类属类。然而在某些情况下,类属类可能要求实际类属参数必须具有某些特殊的性质,以使得在类属类中可应用某些特殊操作,这种类属类称为受约束类属类。类属类对类库的建设提供了强有力的支持。4.1.3继承与多态继承(Inheritance)是使用已存在的定义作为基础建立新定义的技术,继承是面向对象方法学中的一个十分重要的概念。新类的定义可以是现存类所声明的数据、定义与新类所增加的声明的组合。新类复用现存类的定义,而不要求修改现存类。因为这种类的一部分已经实现和测
8、试,故开发费用较少。现存类可当作父类(泛化类、基类或超类)来引用,则新类相应地可当作子类(特化类、子女类或派生类)来引用。在面向对象技术中,多态考虑的是类与类之间的层次关系,以及类自身内部特定成员函数之间的关系问题,是解决功能和行为的再抽象问题。多态是指类中具有相似功能的不同函数是用同一个名称来实现,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。这也是人类思维方式的一种直接模拟,比如一个对象中有很多求两个数最大值的行为,虽然可以针对不同的数据类型,写很多不同名称的函数来实现,但事实上,它们的功能几乎完全相同。这时,就可以利用多态的特征,用统一的标志来完成这些功能。这样,就可以达到
9、类的行为的再抽象,进而统一标志,减少程序中标志符的个数。严格地说,多态性可分为四类,分别为过载多态(重载多态),强制多态,包含多态和参数多态,其中前两种统称为专用多态(特定多态),后面两种称为通用多态。包含多态是研究类族中定义于不同类中的同名成员函数的多态行为,主要是通过虚函数来实现。包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。参数多态的应用比较广泛,被称为最纯的多态。这是因为同一对象、函数或过程能以一致的形式用于不同的类型。参数多态与类属(类模板)相关联,类属是一个可以参数化的模板,其中包含的操作所涉及的类型必须用类型参数实例化。这样,由类模板实例化的各类都具有相同的操作
10、,而操作对象的类型却各不相同。过载多态是同一算子(操作符、函数名等)被用来表示不同的功能,通过上下文以决定一个算子所代表的功能,即通过语法对不同语义的对象使用相同的算子,编译能够消除这一模糊。强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。类型的变换可在编译时完成,通常是隐式地进行,当然也可以在动态运行时来做。从实现的角度来看,多态可划分为两类,分别是编译时的多态和运行时的多态。前者是在编译的过程中确定了同名操作的具体操作对象,而后者则是在程序运行过程中才动态地确定操作所针对的具体对象。这种确定操作的具体对象的过程就是联编(编联,束定
11、或绑定)。联编是指计算机程序自身彼此关联的过程,也就是把一个标志符名和一个存储地址联系在一起的过程。用面向对象的术语讲,就是把一条消息和一个对象的方法相结合的过程。按照联编进行的阶段的不同,可以分为两种不同的联编方法,分别为静态联编和动态联编,这两种联编过程分别对应着多态的两种实现方式。联编工作在编译连接阶段完成的情况称为静态联编。因为联编过程是在程序开始执行之前进行的,因此有时也称为早期联编或前联编。在编译和连接过程中,系统就可以根据类型匹配等特征确定程序中操作调用与执行该操作代码的关系,其确定了某一个同名标志到底是要调用哪一段程序代码。有些多态类型,其同名操作的具体对象能够在编译、连接阶段
12、确定,通过静态联编解决,比如过载,强制和参数多态等。与静态联编相对应,联编工作在程序运行阶段完成的情况称为动态联编,也称为晚期联编或后联编。在编译、连接过程中无法解决的联编问题,要等到程序开始运行之后再来确定,包含多态的操作对象的确定就是通过动态联编完成的。4.1.4消息通信消息(Message)是指向对象发出的服务请求,它应该含有下述信息:提供服务的对象标志、消息名、输入信息和回答信息。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。消息通信(Communica
13、tion with Messages)也是面向对象方法学中的一条重要原则,它与对象的封装原则密不可分。封装使对象成为一些各司其职、互不干扰的独立单位;消息通信则为它们提供了唯一合法的动态联系途径,使它们的行为能够互相配合,构成一"t'有机的系统。只有同时使用对象、类、继承与消息通信,才是真正面向对象的方法。4.1.5面向对象方法学的优点与面向过程相比,面向对象方法学具有以下优点。(1)与人类习惯的思维方法一致:面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的“问题域”与解决问
14、题的“解域”在结构上尽可能一致。(2)稳定性好:传统的软件开发方法基于功能分析与功能分解,软件结构紧密依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改。由于用户需求变化大部分是针对功能的,因此这样的系统是不稳定的。面向对象的方法用对象模拟问题域中的实体,以对象为中心构造软件系统,当系统的功能需求变化时并不会引起软件结构的整体变化。由于现实世界中的实体是相对稳定的,因此以对象为中心构造的软件系统也是比较稳定的。(3)可重用性好:面向对象方法学在利用可重用的软件成分构造新的软件系统时有很大的灵活性。继承机制与多态性使得子类不仅可以重用其父类的数据结构与程序代码,并且可以方便地
15、修改和扩充,而这种修改并不影响对原有类的使用。(4)较易开发大型软件产品:由于用面向对象方法学开发软件时,构成软件系统的每个对象相对独立。因此,可以把一个大型软件产品分解成一系列相互独立的小产品来处理。这不仅降低了开发的技术难度,而且也使得对开发工作的管理变得容易多了。(5)可维护性好:面向对象的软件比较容易理解、容易修改、容易测试。4.2 UML概述在20世纪的8090年代,面向对象的分析与设计(OOA&D)方法获得了长足的发展,而且相关的研究也十分活跃,涌现了一大批新的方法学。其中最著名的是Booch的Booch 1993、Jacobson的OOSE和Rumbaugh的OMT方法。
16、而UML正是在融合了Booch、Rumbaugh和Jacobson方法论的基础上形成的标准建模语言。4.2.1 UM L是什么UML(Unified Modeling Language,统一建模语言)是用于系统的可视化建模语言,尽管它常与建模0 0软件系统相关联,但由于其内建了大量扩展机制,还可以应用于更多的领域中,例如工作流程、业务领域等。(1)U M L是一种语言:UML在软件领域中的地位与价值就像“1、2、3、+、-、”等符号在数学领域中的地位一样。它为软件开发人员之间提供了一种用于交流的词汇表,一种用于软件蓝图的标准语言。(2)UML是一种可视化语言:UML只是一组图形符号,它的每个符
17、号都有明确语义,是一种直观、可视化的语言。(3)UM L是一种可用于详细描述的语言:UML所建的模型是精确的、无歧义和完整的,它适合于对所有重要的分析、设计和实现决策进行详描述。(4)UML是一种构造语言:UML虽然不是一种可视化的编程语言,但其与各种编程语言直接相连,而且有较好的映射关系,这种映射允许进行正向工程、逆向工程。(5)UM L是一种文档化语言:它适合于建立系统体系结构及其所有的细节文档。4.2.2 U M L的发展历史面向对象建模语言,最早出现于20世纪70年代中期,而在20世纪80年代末开始进入快速发展阶段,截止到1994年,就从不到10种发展到50多种。由于每种语言、方法的创
18、造者都极力推崇自己的成果,于是爆发了“面向对象技术的方法大战”,也从此流传着一句戏言:“方法学家和恐怖分子的差别在于,方法学家不能谈种。”而在1994年之后,各种方法论逐渐拉开了差距,以Grady Booch提出的Booch方法和James Rumbaugh提出的OMT(Object Modeling Technique,对象建模技术)成为了可视化建模语言的主。而Ivar Jacobson的Objectory方法则成为最强有力的方法。Booch是面向对象方法最早的倡者之一。他在1984年Ad软件工程(“SoftwareEngineering with Ada”)一书中就描述了面向对象软件开发的
19、基本问题。1991年,他在面向对象的设计(“Object-Oriented Design”)一书中,将以前针对Ad的工作扩展到整个面向对象设计领域。他对继承和类的阐述特别值得借鉴。Boochl993比较适合于系统的设计和构造。Runbaugh等人提出了面向对象的建模技术(OMT),采用了面向对象的概念并引入各种独立于程序设计语言的表示符号。这种方法用对象模型、动态模型、功能模型和用例模型共同完成对整个系统的建模,所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。OMT-2特别适用于分析和描述以数据为中心的信息系统。Jacobs
20、on于1994年提出了面向对象软件工程(OOSE)的方法。其最大特点是面向用例,并在用例的描述中引入了外部角色的概念。用例的概念贯穿于整个开发过程(包括对系统的测试和验证),是精确描述需求的重要武器。目前在学术界和工业界已普遍接受用例的概念,并认为是面向对象技术走向第二代的标志。OOSE比较适合支持商务工程和需求分析。面对众多的建模语言,首先,用户无力区分不同建模语言之间的差别和使用范围。其次,各种建模语言其实各有长短。第三,由于不同的用户使用不同的建模语言和不同建模语言表达方式上的差异,使得用户之间的沟通方面出现了困难。要解决以上问题就必须在综合分析各种不同建模语言的优缺点及适用情况的基础上
21、统一各种不同的建模语言。1994年10月,Grady Booch和Jim Rumbaugh开始了这项工作。首先他们将Booch1993和OMT-2统一起来,并于1995年10月发布了第一个公开版本称为标准方法UM0.8(Unified Method)。1995年秋,OOSE的创始Ivar Jacobson加盟到这项工作中,经过Booch、Rumbaugh和Jacobson三人的共同努力,于1996年6月和10月分别发布了两个新的版本(UML0.9和UML0.91),并将UM重新命为UML。1996年,UML被OMG提议为0 0可视化建模语言的推荐标准,UML被提交。1997年,OMG采纳了UM
22、L,个开放的0 0可视化建模语言工业标准诞生了。UML在经历了1.1、1.2和1.4三个版本的演变之后进行了一次大的调整,升级为2.0版标准。目前UML的最新版是2010年11月发布的2.4版。4.2.3 UML结构1.构造块构造块也就是基本的UML建模兀素、关系和图。(1)建模元素:包括结构元素(类、接口、协作、用例、活动类、组件、节点等)、行业元素(交互、状态机)、分组元素(包)、注解元素。(2)关系:包括关联关系、依赖关系、泛化关系、实现关系。(3)图:在UML1.X中包括9种不同的图,当升级为2.x之后,增加至14种图。分为表示系统静态结构的静态模型(包括类图、对象图、复合结构图、构件
23、图、部署图、包图),以及表示系统动态结构的动态模型(包括用例图、活动图、状态机图、顺序图、通信图、定时图、交互概观图、制品图)。2.公共机制公共机制是指达到特定目标的公共UML方法,主要包括规格说明、修饰、公共分类和扩展机制四种。(1)规格说明:规格说明是元素语义的文本描述,它是模型真正的核心。(2)修饰:UML为每一个模型元素设置了一个简单的记号,还可以通过修饰来表达更多的信息。(3)公共分类:包括类元与实体(类元表示概念,而实体表示具体的实体)、接口和实现(接口用来定义契约,而是实现就是具体的内容)两组公共分类。(4)扩展机制:包括约束(添加新规则来扩展元素的语义)、构造型(用于定义新的U
24、ML建模元素)、标记值(添加新的特殊信息来扩展模型元素的规格说明)。3.构架UML对系统构架的定义是:系统的组织结构,包括系统分解的组成部分、它们的关联性、交互、机制和指原则,这些提供系统设计的信息。具体来说,是指五个系统视图。(1)逻辑视图:以问题域的语汇组成的类和对象集合。(2)进程视图:可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例。(3)实现视图:对组成基于系统的物理代码的文件和组件进行建模。(4)部署视图:把组件物理地部署到一组物理的、可计算节点上。(5)用例视图:最基本的需求分析模型。4.2.4 U M L的主要特点UML统一了Booch、OMT、OOSE和其他面向对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息系统 项目 管理 考试 辅导 教程 面向 对象 方法 19
限制150内