ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:45.18KB ,
资源ID:17920148      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17920148.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信息系统项目管理师考试辅导教程第3版第4章面向对象方法Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

信息系统项目管理师考试辅导教程第3版第4章面向对象方法Word文件下载.docx

1、对象标志(Object Identifier),也就是对象的名字,供系统内部唯一地识别对象。定义或使用对象时,均应指定对象标志。属性(Attribute),也称状态(State)或数据(D at a),用来描述对象的静态特征。在某些面向对象的程序设计语言中,属性通常被称为成员变量(Member Variable)或简称变量(Variable)。服务(Service),也称操作(Operation)、行为(Behavior)或方法(Method)等,用来描述对象的动态特征。在某些面向对象的程序设计语言中,服务通常被称为成员函数(MemberFunction)或简称函数(Function)。封装(

2、Encapsulation)是对象的一个重要原则。它有两层含义:第一,对象是其全部属性和全部服务紧密结合而形成的一个不可分割的整体;第二,对象是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码都被封装在黑盒子里面。使用一个对象的时候,只需知道它向外界提供的接口形式,无须知道它的数据结构细节和实现操作的算法。从外面看不见,也就更不可能从外面直接修改对象的私有属性了。4.1.2类与类库类(class)是对象的抽象定义,是一组具有相同数据结构和相同操作的对象的集合。类的定义包括一组数据属性和在数据上的一组合法操作。类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。类与对象是

3、抽象描述与具体实例的关系,一个具体的对象被称为类的一个实例(Instance)。它们都可使用类中提供的函数。一个对象的状态则包含在它的实例变量中。从物理特征上来看,类库和传统例程库是类似的,它们都是一种预先定义的程序库。类库是一种预先定义的程序库,它以程序模块的形式,按照类层次结构把一组类的定义和实现组织在一起。较上层的类代表了较一般的事物,相反,较下层的类代表了较具体的事物,很好地体现了面向对象机制的继承性、重载等许多特征。类属类(Generic Class)仅描述了适用于一组类型的通用样板,由于其中所处理对象的数据类型尚未确定,因而程序员不可用类属类直接创建对象实例,即一个类属类并不是一种

4、真正的类类型。类属类必须经过实例化后才能成为可创建对象实例的类类型。类属类的实例化是指用某一数据类型替代类属类的类型参数。类属类定义中给出的类型参数称为形式类属参数,类属类实例化时给出的类型参数称为实际类属参数。如果类属类实例化的实际类属参数可以是任何类型,那么这种类属类称为无约束类属类。然而在某些情况下,类属类可能要求实际类属参数必须具有某些特殊的性质,以使得在类属类中可应用某些特殊操作,这种类属类称为受约束类属类。类属类对类库的建设提供了强有力的支持。4.1.3继承与多态继承(Inheritance)是使用已存在的定义作为基础建立新定义的技术,继承是面向对象方法学中的一个十分重要的概念。新

5、类的定义可以是现存类所声明的数据、定义与新类所增加的声明的组合。新类复用现存类的定义,而不要求修改现存类。因为这种类的一部分已经实现和测试,故开发费用较少。现存类可当作父类(泛化类、基类或超类)来引用,则新类相应地可当作子类(特化类、子女类或派生类)来引用。在面向对象技术中,多态考虑的是类与类之间的层次关系,以及类自身内部特定成员函数之间的关系问题,是解决功能和行为的再抽象问题。多态是指类中具有相似功能的不同函数是用同一个名称来实现,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。这也是人类思维方式的一种直接模拟,比如一个对象中有很多求两个数最大值的行为,虽然可以针对不同的数据类型

