软件工程第5章-面向对象的方法课件.ppt

上传人(卖家):三亚风情 文档编号:3219203 上传时间:2022-08-07 格式:PPT 页数:172 大小:2.27MB
下载 相关 举报
软件工程第5章-面向对象的方法课件.ppt_第1页
第1页 / 共172页
软件工程第5章-面向对象的方法课件.ppt_第2页
第2页 / 共172页
软件工程第5章-面向对象的方法课件.ppt_第3页
第3页 / 共172页
软件工程第5章-面向对象的方法课件.ppt_第4页
第4页 / 共172页
软件工程第5章-面向对象的方法课件.ppt_第5页
第5页 / 共172页
点击查看更多>>
资源描述

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)面向对象的分析面向对象的分析面向对象分析直接针对问题域中客观存在的面向对象分析直接针对问题域中客观存在的事物建立面向对象分析模型中的对象。用对象的事物建立面向对象分析模型中的对象。用对象的属性和方法描述事物的静态特征和行为。问题域属性和方法描述事物的静态特征和行为。问题域有哪些值得考虑的事物,面向对象分析模型中就有哪些值得考虑的事物,面向对象分析模型中就有哪些对象。而且对象及其服务的命名都强调与有哪些对象。而且对象及其服务的命名都强调与客观事物一致。此外,面向对象分析模型也保留客观事物一致。此外

26、,面向对象分析模型也保留了问题域中事物之间关系。把具有相同属性和相了问题域中事物之间关系。把具有相同属性和相同服务的对象归结为一类;用一般同服务的对象归结为一类;用一般/特殊结构特殊结构(又又称分类结构称分类结构)描述一般类与特殊类之间的关系描述一般类与特殊类之间的关系(即即继承关系继承关系)。用整体。用整体/部分结构部分结构(又称组装结构又称组装结构)描描述事物间的组成关系;用实例连接和消息连接表述事物间的组成关系;用实例连接和消息连接表示事物之间的静态联系和动态联系。静态联系是示事物之间的静态联系和动态联系。静态联系是指一个对象的属性与另一对象属性有关,动态联指一个对象的属性与另一对象属性

27、有关,动态联系是指一个对象的行为与另一对象行为有关。系是指一个对象的行为与另一对象行为有关。5.1 面向对象方法概述无论是对问题域中的单个事物,还是对各个无论是对问题域中的单个事物,还是对各个事物之间的关系,面向对象分析模型都保留着它事物之间的关系,面向对象分析模型都保留着它们的原貌,没有转换、扭曲,也没有重新组合,们的原貌,没有转换、扭曲,也没有重新组合,所以面向对象分析模型能够很好地映射问题域。所以面向对象分析模型能够很好地映射问题域。(2)面向对象的设计面向对象的设计面向对象设计包括两方面的工作:一是把面面向对象设计包括两方面的工作:一是把面向对象分析模型直接搬到面向对象设计向对象分析模

28、型直接搬到面向对象设计(不经过不经过转换,仅作某些必要的修改和调整转换,仅作某些必要的修改和调整),作为面向,作为面向对象设计的一个组成部分;二是针对具体实现中对象设计的一个组成部分;二是针对具体实现中的人机界面、数据存储、任务管理等因素补充一的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。这些部分与面向对象分析些与实现有关的部分。这些部分与面向对象分析采用相同的表示法和模型结构。采用相同的表示法和模型结构。5.1 面向对象方法概述从面向对象分析到面向对象设计不存在转换,从面向对象分析到面向对象设计不存在转换,只有很局部的修改或调整,并增加几个与实现有只有很局部的修改或调整,并增

