软件工程第5章-面向对象的方法课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程第5章-面向对象的方法课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 面向 对象 方法 课件
- 资源描述:
-
1、第5章 面向对象的方法 5.1 面向对象方法概述 5.2 面向对象分析 5.3 面向对象设计 实例分析 本章小结尽管传统的软件工程方法给部分地缓解了软件尽管传统的软件工程方法给部分地缓解了软件危机,给软件产业带来了巨大进步,开发中、小规危机,给软件产业带来了巨大进步,开发中、小规模的软件获得了成功。但是传统的软件工程方法并模的软件获得了成功。但是传统的软件工程方法并不适用于所有类型的软件开发,并且自身也存在着不适用于所有类型的软件开发,并且自身也存在着局限性。随着软件规模越来越大、越来越复杂,用局限性。随着软件规模越来越大、越来越复杂,用这种方法开发大型软件系统时,很少取得成功。这种方法开发大
2、型软件系统时,很少取得成功。20世纪世纪80年代中期起,开始注重面向对象技术年代中期起,开始注重面向对象技术的研究,到了的研究,到了20世纪世纪90年代,面向对象方法成为人年代,面向对象方法成为人们在开发软件时的首选。们在开发软件时的首选。5.1 面向对象方法概述5.1.1传统软件工程方法存在的问题传统的软件工程方法强调需求分析的重要性,要求在每个阶段结束前必须进行评审,在软件开发过程中实行严格的质量管理,从而提高软件开发的质量和成功率;采用先进的技术方法(主要是结构分析、设计、编程技术)和软件工具,加快了软件开发的速度。但是,传统的软件工程方法仍然存在着许多根本性的问题。5.1 面向对象方法
3、概述1.软件重用性差重用性指同一事物不经修改或稍加修改就可多次重复使用的性质,软件重用性是软件工程追求的目标,也是节约费用、减少人员、提高软件生产率的重要途径。结构化分析、设计和结构化程序开发,虽然一定程序上提高了开发效率,但却没能很好地解决软件重用问题。同类型项目,如果需求发生一些变化,都要从头开始,原有的系统很难重用。5.1 面向对象方法概述2.软件可维护性差软件工程强调软件可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的文档成分组成。开发过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要质量指标。但实践表明,即使是用生命周期方法学开发出的软件,维护起来仍然相
4、当困难,软件维护成本仍然很高。3.软件生产率提高的幅度远不能满足需要传统软件工程方法提高许多软件的开发效率,但提高的幅度仍然很有限,远远赶不上市场对软件产品的需要。5.1 面向对象方法概述4.开发出的软件不能满足用户需要用传统软件工程方法在开发需求模糊或需求动态变化的系统时,开发出的软件系统往往不能真正满足用户的需要。所谓“不能真正满足用户的需要”,主要有以下两种表现:一种是开发人员不能完全获得或不能彻底理解用户的需求,以致开发出的软件系统与用户预期的系统不一致,不能满足用户的需要;另一种表现是,所开发出的系统不能适应用户需求的经常变化,系统的稳定性和可扩充性不能适应变化。传统软件工程方法是围
5、绕处理功能的“过程”构造系统的,而用户需求的变化大部分是针对功能的,用户需求的变化往往造成系统结构的较大变化,从而需要花很大代价才能实现这种变化。5.1 面向对象方法概述5.1.2 5.1.2 面向对象方法概述面向对象方法概述1.面向对象方法学的要点面向对象的方法是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。将软件系统看作一系列离散的解空间对象的集合,并使问题空间的对象与解空间对象尽量一致,这些解空间对象相互之间发送消息而相互作用,从而获得问题空间的解。这样,问题空间与解空间的结构、描述的模型十分一致,减少了软件系统开发的复杂度,使系统易于理
6、解和维护。5.1 面向对象方法概述面向对象方法具有下述面向对象方法具有下述4个要点:个要点:(1)对象对象(Object)客观世界由各种对象组成,任何事物都是对客观世界由各种对象组成,任何事物都是对象,复杂的对象可以由比较简单的对象组合而成。象,复杂的对象可以由比较简单的对象组合而成。按照这种观点,可以认为整个世界就是一个最复按照这种观点,可以认为整个世界就是一个最复杂的对象。面向对象方法把客观世界中的实体抽杂的对象。面向对象方法把客观世界中的实体抽象为问题题中的对象。象为问题题中的对象。面向对象方法用对象分解取代了传统方法的面向对象方法用对象分解取代了传统方法的功能分解。面向对象的软件系统由
7、对象组成,软功能分解。面向对象的软件系统由对象组成,软件中的任何元素都是对象,复杂的软件对象由比件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。较简单的对象组合而成。5.1 面向对象方法概述(2)类类(class)和实例和实例(Instance)把所有对象都划分成各种对象类,每个对象把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。其中数据用于类都定义了一组数据和一组方法。其中数据用于表示对象的静态属性,是对象的状态信息;方法表示对象的静态属性,是对象的状态信息;方法是允许施加于该类对象上的操作,是该类所有对是允许施加于该类对象上的操作,是该类所有对象共享的,
8、并不需要为每个对象都复制操作的代象共享的,并不需要为每个对象都复制操作的代码。码。属于某个类的对象叫做该类的实例。对象的属于某个类的对象叫做该类的实例。对象的状态则包含在它的实例变量,即实例的属性中。状态则包含在它的实例变量,即实例的属性中。因此,每当建立该对象类的一个新实例时,就按因此,每当建立该对象类的一个新实例时,就按照类中对数据的定义为这个新对象生成一组专用照类中对数据的定义为这个新对象生成一组专用的数据,以描述该对象独特的属性值。的数据,以描述该对象独特的属性值。5.1 面向对象方法概述例如学生类都具有学号、姓名、性别等属性,例如学生类都具有学号、姓名、性别等属性,具体到每一个学生,
9、这些属性都是不尽相同的。具体到每一个学生,这些属性都是不尽相同的。类好比是一个对象模板,它定义了各个实例所共类好比是一个对象模板,它定义了各个实例所共有的结构,用它可以产生多个对象。类所代表的有的结构,用它可以产生多个对象。类所代表的是一个抽象的概念或事物,在客观世界中实际存是一个抽象的概念或事物,在客观世界中实际存在的是类的实例,即对象。在的是类的实例,即对象。(3)继承继承(Inheritance)按照父类按照父类(也称为基类也称为基类)与子类与子类(也称为派生类也称为派生类)的关系,把若干个对象类组成一个层次结构的系的关系,把若干个对象类组成一个层次结构的系统统(也称为类等级也称为类等级
10、)。在这种层次结构中,通常下。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性层的派生类具有和上层的基类相同的特性(包括包括数据和方法数据和方法),这种现象称为继承。,这种现象称为继承。5.1 面向对象方法概述例如学生是一个类,根据学生入学条件的不例如学生是一个类,根据学生入学条件的不同、学制的不同、课程的不同等,学生类可以分同、学制的不同、课程的不同等,学生类可以分为专科生、本科生和研究生三个子类,每个学生为专科生、本科生和研究生三个子类,每个学生分别属于不同的子类,但都是学生。凡学生类定分别属于不同的子类,但都是学生。凡学生类定义的数据和方法专科生、本科生和研究生都自动义的数据
11、和方法专科生、本科生和研究生都自动拥有。各个特殊类可以从一般类中继承共性,这拥有。各个特殊类可以从一般类中继承共性,这样就避免了重复。样就避免了重复。如果在派生类中对某些特性又做了重新描述,如果在派生类中对某些特性又做了重新描述,则在派生类中的这些特性将以新描述为准,即:则在派生类中的这些特性将以新描述为准,即:低层的特性将屏蔽高层的同名特性。低层的特性将屏蔽高层的同名特性。建立继承结构的优点有:易编程、易理解:建立继承结构的优点有:易编程、易理解:代码短,结构清晰;易修改:共同部分只要在一代码短,结构清晰;易修改:共同部分只要在一处修改即可;易增加新类:只须描述不同部分即处修改即可;易增加新
12、类:只须描述不同部分即可。可。5.1 面向对象方法概述(4)消息传递消息传递消息是对象发出的服务请求,对象彼此之间消息是对象发出的服务请求,对象彼此之间仅能通过传递消息互相联系。对象与传统的数据仅能通过传递消息互相联系。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操有本质区别,它不是被动地等待外界对它施加操作,而是必须发消息请求它执行它的某个操作,作,而是必须发消息请求它执行它的某个操作,处理它的私有数据。对象是处理的主体,不能从处理它的私有数据。对象是处理的主体,不能从外界直接对它的私有数据进行操作。外界直接对它的私有数据进行操作。也就是说,对象的私有信息被封装在该对象也就是说,
13、对象的私有信息被封装在该对象类的定义中,必须发消息请求它执行某个操作,类的定义中,必须发消息请求它执行某个操作,处理它的数据,外界看不见这些信息,更不能直处理它的数据,外界看不见这些信息,更不能直接对它的信息进行操作,这就是接对它的信息进行操作,这就是“封装性封装性”。5.1 面向对象方法概述综上所述,面向对象就是使用对象、类和继综上所述,面向对象就是使用对象、类和继承机制,并且在对象之间只能通过消息传递实现承机制,并且在对象之间只能通过消息传递实现彼此通信。这种关系可以用下列方程来概括:彼此通信。这种关系可以用下列方程来概括:面向对象面向对象=objects+classes+inherita
14、nce+communication with messages即:即:面向对象方法面向对象方法=对象对象+类类+继承继承+通信。通信。5.1 面向对象方法概述2.面向对象方法的优点面向对象方法的优点(1)与人类习惯的思维方法一致与人类习惯的思维方法一致传统的程序设计技术是面向过程的设计方法,传统的程序设计技术是面向过程的设计方法,这种方法以算法为核心,把数据和过程作为互相这种方法以算法为核心,把数据和过程作为互相独立的部分。忽略数据和操作之间的内在联系,独立的部分。忽略数据和操作之间的内在联系,问题空间和解间并空不一致。数据代表问题空间问题空间和解间并空不一致。数据代表问题空间中的实体,程序代
15、码则用于处理这些数据。中的实体,程序代码则用于处理这些数据。5.1 面向对象方法概述面向对象技术以对象为核心,尽可能符合人面向对象技术以对象为核心,尽可能符合人类习惯的思维方法,描述问题空间和解空间尽可类习惯的思维方法,描述问题空间和解空间尽可能一致。面向对象方法与传统的开发方法本质的能一致。面向对象方法与传统的开发方法本质的不同在于:使用现实世界的概念抽象地思考问题,不同在于:使用现实世界的概念抽象地思考问题,从而自然地解决问题。它强调模拟现实世界中的从而自然地解决问题。它强调模拟现实世界中的概念而不是算法,鼓励开发者在软件开发的绝大概念而不是算法,鼓励开发者在软件开发的绝大部分过程中都用应
16、用领域的概念去思考。它为开部分过程中都用应用领域的概念去思考。它为开发者提供了随着对某个应用系统的认识逐步深入发者提供了随着对某个应用系统的认识逐步深入和具体化的过程,以及逐步设计和实现该系统的和具体化的过程,以及逐步设计和实现该系统的可能性。因为可以先设计出由抽象类构成的系统可能性。因为可以先设计出由抽象类构成的系统框架,随着认识深入和具体化再逐步派生出更具框架,随着认识深入和具体化再逐步派生出更具体的派生类,这样的开发过程符合人们认识客观体的派生类,这样的开发过程符合人们认识客观世界并解决复杂问题时逐步深化的渐进过程。在世界并解决复杂问题时逐步深化的渐进过程。在面向对象的方法中,计算机的特
17、点并不重要,对面向对象的方法中,计算机的特点并不重要,对现实世界的模拟才是最重要的。现实世界的模拟才是最重要的。5.1 面向对象方法概述(2)稳定性好稳定性好使用传统方法建立起来的软件系统的结构紧使用传统方法建立起来的软件系统的结构紧密依赖于系统所要完成的功能,如果功能需求发密依赖于系统所要完成的功能,如果功能需求发生变化时,将引起软件结构的整体修改。事实上,生变化时,将引起软件结构的整体修改。事实上,用户需求变化大部分是针对功能的,因此,这样用户需求变化大部分是针对功能的,因此,这样的软件系统不稳定。的软件系统不稳定。5.1 面向对象方法概述 面向对象方法是用对象模拟问题域中的实面向对象方法
18、是用对象模拟问题域中的实体,用对象之间的联系描述实体间的联系,以对体,用对象之间的联系描述实体间的联系,以对象为中心来构造软件系统的。它并不基于系统应象为中心来构造软件系统的。它并不基于系统应具备功能的分解。所以,当系统的功能需求变化具备功能的分解。所以,当系统的功能需求变化时,并不会引起软件结构的整体变化,往往仅需时,并不会引起软件结构的整体变化,往往仅需要做一些局部的修改。由于现实世界中的实体是要做一些局部的修改。由于现实世界中的实体是相对稳定的,因此,以对象为中心构造的软件系相对稳定的,因此,以对象为中心构造的软件系统也比较稳定。统也比较稳定。(3)可重用性好可重用性好传统的软件重用技术
19、认为利用标准函数库,传统的软件重用技术认为利用标准函数库,就能在很大程度上提高软件的可重用性,减少开就能在很大程度上提高软件的可重用性,减少开发软件的工作量。但是,实际上除了一些接口十发软件的工作量。但是,实际上除了一些接口十分简单的标准数学函数经常重用外,几乎每次开分简单的标准数学函数经常重用外,几乎每次开发一个新的软件系统时,都要针对这个具体的系发一个新的软件系统时,都要针对这个具体的系统做大量重复而又烦琐的工作。统做大量重复而又烦琐的工作。5.1 面向对象方法概述面向对象的技术较好地解决软件重用问题。面向对象的技术较好地解决软件重用问题。对象所固有的封装性和信息隐藏等机理,使得对对象所固
20、有的封装性和信息隐藏等机理,使得对象内部的实现与外界隔离,具有较强的独立性。象内部的实现与外界隔离,具有较强的独立性。对象类提供了比较理想的模块化机制和比较理想对象类提供了比较理想的模块化机制和比较理想的可重用的软件成分。面向对象技术允许两种方的可重用的软件成分。面向对象技术允许两种方式重复使用一个对象类:式重复使用一个对象类:创建该类的实例,从创建该类的实例,从而直接使用它;而直接使用它;从它派生出一个满足当前需要从它派生出一个满足当前需要的新类。继承性机制使得子类不仅可以重用其父的新类。继承性机制使得子类不仅可以重用其父类的数据结构和程序代码,而且可以在父类代码类的数据结构和程序代码,而且
21、可以在父类代码的基础上方便地进行修改和扩充,子类的修改并的基础上方便地进行修改和扩充,子类的修改并不影响父类的使用。不影响父类的使用。5.1 面向对象方法概述(4)较易开发大型软件产品较易开发大型软件产品用面向对象方法开发大型软件时,可以把一用面向对象方法开发大型软件时,可以把一个大型软件产品分解成一系列相互独立的小产品个大型软件产品分解成一系列相互独立的小产品来处理,这样可以降低开发的技术难度,也使开来处理,这样可以降低开发的技术难度,也使开发工作的管理变得容易。发工作的管理变得容易。5.1 面向对象方法概述(5)可维护性好可维护性好使用面向对象技术开发的软件稳定性比较好、使用面向对象技术开
22、发的软件稳定性比较好、比较容易修改、比较容易理解、易于测试和调试,比较容易修改、比较容易理解、易于测试和调试,因此软件的可维护性好。因此软件的可维护性好。对面向对象的软件进行维护,主要通过派生对面向对象的软件进行维护,主要通过派生出一些新类来实现。因此,维护后的测试和调试出一些新类来实现。因此,维护后的测试和调试工作也主要围绕这些派生出来的新类进行。类的工作也主要围绕这些派生出来的新类进行。类的独立性很强,向类的实例发消息即可运行它,观独立性很强,向类的实例发消息即可运行它,观察它是否能正确地完成要求它做的工作,对类的察它是否能正确地完成要求它做的工作,对类的测试通常比较容易实现,如果发现错误
23、也往往集测试通常比较容易实现,如果发现错误也往往集中在类的内部,比较容易调试。中在类的内部,比较容易调试。5.1 面向对象方法概述总之,面向对象技术的优点并不是减少了开总之,面向对象技术的优点并不是减少了开发时间,相反,初次使用这种技术开发软件,可发时间,相反,初次使用这种技术开发软件,可能比用传统方法所需时间还稍微长一点。开发人能比用传统方法所需时间还稍微长一点。开发人员必须花很大精力去分析对象是什么,每个对象员必须花很大精力去分析对象是什么,每个对象应该承担什么责任,所有这些对象怎样很好地合应该承担什么责任,所有这些对象怎样很好地合作以完成预定的目标。这样做的好处是,提高了作以完成预定的目
24、标。这样做的好处是,提高了目标系统的可重用性,减少了生命周期后续阶段目标系统的可重用性,减少了生命周期后续阶段的工作量和可能犯的错误,提高了软件的可维护的工作量和可能犯的错误,提高了软件的可维护性。此外,一个设计良好的面向对象的系统是易性。此外,一个设计良好的面向对象的系统是易于扩充和修改的,因此能够适应不断增加的新需于扩充和修改的,因此能够适应不断增加的新需求。求。5.1 面向对象方法概述3.面向对象软件工程的内容面向对象软件工程的内容面向对象软件工程包括面向对象的分析、面面向对象软件工程包括面向对象的分析、面向对象的设计、面向对象的编程、面向对象的测向对象的设计、面向对象的编程、面向对象的
25、测试和面向对象的软件维护等主要内容。试和面向对象的软件维护等主要内容。5.1 面向对象方法概述(1)面向对象的分析面向对象的分析面向对象分析直接针对问题域中客观存在的面向对象分析直接针对问题域中客观存在的事物建立面向对象分析模型中的对象。用对象的事物建立面向对象分析模型中的对象。用对象的属性和方法描述事物的静态特征和行为。问题域属性和方法描述事物的静态特征和行为。问题域有哪些值得考虑的事物,面向对象分析模型中就有哪些值得考虑的事物,面向对象分析模型中就有哪些对象。而且对象及其服务的命名都强调与有哪些对象。而且对象及其服务的命名都强调与客观事物一致。此外,面向对象分析模型也保留客观事物一致。此外
展开阅读全文