6、,写很多不同名称的函数来实现,但事实上,它们的功能几乎完全相同。这时,就可以利用多态的特征,用统一的标志来完成这些功能。这样,就可以达到类的行为的再抽象,进而统一标志,减少程序中标志符的个数。严格地说,多态性可分为四类,分别为过载多态(重载多态),强制多态,包含多态和参数多态,其中前两种统称为专用多态(特定多态),后面两种称为通用多态。包含多态是研究类族中定义于不同类中的同名成员函数的多态行为,主要是通过虚函数来实现。包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。参数多态的应用比较广泛,被称为最纯的多态。这是因为同一对象、函数或过程能以一致的形式用于不同的类型。参数多态与类属

7、(类模板)相关联,类属是一个可以参数化的模板,其中包含的操作所涉及的类型必须用类型参数实例化。这样,由类模板实例化的各类都具有相同的操作,而操作对象的类型却各不相同。过载多态是同一算子(操作符、函数名等)被用来表示不同的功能,通过上下文以决定一个算子所代表的功能,即通过语法对不同语义的对象使用相同的算子,编译能够消除这一模糊。强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。类型的变换可在编译时完成,通常是隐式地进行,当然也可以在动态运行时来做。从实现的角度来看,多态可划分为两类,分别是编译时的多态和运行时的多态。前者是在编译的过程中确

8、定了同名操作的具体操作对象,而后者则是在程序运行过程中才动态地确定操作所针对的具体对象。这种确定操作的具体对象的过程就是联编(编联,束定或绑定)。联编是指计算机程序自身彼此关联的过程,也就是把一个标志符名和一个存储地址联系在一起的过程。用面向对象的术语讲,就是把一条消息和一个对象的方法相结合的过程。按照联编进行的阶段的不同,可以分为两种不同的联编方法,分别为静态联编和动态联编,这两种联编过程分别对应着多态的两种实现方式。联编工作在编译连接阶段完成的情况称为静态联编。因为联编过程是在程序开始执行之前进行的,因此有时也称为早期联编或前联编。在编译和连接过程中,系统就可以根据类型匹配等特征确定程序中

9、操作调用与执行该操作代码的关系,其确定了某一个同名标志到底是要调用哪一段程序代码。有些多态类型,其同名操作的具体对象能够在编译、连接阶段确定,通过静态联编解决,比如过载,强制和参数多态等。与静态联编相对应,联编工作在程序运行阶段完成的情况称为动态联编,也称为晚期联编或后联编。在编译、连接过程中无法解决的联编问题,要等到程序开始运行之后再来确定,包含多态的操作对象的确定就是通过动态联编完成的。4.1.4消息通信消息(Message)是指向对象发出的服务请求,它应该含有下述信息:提供服务的对象标志、消息名、输入信息和回答信息。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是

10、进行处理的主体,必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。消息通信(Communication with Messages)也是面向对象方法学中的一条重要原则,它与对象的封装原则密不可分。封装使对象成为一些各司其职、互不干扰的独立单位;消息通信则为它们提供了唯一合法的动态联系途径,使它们的行为能够互相配合,构成一t有机的系统。只有同时使用对象、类、继承与消息通信,才是真正面向对象的方法。4.1.5面向对象方法学的优点与面向过程相比,面向对象方法学具有以下优点。(1)与人类习惯的思维方法一致:面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯

11、的思维方式,使软件开发的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的“问题域”与解决问题的“解域”在结构上尽可能一致。(2)稳定性好:传统的软件开发方法基于功能分析与功能分解,软件结构紧密依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改。由于用户需求变化大部分是针对功能的,因此这样的系统是不稳定的。面向对象的方法用对象模拟问题域中的实体,以对象为中心构造软件系统,当系统的功能需求变化时并不会引起软件结构的整体变化。由于现实世界中的实体是相对稳定的,因此以对象为中心构造的软件系统也是比较稳定的。(3)可重用性好:面向对象方法学在利用可重用的软件成