29、加几个与实现有关的独立部分。因此面向对象分析与面向对象设关的独立部分。因此面向对象分析与面向对象设计之间不存在传统软件工程方法中分析与设计之计之间不存在传统软件工程方法中分析与设计之间的鸿沟,二者能够紧密衔接,大大降低了从面间的鸿沟,二者能够紧密衔接,大大降低了从面向对象分析过渡到面向对象设计的难度、工作量向对象分析过渡到面向对象设计的难度、工作量和出错率。和出错率。(3)面向对象的编程面向对象的编程面向对象编程的工作就是用同一种面向对象面向对象编程的工作就是用同一种面向对象的编程语言把面向对象设计模型中的每个成分书的编程语言把面向对象设计模型中的每个成分书写出来。写出来。5.1 面向对象方法

30、概述(4)面向对象的测试面向对象的测试面向对象的测试以对象的类作为基本测试单面向对象的测试以对象的类作为基本测试单位,查错范围主要是类定义之内的属性和服务,位,查错范围主要是类定义之内的属性和服务,以及有限的对外接口以及有限的对外接口(消息消息)所涉及的部分。在对所涉及的部分。在对父类测试完成之后,子类的测试重点只是那些新父类测试完成之后,子类的测试重点只是那些新定义的属性和服务。定义的属性和服务。(5)面向对象的软件维护面向对象的软件维护面向对象的软件工程方法为改进软件维护提面向对象的软件工程方法为改进软件维护提供了有效的途径。由于程序与问题域一致,各个供了有效的途径。由于程序与问题域一致,

31、各个阶段的表示一致,从而大大降低了理解的难度。阶段的表示一致,从而大大降低了理解的难度。5.1 面向对象方法概述5.1.3 5.1.3 面向对象的基本概念面向对象的基本概念1.对象对象对象是客观事物或概念的抽象表述,对象不对象是客观事物或概念的抽象表述,对象不仅能表示具体的实体,也能表示抽象的规则、计仅能表示具体的实体,也能表示抽象的规则、计划或事件。通常有以下的对象类型:划或事件。通常有以下的对象类型:有形的实体:在现实世界中,每个实体都有形的实体:在现实世界中,每个实体都是对象,如教学楼、计算机、课桌、机器等等,是对象,如教学楼、计算机、课桌、机器等等,都属于有形的实体,这是容易识别的对象

32、。都属于有形的实体,这是容易识别的对象。5.1 面向对象方法概述作用:指人或组织,如学校、教师、学生、作用:指人或组织,如学校、教师、学生、政府机关、公司、部门等所起的作用。政府机关、公司、部门等所起的作用。事件:指在某个特定时间内所发生的事。事件:指在某个特定时间内所发生的事。如学习、上课、办公、事故等。如学习、上课、办公、事故等。性能说明:如对产品的性能指标的说明,性能说明:如对产品的性能指标的说明,例如计算机中例如计算机中CPU的速度、型号、性能说明等。的速度、型号、性能说明等。对象不仅能表示结构化的数据,而且也能表对象不仅能表示结构化的数据,而且也能表示抽象的事件、规则以及复杂的工程实

33、体,这是示抽象的事件、规则以及复杂的工程实体,这是结构化方法所不能做到的,因此,对象具有很强结构化方法所不能做到的,因此,对象具有很强的表达能力和描述功能。的表达能力和描述功能。5.1 面向对象方法概述由于客观世界中的实体通常都既具有静态的由于客观世界中的实体通常都既具有静态的属性,又具有动态的行为。因此,面向对象方法属性,又具有动态的行为。因此,面向对象方法中的对象是由描述该对象属性的数据以及可以对中的对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一这些数据施加的所有操作封装在一起构成的统一体。对象的操作表示它的动态行为,通常称为服体。对象的操作表示它的动态行

34、为,通常称为服务或方法。对象的两个主要因素是属性和服务,务或方法。对象的两个主要因素是属性和服务,其定义如下:其定义如下:属性是用来描述对象静态特征的一个数据项。属性是用来描述对象静态特征的一个数据项。方法是用来描述对象动态特征方法是用来描述对象动态特征(行为行为)的一个的一个操作序列。操作序列。5.1 面向对象方法概述一个对象可以有多项属性和多个方法。一个一个对象可以有多项属性和多个方法。一个对象的属性和方法被结合成一个整体,对象的属对象的属性和方法被结合成一个整体,对象的属性值只能由这个对象的服务存取。性值只能由这个对象的服务存取。对象标识是对象的另一要素。对象标识也就对象标识是对象的另一

