




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 面向对象技术基础,2.1 面向对象概述 2.2 对象 2.3 面向对象方法学概述 2.4 对象模型 2.5 小结,2.1 面向对象概述,2.1.1 传统软件开发方法存在的问题 传统的生命周期软件开发方法学主要存在下列问题: (1) 软件重用性差 (2) 软件可维护性差 (3) 开发出的软件不能满足用户需要,2.1.2 面向对象的基本概念 (1) 对象:现实世界中客观存在的事物都被称之为对象。 对象不仅能表示具体的事物,还能表示抽象的规则、计划或事件,如旅游、球赛等都是对象。,(2) 对象的状态和行为:对象具有属性 (或状态),一个对象用数据值来描述它的状态。对象还有操作(或行为、方法、算法、服务、函数)。操作用于改变对象的状态。对象由对象名、属性、操作组成。 对象实现了数据和操作的集成,使数据和操作封装于对象的统一体中。,(3) 类:类是具有相同或相似性质的对象的抽象。因此,对象的抽象是类,类的具体化就是对象,也说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的算法来描述。类由类名、属性、操作组成。,(4) 消息和方法:对象之间进行的通信叫做传递消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数应该是认识该消息的对象所知道的变量名。 类中操作的实现过程经常称为方法,一个方法有方法名、参数、方法体。,(5) 封装:对象的封装就是把对象包起来,使外界只能看到对象的接口,而不能知道对象内部的具体内容。一个对象的数据其它对象不能直接访问,一个对象的操作其它对象也不能直接使用。,封装性主要表现在如下两个方面: 有固定的接口。这些接口规定了对象接受消息的格式,其它对象只有通过这些接口才能向这个对象发送消息。, 保护内部实现。所有私有数据和私有操作都被封装在对象内部,其它对象不能直接访问。 封装性是保证软件部件具有优良的模块性的基础,对外界隐蔽了实现细节,有效地实现了信息隐蔽。面向对象的类是封装良好的模块。,(6) 继承:继承是子类自动共享基类属性和操作的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。,继承具有传递性,如果类C继承类B,类B又继承类A,则类C也继承了类A。一个类实际上可以继承它上层的所有基类的属性和操作。,在类层次中,子类只继承一个基类的属性和操作,则称为单重继承。 在类层次中,子类继承了多个基类的属性和操作,则称为多重继承。 类的继承性提高了软件的重用性。,(7) 多态:多态性指相同的操作可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。,多态性允许每个对象以适合自身的方式去响应共同的消息。 多态性增强了软件的灵活性,减少了信息冗余,提高了软件的重用性和可扩充性。,(8) 重载:重载是指同一个操作名,对于不同的参数结构,可以执行不同的操作。 重载提高面向对象系统的灵活性和可读性。,2.2 对象,2.2.1 一个对象实例,对象把它的内部数据和功能的实现封装起来,它向外界开放的操作就如录音机上的按键,对象A只有通过对象B的接口才能向对象B发送消息。对象中对外开放的操作就像录音机上的按键,使用者只需要知道操作的名字(如录音机的功能名)和需要的参数(如录音机中听某首歌曲,歌曲在磁带中的位置),使用者不需要知道这些操作的具体实现方法(就如使用录音机录音,不需要知道具体实现的电路)。,对象的使用者也不需要知道对象内部的具体实现和数据内容。,对象的模型如图2.3所示,对象的属性数据是封装的,对象中实现功能的操作(算法)也是封装的,n个功能接口是对象的对外界面,其它对象根据接口的名称和参数向该对象发送消息。对象有力支持了抽象、信息隐蔽、模块化、局部化等软件工程基本原则。,对象是属性数据和操作的封装。 对象 对象名 操作集合 数据集合 对外接口集合,2.2.2 对象的定义,对象是封装了数据,并且封装了对数据的操作的模块,这个模块有惟一的名字,有公开的对外接口。对象中的数据值表示了对象所处的状态,对象的状态是可以变化的,一个对象的状态只能由该对象自己的操作改变。当一个对象收到其他对象的消息时,执行对应的操作,同时改变自身的状态。,2.2.3 对象的特点 (1) 独立性:对象是数据和对数据所有操作的统一体,对象经过消息接收、操作处理、变换对象状态,最后完成消息所指定的处理任务。对象自身状态的变化,完全取决于自身的操作,(2) 封闭性:对象以数据为中心。对象的数据被封装在对象的内部,外面是看不见的,(3) 交互性:交互性是指对象之间具有通信能力,对象之间通过互相发送消息进行通信。通过定义的接口互相传递信息,协调完成工作流程。,(4) 并行性:对象各自独立处理自己的数据,同时改变自己的状态;对象之间并行工作,通过发送消息实现相互通信。,(5) 被动性:被动性是指对象的功能都是由其它对象发送消息来启动的。一般情况下对象不能自发启动操作。,(6) 动态性:对象的动态性具有两个方面的含义,一是对象可以动态地被创建和取消,对象不是一开始运行软件就存在的,是在软件运行过程中被创建的,也是在软件运行过程中被取消的;二是对象的状态是不断变化的,随着软件的运行,对象的状态在不断变化。,2.3 面向对象方法学概述,2.3.1 面向对象方法学基本原则 面向对象方法学认为程序是相互独立而又相互协作的对象的集合,对象是最基本的程序单位。运行软件就是对象之间通过传递消息,互相协作、独立运行,完成预定的任务。,面向对象方法学具有下列重要特点: (1) 软件中一切元素都是对象。 软件中的任何元素都是对象,大的复杂对象由简单的小对象组成。,(2) 把所有对象都划分成各种对象类。对象的属性和操作是由类定义的,类中的数据结构定义了对象的属性数据,类中的算法定义了对象中的操作。 一个类定义的数据结构和操作,这个类的所有对象都可以使用。,(3) 类具有层次结构。对一些新的事物进行分类把差别不大的分为一类,再找出这一类的共同特征,一步步地细划,形成一个层次结构。最高层是最普通的,特征最简单,越往下层越具体。一旦高层类的某个特征被定义下来,所有在它之下的类就包含了该特征,不必再重新定义,这种现象称为继承。,(4) 对象之间通过传递消息进行协作。每个对象都有固定的对外界面,界面上有许多接口,每个接口都有惟一的名称和固定的参数,其它对象通过对象接口名和参数向该对象发送消息,对象接到消息后,执行该接口对应的操作。,总之,面向对象方法学的基本原则就是让软件分析、设计的思路与人类解决现实问题的思路尽可能一致,把软件危机的可能性降到最低。,2.3.2 面向对象方法学优点 优点: (1) 多角度模拟客观世界。面向对象的软开发方法以对象为核心,软件系统有各种对象组成。软件中的对象是客观世界中事物的抽象,客观事物的静态属性由对象的属性数据描述,客观事物的功能由对象的操作描述,客观事物互相之间以固有方式进行联系,协作完成某种任务,对象之间可以通过对象界面上的接口互相发送消息,协作完成一定的功能。对象与客观事物的存在方式基本一致。,面向对象方法学把人类认识的事物影射成软件中的对象,让对象自然地表示客观事物。 面向对象方法学强调模拟现实世界的概念,而不强调算法,要用应用领域的概念去分析设计软件结构,对于要解决的问题,按照人类解决问题的本来思路进行分析,确定软件中的对象,建立适当的类,根据事物之间的本来联系形式建立对象之间的消息传递模式,从多个侧面模拟客观世界。,(2) 具有较高的稳定性。面向对象的方法学以对象为基本元素构造软件系统,对象模拟客观世界的事物,以对象的协作模拟客观事物的联系。当软件系统需要优化功能时只需要对相关对象进行局部修改,(3) 重用性好。有两种方法实现重复使用一个类:最简单的是直接用类定义对象,另一种方法是将该类作为基类,用它派生出满足用户需要的新类。由老类派生出新类的技术称为继承,继承不仅可以让新类具有老类的所有属性数据类型与操作功能,新类还可以重新定义老类已经有的功能,也可以扩充新的功能,新类的这种修改一点不会影响老类的使用。,(4) 适合开发大型软件。,面向对象的软件系统,对软件维护的支持,体现在如下几个方面: (1) 稳定性好。对软件的进行维护时,不论是改进功能,还是添加功能,都是对具体对象的局部修改,只要对象的接口不变化,一个对象的改动基本不影响其它对象。,(2) 容易修改。对象是一个相对独立的模块,由于修改是针对对象的局部修改,不需要对整个系统做整体变动,所以容易实现。,(3) 容易理解。面向对象的软件开发方式与客观事物的本来存在形式一致,与人类习惯的思维方式也一致,因此软件的结构与客观事物的本来结构一致,这样就便于维护人员的理解,减少维护的难度。,(4) 容易测试和调试。,由于对象是一个独立的软件模块,对一个对象的修改,只需要测试和调试修改的对象,对没有修改的其他对象不需要进行测试和调试。把测试和调试的范围收缩到了最小的局部。,2.3.3 典型的面向对象过程模型 使用面向对象方法学开发软件时,面向对象的分析和设计是开发的重点。这种开发方法,在整个软件开发过程中使用统一的概念对象,各个阶段的模型概念基本一致,各个开发阶段无缝连接,在用户和软件开发人员对系统认识深化的过程中,对各个开发步骤进行多次重复迭代。图2.5展示的喷泉模型体现了软件开发过程的迭代和无缝的特性,是一种典型的面向对象软件开发模型。,面向对象的软件开发分析、设计和编码没有严格的界限,它们是在反复修正的过程中进行的。图2.5中的箭头表示该过程的迭代,圆圈重叠表示无缝连接并且没有明确的界限。,按照喷泉模型开发软件的过程如图2.6所示。实箭头表示开发顺序,空箭头表示回归迭代次序,下一个阶段发现问题,可能回归到任一个先前的阶段。,2.4 对象模型,模型是为了理解事物而对事物作出的一种抽象,是对事物作出的一种无二义性的符号描述。模型一般由图形符号和组织这些符号的规则组成。,对象模型描述对象和对象之间的关系,表示软件系统的静态结构。1997年,国际对象管理组织OMG把统一建模语言UML(Unified Modeling Language)作为面向对象技术的标准建模语言。在UML中,类的含义不仅包括类,还包括属于该类的对象。,2.4.1 类的表示 类图描述类以及类与类之间的静态关系,在UML中类图是最重要静态模型。类图通过使用可视化建模工具(如Rational Rose)可以直接生成VB等多种面向对象语言代码。另外,其他任何模型图的内容都会受到类图的影响。类是类图中的最基本元素。,图2.7是类的一般形式,矩形方框代表类的图标,它被分成3个区域。最上面的区域中是类名,中间区域是类的属性,最下面区域是类的操作(服务、功能、行为、函数)。,类名的定义要注意遵守下列原则: (1) 使用人们习惯的规范用语,不要随意创造名字。 (2) 使用具有确切含义的名字,不要使用含义模糊的名字。 (3) 可以使用名词短语。,类中的属性一般包括可见性、属性名和类型名。可见性通常有共有的(Public)和私有的(Private)。 类的属性名是软件开发人员给出的标识符,一般是代表属性含义的英文单词,类型名是计算机语言提供的类型名或者已经定义的类名。,类的服务,就是操作,或者称函数,其一般结构为: 可见性 操作名(参数表)返回值类型 在类的服务中,可见性、返回值类型同属性中的可见性、类型相同。,在VB中通过它的公共接口将类展示给可能的外部用户。一般类的属性说明为私有的,外部只有通过相应的操作访问属性。,VB中的操作一般有三种形式: (1) 属性操作:设定或者返回一个属性的值。 (2) 子程序:执行一组语句,没有返回值。 (3) 函数:执行一组语句,返回一个值。,关键的类图部件在VB中的表示如下: 类:确定的类在VB集成环境中自动生成类模块。 属性:类中确定的属性将生成类模块中的私有(或者公共)成员变量,每个属性在类模块中拥有类型为Get、Set和Let的公共属性过程。,接口:类的接口,或者说类的公共操作,以操作的形式加入类中。 操作:为任何一个类定义的操作将作为类的Public subroutines(没有返回值)或Public Function(有返回值)。开始的时候操作没有完整的标记(只有操作名称)而到最后将有完整的特定的标记。,终止类:终止类将被用来生成DDL形式中的数据库方案(假定使用关系数据库作为永久存储器)。,2.4.2 类之间的关系 类图包括类和类与类之间的关系。,(1) 关联 关联表示两个类之间有协作关系。图示符号用一条直线表示关联。关联是有方向,用箭头表示方向。,在关联图中,类与对象一般不加区分。若表示多个对象之间的关联可以在直线上加数字,表示重复对象的数字格式为: n 表示n个对象,n0 mn 表示m到n个对象,0mn m* 表示m到多个对象,0m,(2) 聚集 聚集是一种特殊的关联。聚集表示类与类之间的整体与部件的关系。聚集也称组成。用菱形符号和箭头表示聚集关系。菱形符号指向整体,箭头符号指向部件。,(3) 继承 继承体现了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 说课时间分配课件
- 语言文字培训基础知识课件
- 2025年上海市果蔬种植买卖合同示范文本
- 难忘的端午节赛龙舟作文(10篇)
- 合同审批及管理流程模板化指南
- 农业资源合理利用与生态保护合同
- 红楼梦第四十回课件
- 红楼梦第八回课件
- 农业智能灌溉系统使用与维护协议
- 农村农副产品生产加工协作合同书
- 电视节目编导与策划
- 药品注册审评员考核试题及答案
- 人工智能文献检索方法课件
- 幼儿园经营与管理课件
- 航空发动机强度与振动:Chapter 4 Vibrations of Disc and Shells (盘和壳体的振动)
- 《英语教师职业技能训练简明教程》全册配套优质教学课件
- 光伏电站组件清洗周边除草治理方案
- 高考语文复习-引号的作用 课件37张
- 农业模型PPT讲稿课件
- 国家开放大学电大专科《政治经济学》网络课机考网考形考单项选择题题库及答案
- Q∕GDW 10356-2020 三相智能电能表型式规范
评论
0/150
提交评论