12、分构造新的软件系统时有很大的灵活性。继承机制与多态性使得子类不仅可以重用其父类的数据结构与程序代码,并且可以方便地修改和扩充,而这种修改并不影响对原有类的使用。(4)较易开发大型软件产品:由于用面向对象方法学开发软件时,构成软件系统的每个对象相对独立。因此,可以把一个大型软件产品分解成一系列相互独立的小产品来处理。这不仅降低了开发的技术难度,而且也使得对开发工作的管理变得容易多了。(5)可维护性好:面向对象的软件比较容易理解、容易修改、容易测试。4.2 UML概述在20世纪的8090年代,面向对象的分析与设计(OOA&D)方法获得了长足的发展,而且相关的研究也十分活跃,涌现了一大批新的方法学。

13、其中最著名的是Booch的Booch 1993、Jacobson的OOSE和Rumbaugh的OMT方法。而UML正是在融合了Booch、Rumbaugh和Jacobson方法论的基础上形成的标准建模语言。4.2.1 UM L是什么UML(Unified Modeling Language,统一建模语言)是用于系统的可视化建模语言,尽管它常与建模0 0软件系统相关联,但由于其内建了大量扩展机制,还可以应用于更多的领域中,例如工作流程、业务领域等。(1)U M L是一种语言:UML在软件领域中的地位与价值就像“1、2、3、+、-、”等符号在数学领域中的地位一样。它为软件开发人员之间提供了一种用于

14、交流的词汇表,一种用于软件蓝图的标准语言。(2)UML是一种可视化语言:UML只是一组图形符号,它的每个符号都有明确语义,是一种直观、可视化的语言。(3)UM L是一种可用于详细描述的语言:UML所建的模型是精确的、无歧义和完整的,它适合于对所有重要的分析、设计和实现决策进行详描述。(4)UML是一种构造语言:UML虽然不是一种可视化的编程语言,但其与各种编程语言直接相连,而且有较好的映射关系,这种映射允许进行正向工程、逆向工程。(5)UM L是一种文档化语言:它适合于建立系统体系结构及其所有的细节文档。4.2.2 U M L的发展历史面向对象建模语言,最早出现于20世纪70年代中期,而在20

15、世纪80年代末开始进入快速发展阶段,截止到1994年,就从不到10种发展到50多种。由于每种语言、方法的创造者都极力推崇自己的成果,于是爆发了“面向对象技术的方法大战”,也从此流传着一句戏言:“方法学家和恐怖分子的差别在于,方法学家不能谈种。”而在1994年之后,各种方法论逐渐拉开了差距,以Grady Booch提出的Booch方法和James Rumbaugh提出的OMT(Object Modeling Technique,对象建模技术)成为了可视化建模语言的主。而Ivar Jacobson的Objectory方法则成为最强有力的方法。Booch是面向对象方法最早的倡者之一。他在1984年A

16、d软件工程(“SoftwareEngineering with Ada”)一书中就描述了面向对象软件开发的基本问题。1991年,他在面向对象的设计(“Object-Oriented Design”)一书中,将以前针对Ad的工作扩展到整个面向对象设计领域。他对继承和类的阐述特别值得借鉴。Boochl993比较适合于系统的设计和构造。Runbaugh等人提出了面向对象的建模技术(OMT),采用了面向对象的概念并引入各种独立于程序设计语言的表示符号。这种方法用对象模型、动态模型、功能模型和用例模型共同完成对整个系统的建模,所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在

17、开发过程的不同阶段进行概念和符号的转换。OMT-2特别适用于分析和描述以数据为中心的信息系统。Jacobson于1994年提出了面向对象软件工程(OOSE)的方法。其最大特点是面向用例,并在用例的描述中引入了外部角色的概念。用例的概念贯穿于整个开发过程(包括对系统的测试和验证),是精确描述需求的重要武器。目前在学术界和工业界已普遍接受用例的概念,并认为是面向对象技术走向第二代的标志。OOSE比较适合支持商务工程和需求分析。面对众多的建模语言,首先,用户无力区分不同建模语言之间的差别和使用范围。其次,各种建模语言其实各有长短。第三,由于不同的用户使用不同的建模语言和不同建模语言表达方式上的差异,