35、要素。对象标识也就是对象的名字,有外部标识和内部标识之分。前是对象的名字,有外部标识和内部标识之分。前者供对象的定义者或使用者用,后者供系统内部者供对象的定义者或使用者用,后者供系统内部唯一地识别对象。唯一地识别对象。对象的特点有如下几点:对象的特点有如下几点:5.1 面向对象方法概述(1)以数据为中心:操作围绕对其数据所需以数据为中心:操作围绕对其数据所需要做的处理来设置,而且操作的结果往往与当时要做的处理来设置,而且操作的结果往往与当时所处的状态所处的状态(数据的值数据的值)有关。有关。(2)对象是主动的:对象是进行处理的主体,对象是主动的:对象是进行处理的主体,不是被动等待对它进行处理,

36、而是必须通过它的不是被动等待对它进行处理,而是必须通过它的接口向对象发消息,请求它执行某个操作,处理接口向对象发消息,请求它执行某个操作,处理它的私有数据。它的私有数据。(3)实现了数据封装:对象好像是一只黑盒实现了数据封装:对象好像是一只黑盒子,它的私有数据完全被封装在盒子内部,对外子,它的私有数据完全被封装在盒子内部,对外是隐藏的、不可见的,对私有数据的访问或处理是隐藏的、不可见的,对私有数据的访问或处理只能通过公有的操作进行。只能通过公有的操作进行。5.1 面向对象方法概述(4)本质上具有并行性:不同对象各自独立本质上具有并行性:不同对象各自独立地处理自身的数据,彼此通过发消息传递信息完

37、地处理自身的数据,彼此通过发消息传递信息完成通信。成通信。(5)模块独立性好:即模块的内聚性强,耦模块独立性好:即模块的内聚性强,耦合性弱。合性弱。5.1 面向对象方法概述2.消息和方法消息和方法(1)消息消息消息是指对象之间在交互中所传送的通信信消息是指对象之间在交互中所传送的通信信息。一个消息应该包含以下信息:消息名、接收息。一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识、消息和方法、输入消息对象的标识、服务标识、消息和方法、输入信息、回答信息等。消息使对象之间互相联系、信息、回答信息等。消息使对象之间互相联系、协同工作,实现系统的各种服务。协同工作,实现系统的各种服务。5

38、.1 面向对象方法概述通常一个对象向另一个对象发送信息请求某通常一个对象向另一个对象发送信息请求某项服务,接受对象响应该消息,激发所要求的服项服务,接受对象响应该消息,激发所要求的服务操作,并将操作结果返回给请求服务的对象,务操作,并将操作结果返回给请求服务的对象,这种通讯机制叫做消息传递。发送消息的对象不这种通讯机制叫做消息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。需要知道接收消息的对象如何对请求予以响应。消息的接收者是提供服务的对象。在设计时,消息的接收者是提供服务的对象。在设计时,它对外提供的每个服务应规定消息的格式,这种它对外提供的每个服务应规定消息的格式,这种规

39、定称作消息协议。规定称作消息协议。5.1 面向对象方法概述消息中只包含发送者的要求,它指示接收者消息中只包含发送者的要求,它指示接收者要完成哪些处理,不需要告诉接收者应该怎样完要完成哪些处理,不需要告诉接收者应该怎样完成这些处理。消息完全由接收者解释,接收者独成这些处理。消息完全由接收者解释,接收者独立决定采用什么方式完成所需的处理。一个对象立决定采用什么方式完成所需的处理。一个对象能够接收多个不同形式、内容的消息;相同形式能够接收多个不同形式、内容的消息;相同形式的消息可以送往不同的对象。不同的对象对于形的消息可以送往不同的对象。不同的对象对于形式相同的消息可以有不同的解释,做出不同的反式相