18、使得用户之间的沟通方面出现了困难。要解决以上问题就必须在综合分析各种不同建模语言的优缺点及适用情况的基础上统一各种不同的建模语言。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。

19、1996年,UML被OMG提议为0 0可视化建模语言的推荐标准,UML被提交。1997年,OMG采纳了UML,个开放的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种不同的

20、图,当升级为2.x之后,增加至14种图。分为表示系统静态结构的静态模型(包括类图、对象图、复合结构图、构件图、部署图、包图),以及表示系统动态结构的动态模型(包括用例图、活动图、状态机图、顺序图、通信图、定时图、交互概观图、制品图)。2.公共机制公共机制是指达到特定目标的公共UML方法,主要包括规格说明、修饰、公共分类和扩展机制四种。(1)规格说明:规格说明是元素语义的文本描述,它是模型真正的核心。(2)修饰:UML为每一个模型元素设置了一个简单的记号,还可以通过修饰来表达更多的信息。(3)公共分类:包括类元与实体(类元表示概念,而实体表示具体的实体)、接口和实现(接口用来定义契约,而是实现就

21、是具体的内容)两组公共分类。(4)扩展机制:包括约束(添加新规则来扩展元素的语义)、构造型(用于定义新的UML建模元素)、标记值(添加新的特殊信息来扩展模型元素的规格说明)。3.构架UML对系统构架的定义是:系统的组织结构,包括系统分解的组成部分、它们的关联性、交互、机制和指原则,这些提供系统设计的信息。具体来说,是指五个系统视图。(1)逻辑视图:以问题域的语汇组成的类和对象集合。(2)进程视图:可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例。(3)实现视图:对组成基于系统的物理代码的文件和组件进行建模。(4)部署视图:把组件物理地部署到一组物理的、可计算节点上。(5)用例视图:

22、最基本的需求分析模型。4.2.4 U M L的主要特点UML统一了Booch、OMT、OOSE和其他面向对象方法的基本概念和符号,同时汇集了面向对象领域中很多人的思想,是从优秀的面向对象方法和丰富的计算机科学实践中总结而成的。目前UML是最先进、实用的标准建模语言,而且还在不断发展进化之中。UML是一种建模语言而不是一种方法,其中并不包括过程的概念,它本身是独立于过程的,可以在使用过程中使用它。不过与UML结合最好的是用例驱动的、以体系结构为中心的、迭代的、增量的开发过程。4.2.5 U M L的应用领域作为一种标准建模语言,UML的核心是以面向对象的思想来描述客观世界,具有广阔的应用领域。目

23、前主要应用领域是在软件系统建模,但是它同样可以应用于其他领域,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。总之,UML是一个通用的标准建模语言,可以对任何系统的动态行为和静态行为进行建模。同时,标准建模语言UML可以对信息系统提供从需求分析到系统维护的整个生命周期提供有效的支持。在需求分析阶段,可以通过用例模型来捕获和组织用户的需求,分析系统对于用户的价值。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。分析阶段主要关心问题域中的主要概念(如抽象、类和对象等)和机制,以及这些概念之间的相互协作,并用UML类图来描述。至于

24、类之间的协作关系则可以用交互图和顺序图来描述。在分析阶段,只对问题域的对象(现实世界的概念)建模,而不考虑定义软件系统中技术细节的类(如处理用户接口、数据库、通信和并行性等问题的类)。由于这些技术细节将在设计阶段引入,因此设计阶段为构造阶段提供更详的规格说明。编码阶段的主要任务是将设计阶段的设计结果转换成为实际的代码。在设计阶段需要注意的是不要过早地考虑设计结果要用哪种编程语言实现。如果过早地考虑这个问题,会使设计工作陷入细节的泥潭,不利于对模型进行全面理解。标准建模语言UML还可以对测试阶段提供有效的支持。不同的测试阶段可以使用不同的UML图作为测试的依据。比如,在单元测试阶段,可以使用类图