40、同的消息可以有不同的解释,做出不同的反映。对于传来的消息,对象可以返回相应的回答映。对于传来的消息,对象可以返回相应的回答信息,但这种返回并不是必须的,这与子程序的信息,但这种返回并不是必须的,这与子程序的调用调用/返回有着明显的不同。返回有着明显的不同。5.1 面向对象方法概述(2)方法方法每个对象类都有一组所谓的方法,它们实际每个对象类都有一组所谓的方法,它们实际上是类对象上的各种操作。一个方法包括方法名、上是类对象上的各种操作。一个方法包括方法名、参数及方法体。方法描述了类与对象的行为,每参数及方法体。方法描述了类与对象的行为,每一个对象都封装了数据和算法两个方面,数据由一个对象都封装了

41、数据和算法两个方面,数据由一组属性表示,而算法即是当一个对象接收到一一组属性表示,而算法即是当一个对象接收到一条消息后,它所包含的方法决定对象如何动作。条消息后,它所包含的方法决定对象如何动作。通常是在某种编程语言通常是在某种编程语言(如如Java、C+)下实施的下实施的运算。运算。5.1 面向对象方法概述3.类类类的定义是指具有相同属性和服务的一组对类的定义是指具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和方法两个主要部的抽象描述,其内部包括属性和方法两个主要部分。即类由由方法和数据的集成,它是关于对

42、象分。即类由由方法和数据的集成,它是关于对象性质的描述,包括外部特性和内部实现两个方面。性质的描述,包括外部特性和内部实现两个方面。类通过描述消息模式及其相应的处理能力来定义类通过描述消息模式及其相应的处理能力来定义对象的外部特性;通过描述内部状态的表现形式对象的外部特性;通过描述内部状态的表现形式及固有处理能力的实现来定义对象的内部实现。及固有处理能力的实现来定义对象的内部实现。5.1 面向对象方法概述类给出了属于该类的全部对象的抽象定义,类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。因此,一而对象则是符合这种定义的一个实体。因此,一个对象又称作类的一个实例,类也可

43、称作对象的个对象又称作类的一个实例,类也可称作对象的模板。同类对象具有相同的属性与服务,是指它模板。同类对象具有相同的属性与服务,是指它们的定义形式相同,而不是说每个对象的属性值们的定义形式相同,而不是说每个对象的属性值都相同。一个类可以生成多个不同的对象,同一都相同。一个类可以生成多个不同的对象,同一个类的所有对象具有相同的性质。个类的所有对象具有相同的性质。5.1 面向对象方法概述4.继承性继承性继承是使用现存的定义作为基础,建立新定继承是使用现存的定义作为基础,建立新定义的技术,是父类和子类之间共享数据结构和方义的技术,是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。在定

44、义和实法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新内容。继承性通作为自己的内容,并加入若干新内容。继承性通常表示父类与子类的关系。子类的公共属性和操常表示父类与子类的关系。子类的公共属性和操作归属于父类,并为每个子类共享,子类继承了作归属于父类,并为每个子类共享,子类继承了父类的特性。父类的特性。5.1 面向对象方法概述继承性包括两种类型:继承性包括两种类型:单重继承:一个子类只有一个父类,即子类单重继

45、承:一个子类只有一个父类,即子类只继承一个父类的数据结构和方法。只继承一个父类的数据结构和方法。多重继承:一个子类可有多个父类,继承多多重继承:一个子类可有多个父类,继承多个父类的数据结构和方法。个父类的数据结构和方法。通过继承关系还可以构成层次关系,单重继通过继承关系还可以构成层次关系,单重继承构成的类之间的层次关系是一棵树,多重继承承构成的类之间的层次关系是一棵树,多重继承构成的类之间的关系是一个网格构成的类之间的关系是一个网格(如果将所有无如果将所有无子类的类,都看成还有一个公共子类的话子类的类,都看成还有一个公共子类的话)。而。而且继承关系是可传递的,即如果且继承关系是可传递的,即如果