25、和类的规格说明来进行测试;在集成阶段,可以f用合作图,活动图和部署图;系统测试和验收测试阶段则可以使用顺序图和用例图来验证系统的外部行为。总之,标准建模语言UML能够用面向对象的方法描述任何类型的系统,并对系统开发从需求调研到测试和维护的各个阶段进行有效的支持。4.3 UML的建模机制UML是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域,以及各种开发工具,UML是一种总结了以往建模技术的经验并吸收当

26、今优秀成果的标准建模方法。UML包括概念的语义,表示法和说明,提供了静态、动态、系统环境及组织结构的模型。它可被交互的可视化建模工具所支持,这些工具提供了代码生成器和报表生成器。U M L标准并没有定义一种标准的开发过程,但它适用于迭代式的开发过程。它是为支持大部分现存的面向对象开发过程而设计的。UM L不是一种可视化的编程语言,但是UML描述的模型可与各种编程语言直接相连,即可把用UML描述的模型映射成编程语言。UML2.X中包括14种不同的图,分为表示系统静态结构的静态模型(包括类图、对象图、复合结构图、构件图、部署图、包图),以及表示系统动态结构的动态模型(包括用例图、活动图、状态机图、

27、顺序图、通信图、定时图、交互概观图、制品图)。4.3.1用例图用例实例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。一个用例定义一组用例实例。它确定了一个和系统参与者进行交互、并可由系统执行的动作序列。用例模型描述的是外部执行者(Actor)所理解的系统功能。用例模型用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。在UML中,用例表示为一个椭圆。图4-2显示了一个个图书管理系统的用例图。其中,“新增书籍信息”、“查询书籍信息”、“修改书籍信息”、“登记外借情况”、“查询外借情况”、“统计金额与册数”等都是用例的实例。1.

28、参与者参与者(Actor)代表与系统接口的任何事物或人,它是指代表某一种特定功能的角色,参与者都是虚拟的概念。在UML中,用一个小表示参与者。图4-2中的“图书管理员”就是参与者。对于该系统来说,可以充当图书管理员角色的可能有多个人,由于他们对于系统而言均起着相同的作用,扮演相同的角色,因此只使用一个参与者表示。切忌不要为每一个可能与系统交互的真画出一个参与者。可以通过以下问题来帮助你寻找到系统的相关参与者。谁是系统的主要用户?谁从系统获得信息?谁向系统提供信息?谁从系统删除信息?谁支付、维护系统?谁管理系统?系统需要与哪些其他系统交互?系统需要操纵哪些硬件?在预设的时间内,有事情自动发生吗?

29、系统从哪里获得信息?谁对系统的特定需求感兴趣?几个人在扮演同样的角色吗?一个扮演几个不同的角色吗?系统使用外部资源吗?系统用在什么地方?2.用例用例(UseCase)是对系统行为的动态描述,它可以促进设计人员、开发人员与用户的沟通,理解正确的需求,还可以划分系统与外部实体的界限,是系统设计的起点。在识别出参与者之后,可以使用下列问题帮助识别用例:每个参与者的任务是什么?有参与者将要创建、存储、修改、删除或读取系统中的信息吗?什么用例会创建、存储、修改、删除或读取这个信息吗?参与者需要通知系统外部的突然变化吗?需要通知参与者系统中正在发生的事情吗?什么用例将支持和维护系统?所有的功能需求都对应到用例中了吗?系统需要何种输入输出?输入从何处来?输出到何处?当前运行系统的主要问题是什么?3.包含和扩展两个用例之间的关系可以主要概括为两种情况。一种是用于重用的包含关系,用构造型include表示;另一种是用于分离出不同的行为,用构造型extend表示。(1)包含关系:当你可以从两个或两

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1