46、C1继承继承C2,C2继承继承C3,则,则C1间接继承了间接继承了C3。5.1 面向对象方法概述与多继承相关的一个问题是命名冲突问题。与多继承相关的一个问题是命名冲突问题。所谓命名冲突是指:当一个子类继承了多个父类所谓命名冲突是指:当一个子类继承了多个父类时,如果这些一般类中的属性或方法有同名的现时,如果这些一般类中的属性或方法有同名的现象,则当子类中引用这样的属性名或者方法名时,象,则当子类中引用这样的属性名或者方法名时,系统无法判定它的语义到底是指哪个父类中的属系统无法判定它的语义到底是指哪个父类中的属性和方法。解决的办法有两种,一是不允许多继性和方法。解决的办法有两种,一是不允许多继承结

47、构中的各个父类的属性及方法取相同的名字,承结构中的各个父类的属性及方法取相同的名字,但这会为开发者带来一些不便。二是由面向对象但这会为开发者带来一些不便。二是由面向对象程序设计语言提供一种更名机制,使程序可以在程序设计语言提供一种更名机制,使程序可以在特殊类中更换从各个一般类继承来的属性或方法特殊类中更换从各个一般类继承来的属性或方法的名字。的名字。5.1 面向对象方法概述5.封装性封装性封装是一种信息隐蔽技术,用户只能见到对封装是一种信息隐蔽技术,用户只能见到对象封装界面上的信息,把对象的实现细节对外界象封装界面上的信息,把对象的实现细节对外界隐藏起来。封闭有两个含义:第一个含义是,把隐藏起

48、来。封闭有两个含义:第一个含义是,把对象的全部属性和全部服务结合在一起,形成一对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位个不可分割的独立单位(即对象即对象)。第二个含义也。第二个含义也称作信息隐蔽,即尽可能隐蔽对象的内部细节,称作信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口使之对外形成一个边界,只保留有限的对外接口使之与外部发生联系。与外部发生联系。5.1 面向对象方法概述封装的条件为:封装的条件为:一个清晰的边界,所有的对象的内部软件的一个清晰的边界,所有的对象的内部软件的范围被限定在这个边界内;范围被限定在这个边界内;确定的接口,这个接口

49、描述这个对象和其他确定的接口,这个接口描述这个对象和其他的对象之间相互的作用;的对象之间相互的作用;受保护的内部实现,这个实现给出了由软件受保护的内部实现,这个实现给出了由软件对象提供的功能的细节,这些只能通过定义这个对象提供的功能的细节,这些只能通过定义这个对象的类所提供的方法进行访问。对象的类所提供的方法进行访问。5.1 面向对象方法概述6.多态性多态性多态性是指相同操作的消息发送给不同的对多态性是指相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中所定义的操象时,每个对象将根据自己所属类中所定义的操作去执行,而产生不同的结果。即:在类等级的作去执行,而产生不同的结果。即:在类等

50、级的不同层次中可以共享不同层次中可以共享(公用公用)一个行为一个行为(方法方法)的名的名字,然而不同层次中的每个类却各自按自己的需字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。当对象接收到发送给它的消要来实现这个行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中息时,根据该对象所属于的类动态选用在该类中定义的实现算法。定义的实现算法。例如:在父类例如:在父类“几何图形几何图形”中,定义了一个中,定义了一个操作操作“绘图绘图”,它的子类,它的子类“椭圆椭圆”和和“矩形矩形”都都继承了几何图形的绘图操作。同是继承了几何图形的绘图操作。同是“绘图绘图”操作,操作,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件工程第5章-面向对象的方法课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|