《第七章面向对象方法学引论优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第七章面向对象方法学引论优秀PPT.ppt(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第七章面向对象方法第七章面向对象方法学引论学引论现在学习的是第1页,共65页第七章第七章 面向对象方法学引论面向对象方法学引论&71 传统方法学的缺点传统方法学的缺点&72 快速原型法简介快速原型法简介&73 面向对象方法学概述面向对象方法学概述&74 面向对象的基本概念面向对象的基本概念&75 面向对象建模面向对象建模&76 对象模型对象模型&77 动态模型动态模型&78 功能模型功能模型&79 本章重点本章重点现在学习的是第2页,共65页71 传统方法学的缺点传统方法学的缺点 传统的生命周期方法学的本质,是传统的生命周期方法学的本质,是通过需求通过需求分析预定义软件需求,然后一个阶段接着一
2、个阶分析预定义软件需求,然后一个阶段接着一个阶段有条不紊的开发用户所要求的软件,实现预定段有条不紊的开发用户所要求的软件,实现预定义的软件需求义的软件需求。虽然生命周期方法较之传统的软件开发方法更虽然生命周期方法较之传统的软件开发方法更为规范化,对实现软件开发工程化起到了重要的促为规范化,对实现软件开发工程化起到了重要的促进作用,部分缓解了软件危机,引起了软件开发原进作用,部分缓解了软件危机,引起了软件开发原理的一次重大变革。理的一次重大变革。但是,对于那些大的复杂的软件系统而言,但是,对于那些大的复杂的软件系统而言,这种方法仍然显得力不从心这种方法仍然显得力不从心。现在学习的是第3页,共65
3、页一、瀑布模型的缺点:僵化一、瀑布模型的缺点:僵化生命周期各阶段间存在严格的顺序性与依赖生命周期各阶段间存在严格的顺序性与依赖性,因此其特别强调预先定义需求的重要性性,因此其特别强调预先定义需求的重要性。要求预先定义并要求预先定义并“冻结冻结”软件需求。软件需求。实践表明:在系统建立起来很难仅仅依靠分析就实践表明:在系统建立起来很难仅仅依靠分析就能确定一套完整、准确、一致、有效的应用需求,能确定一套完整、准确、一致、有效的应用需求,而且该方法不适用与用户需求不断变化的情况:而且该方法不适用与用户需求不断变化的情况:(1)某些类型的系统需求是模糊的。)某些类型的系统需求是模糊的。(2)项目参与者
4、之间存在通讯鸿沟。)项目参与者之间存在通讯鸿沟。(3)预先定义的需求可能是过时的。)预先定义的需求可能是过时的。现在学习的是第4页,共65页二、二、SA-SD-SP SA-SD-SP 技术的缺点技术的缺点 本质上是功能分解,以实现功能的本质上是功能分解,以实现功能的过程过程为中心,为中心,而用户的需求变化主要是针对而用户的需求变化主要是针对功能功能的。这就使基的。这就使基于过程的设计于过程的设计不易被理解不易被理解;且;且功能功能变化往往引起变化往往引起结构变化较大,结构变化较大,稳定性不好稳定性不好。系统有明确的边界定义,且系统结构依赖于系统系统有明确的边界定义,且系统结构依赖于系统边界的定
5、义,系统边界的定义,系统不易扩充和修改不易扩充和修改。数据与操作分开处理,可造成软构件对具体应用环数据与操作分开处理,可造成软构件对具体应用环境的依赖,境的依赖,可重用性可重用性(reusability)较差较差.现在学习的是第5页,共65页72 快速原型法简介快速原型法简介快速原型法适用于用户需求模糊或随时间变化快速原型法适用于用户需求模糊或随时间变化的系统。以原型的系统。以原型(软件产品的样品软件产品的样品)为共同语言,为共同语言,实现用户与开发者双向沟通,来解决用户与开发者实现用户与开发者双向沟通,来解决用户与开发者之间的鸿沟。之间的鸿沟。原型是一个可实地运行的模型原型是一个可实地运行的
6、模型,有正式产品有正式产品的主要特征,但不是全部特征的主要特征,但不是全部特征。软件原型是软件系统的最初版本,以最少的软件原型是软件系统的最初版本,以最少的费用,最短的时间开发出的、以反映最后软件的费用,最短的时间开发出的、以反映最后软件的主要特征的系统。主要特征的系统。现在学习的是第6页,共65页一、原型模型一、原型模型(快速成型模型快速成型模型)建造建造/修改修改 原型原型用户测试用户测试运行原型运行原型 听取用听取用 户意见户意见原型范型原型范型现在学习的是第7页,共65页二、原型的特性二、原型的特性n 是一个可实际工作的系统;是一个可实际工作的系统;n 没没有有固固定定的的生生存存期期
7、,结结局局可可能能是是用用后后立立即即被被抛抛弃弃,或可能成为最终系统或可能成为最终系统;n 可可服服务务于于不不同同的的目目的的,从从需需求求分分析析到到最最终终产产品品都可做原型都可做原型;n 建立必须快建立必须快,便宜便宜;n 是包含修改、评价在内的完整重复过程。是包含修改、评价在内的完整重复过程。原型指“快速软件原型”现在学习的是第8页,共65页三、原型化开发的应用领域三、原型化开发的应用领域n 需求分析和定义规格说明;需求分析和定义规格说明;n 作为软件设计的一种工具;作为软件设计的一种工具;n 作为一种解决不确定性的工具作为一种解决不确定性的工具n 作为一种实验工具作为一种实验工具
8、n 系统开发同时系统开发同时,作为同步培训工具作为同步培训工具n 作为开发方法,利用原型演化为最终系统作为开发方法,利用原型演化为最终系统n 作为软件维护的辅助工具作为软件维护的辅助工具现在学习的是第9页,共65页四、原型开发的分类四、原型开发的分类原型化随建立原型目的不同分为:原型化随建立原型目的不同分为:(1)抛弃式原型开发:抛弃式原型开发:辅助于瀑布模型,建立目标辅助于瀑布模型,建立目标是评价目标系统的某个是评价目标系统的某个(些些)特性,以便准确了解特性,以便准确了解需求,或严格验证方案。特点用完就抛弃,然需求,或严格验证方案。特点用完就抛弃,然后重新建立正式的目标系统。后重新建立正式
9、的目标系统。(2)演化式原型开发:演化式原型开发:采用高度迭代的动态方法,采用高度迭代的动态方法,每次都要再次确定需求、分析设计、开发测试、每次都要再次确定需求、分析设计、开发测试、,多次迭代直到用户满意为止。特点是,多次迭代直到用户满意为止。特点是系系统的初始版本很早交付用户试用,而且开发的统的初始版本很早交付用户试用,而且开发的成败取决于需要双方的耐心成败取决于需要双方的耐心。现在学习的是第10页,共65页四、原型开发的分类四、原型开发的分类(续续)(3)递增式原型开发:递增式原型开发:融合了瀑布模型与原型迭代融合了瀑布模型与原型迭代的特征。特点是采用随日程时间的进展而交错的的特征。特点是
10、采用随日程时间的进展而交错的线性序列,每一个线性序列产生一个可发布线性序列,每一个线性序列产生一个可发布“增增量量”。如使用此方法开发一个字处理软件,线如使用此方法开发一个字处理软件,线性序列安排如下:性序列安排如下:S1:发布基本的文件管理、编辑和文档生成:发布基本的文件管理、编辑和文档生成功能;功能;S2:增量实现完善的编辑和文档生成功能;:增量实现完善的编辑和文档生成功能;S3:增量实现拼写和语法检查功能;:增量实现拼写和语法检查功能;S4:增量完成高级的页面布局功能。:增量完成高级的页面布局功能。现在学习的是第11页,共65页五、原型开发的优点五、原型开发的优点F保证产品有较好的可维护
11、性保证产品有较好的可维护性F改善用户与开发人员的信息交流和思想沟通,给用改善用户与开发人员的信息交流和思想沟通,给用户修改的机会户修改的机会F减少或消灭下游返工的可能,改进了瀑布模型减少或消灭下游返工的可能,改进了瀑布模型的弊病的弊病F原型系统可作为培训环境原型系统可作为培训环境,有利于用户培训和开有利于用户培训和开发同步。发同步。F开发成本降低,周期缩短。开发成本降低,周期缩短。现在学习的是第12页,共65页73 面向对象方法学概述面向对象方法学概述一、传统的软件开发方法的缺点:一、传统的软件开发方法的缺点:特点是特点是把软件视为处理流,并定义成由一系列把软件视为处理流,并定义成由一系列步骤
12、构成的算法步骤构成的算法。每一步骤都是带有预定输入和特定输出。每一步骤都是带有预定输入和特定输出的一个过程,把这些步骤串联在一起可产生合理的稳定的的一个过程,把这些步骤串联在一起可产生合理的稳定的贯通于整个程序的控制流,最终产生一个简单的具有静态贯通于整个程序的控制流,最终产生一个简单的具有静态结构的体系结构。结构的体系结构。&过程性开发模式过程性开发模式侧重建立构成问题解决的处理流侧重建立构成问题解决的处理流。&数据抽象、数据结构数据抽象、数据结构根据算法步骤的要求开发,它贯穿根据算法步骤的要求开发,它贯穿于过程,提供过程所要求操作的信息。于过程,提供过程所要求操作的信息。&系统的状态是一组
13、全局变量系统的状态是一组全局变量,这组全局变量保存状态,这组全局变量保存状态的值,把它们从一个过程传送到另一个过程。的值,把它们从一个过程传送到另一个过程。现在学习的是第13页,共65页二、面向对象思想的由来二、面向对象思想的由来 传统的软件开发方法 没有直接而全面地反映问题的本质 直接面对问题域中客观存在的事物来进行软件开发 面向对象希望希望现在学习的是第14页,共65页二、面向对象思想的由来二、面向对象思想的由来(续续)对象对象 表示现实世界中某个具体的事物。表示现实世界中某个具体的事物。事事物可分为两大部分物可分为两大部分:v物质物质:表达具体的事物表达具体的事物v意识意识:描述抽象的概
14、念描述抽象的概念解决问题方法解决问题方法:(OO Object-Oriented)现实问题空间现实问题空间 面向对象解空间面向对象解空间 物质物质 对象对象(客观存在的客观存在的)意识意识 类类 (抽象的概念抽象的概念)现在学习的是第15页,共65页三、对象、实体与类关系图三、对象、实体与类关系图对象对象实体实体类类抽象数据类抽象数据类计算机世界计算机世界现实世界现实世界计算机逻计算机逻辑的实现辑的实现影射抽抽象象实实例例化化抽抽象象现在学习的是第16页,共65页四、面向对象方法四、面向对象方法(OOM)(OOM)特点特点 尽可能模拟人类习惯的思维方式,即问题域尽可能模拟人类习惯的思维方式,即
15、问题域与求解域在结构上尽可能一致。与传统方法相反,与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把以数据或信息为主线,把数据和处理结数据和处理结合合构成统一体构成统一体 对象。这时程序不再是一对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作系列工作在数据上的函数集合,而是相互协作又彼此独立的又彼此独立的对象对象的集合。的集合。现在学习的是第17页,共65页OOMOOM举例:举例:邮局业务管理邮局业务管理杭杭 州州北北 京京Post-officeMessageSend by method对象对象ObjectObject=数据数据AttributeAttrib
16、utes:location;employee;+操作操作MethodMethods:send;sell;注意:注意:Object内部的内部的attributes不允许外部用户直接改动,只有当它提供了相不允许外部用户直接改动,只有当它提供了相应的服务应的服务method时,用户才能通过发送时,用户才能通过发送message来提请它执行。来提请它执行。我想把邮局搬到我想把邮局搬到我家门口,多加几个我家门口,多加几个邮递员,邮递员,24小时都开门小时都开门对不起,对不起,本邮局不提供本邮局不提供此类服务此类服务唉,那就先送束花吧唉,那就先送束花吧 Post_office.Send(request,p
17、ayment)现在学习的是第18页,共65页五、面向对象的定义五、面向对象的定义面向对象=对象+类+继承+通信n如果一个软件系统是使用这样如果一个软件系统是使用这样 4 4 个概念设计个概念设计和实现的,则我们认为这个软件系统是面向对和实现的,则我们认为这个软件系统是面向对象的。象的。n一个面向对象的程序的每一成份应是一个面向对象的程序的每一成份应是对象对象,计,计算是通过算是通过新的对象的建立新的对象的建立和和对象之间的通信对象之间的通信来来执行的。执行的。面向对象四要素:面向对象四要素:(1 1)对象)对象 (2 2)类)类 (3 3)继承)继承 (4 4)消息)消息现在学习的是第19页,
18、共65页六、面向对象四要素六、面向对象四要素对象对象n对象对象(Object)Object)是面向对象的是面向对象的基本成份基本成份。n每个对象可用每个对象可用它本身的一组属性它本身的一组属性和和它可它可以执行的一组操作以执行的一组操作来定义。来定义。n属性属性一般只能一般只能通过执行对象的操作来改通过执行对象的操作来改变变。n操作操作又称为方法或服务,它又称为方法或服务,它描述了对象执描述了对象执行的功能行的功能,若通过消息传递,还可以为其它,若通过消息传递,还可以为其它对象使用。对象使用。现在学习的是第20页,共65页六、面向对象四要素六、面向对象四要素类类n类(类(ClassClass)
19、是一组具有)是一组具有相同数据结构相同数据结构和和相同操相同操作作的对象的集合。的对象的集合。n类的定义包括类的定义包括一组数据属性一组数据属性和和在数据上的一组在数据上的一组合法操作合法操作。n类定义可以视为一个具有类似特性与共同行为的类定义可以视为一个具有类似特性与共同行为的对象的对象的模板模板,可用来产生对象。,可用来产生对象。n在一个类中,每个在一个类中,每个对象对象都是都是类的实例类的实例 (Instance)Instance),它们都可使用类中提供的函数。,它们都可使用类中提供的函数。n对象的状态则包含在它的实例变量,即实例对象的状态则包含在它的实例变量,即实例的属性中。的属性中。
20、现在学习的是第21页,共65页六、面向对象四要素六、面向对象四要素消息消息n消息(消息(MessageMessage)是一个对象与另一个对象的通)是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操信单元,是要求某个对象执行类中定义的某个操作的规格说明。作的规格说明。发送给一个对象的消息定义了一发送给一个对象的消息定义了一个个方法名方法名和一个和一个参数表参数表(可能是空的),并(可能是空的),并指定指定某一个某一个对象对象。n一个对象接收的消息则调用消息中指定的一个对象接收的消息则调用消息中指定的方方法法,并将,并将形式参数与参数表中相应的值结合起形式参数与参数表中相应的值结
21、合起来来。现在学习的是第22页,共65页class Post_office /定义类定义类 private:loc_type location;emp_type employee;public:void send(req_type request,money_type payment);void sell(int goods,money_type payment);main()Post_office My_PO;/声明类的示例:对象声明类的示例:对象 req_type My_request;money_type My_payment;My_PO.Send(My_request,My_payme
22、nt);/通讯通讯 OOMOOM举例:举例:邮局业务管理邮局业务管理现在学习的是第23页,共65页六、面向对象四要素六、面向对象四要素继承继承n继继承承(Inheritance)是是使使用用已已存存在在的的定定义义做做为为基基础建立新定义础建立新定义的技术。的技术。n新新类类的的定定义义可可以以是是既既存存类类所所声声明明的的数数据据和和新新类类所所增增加加的的声声明明的的组组合合。新新类类复复用用既既存存的的定定义义,而而不要求修改既存类不要求修改既存类。n既既存存类类可可当当做做基基类类来来引引用用,则则新新类类相相应应地地可可当当做做派生类派生类来引用。来引用。n例例如如,从从一一个个既
23、既存存的的车车辆辆类类派派生生的的四四轮轮驱驱动动车车类类可可能能不不仅仅是是车车辆辆类类子子集集合合定定义义的的特特殊殊化化,而而且且还还可可能在新类的界面中引入新的能力。能在新类的界面中引入新的能力。现在学习的是第24页,共65页七、面向对象与传统方法比较七、面向对象与传统方法比较 传统方法:面向过程设计,以计算为核心,数据传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。与操作分离,不易理解。OOM:以:以object 为核心,强调对现实概念的模拟而为核心,强调对现实概念的模拟而不强调算法。不强调算法。“面向对象方法学的基本原则,是按面向对象方法学的基本原则,是按照人们习惯
24、的思维方式建立问题域的模型,开发出照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统尽可能直观、自然地表现求解方法的软件系统”。Class:由特殊到一般的归纳由特殊到一般的归纳(induction)Inheritance:由一般到特殊的演绎:由一般到特殊的演绎(deduction)现在学习的是第25页,共65页七、面向对象与传统方法比较七、面向对象与传统方法比较(续续)传统方法:结构依赖于功能,不稳定。传统方法:结构依赖于功能,不稳定。OOM:以:以object模拟实体,需求变化不会引起结模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相构
25、的整体变化,因为实体相对稳定,故系统也相应稳定。应稳定。传统方法:通过建立标准函数库来重用软构件。传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的但标准函数缺少必要的“柔性柔性”,难以适应不同场,难以适应不同场合的不同需要。合的不同需要。OOM:一个:一个class所有的所有的 instances 都可重用它都可重用它的代码;由的代码;由 inheritance 派生出的新的派生出的新的class 可可重用其父类的代码,并且可以修改、扩充而不影响其重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。父类的使用。现在学习的是第26页,共65页七、面向对象与传统方法比较七、面向
26、对象与传统方法比较(续续)F稳定性好:软件功能需求的变化不牵动稳定性好:软件功能需求的变化不牵动全局,只需局部修改;全局,只需局部修改;FClass 独立性强:只要修改不涉及独立性强:只要修改不涉及class的的对外接口,则内部修改完全不影响外部调对外接口,则内部修改完全不影响外部调用;用;FInheritance和多态性和多态性(polymorphism)使使其很容易被修改和扩充;其很容易被修改和扩充;F容易理解;容易理解;传统方法:可维护性是最令人头痛的问题。传统方法:可维护性是最令人头痛的问题。OOM:从以下几方面改善了可维护性:从以下几方面改善了可维护性 现在学习的是第27页,共65页
27、七、面向对象与传统方法比较七、面向对象与传统方法比较(续续)OOMOOM并不是减少了开发时间并不是减少了开发时间,而是通,而是通过提高可重用性、可维护性,进行扩过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度充和修改的容易程度等,从长远角度改进了软件的质量改进了软件的质量。OOMOOM与与快速原型快速原型法法结合使用效果好。结合使用效果好。现在学习的是第28页,共65页八、三种开发模型的适用范围八、三种开发模型的适用范围瀑布模型瀑布模型 Waterfall:需求稳定少变化需求稳定少变化 对环境较熟悉(低风险)对环境较熟悉(低风险)用户很少参与开发用户很少参与开发 面向过程编程面
28、向过程编程 螺旋模型螺旋模型Spiral:需求可能在开发早期有变化需求可能在开发早期有变化 对环境较熟悉(中风险)对环境较熟悉(中风险)用户不同程度地参与整个过程用户不同程度地参与整个过程 OOP现在学习的是第29页,共65页八、三种开发模型的适用范围八、三种开发模型的适用范围(续续)增量模型增量模型Incremental:需求随时可能变化需求随时可能变化 对环境不熟悉(高风险)对环境不熟悉(高风险)用户完全参与开发用户完全参与开发 OOPSA-SD-SP 与与Waterfall model 有有本本质质上上的的密密切切联联系系;OOP由由可可用用于于任任何何模模型型。OOM的的工工作作重重点
29、点在在分分析析阶阶段段,确确定定objects,此此外外,生生命命周周期期的各阶段可以的各阶段可以“无缝无缝”连接。连接。现在学习的是第30页,共65页74 面向对象的基本概念面向对象的基本概念f1f2f3fifnfi(X)Sgi(X,S)S输输出出输输出出1、对象、对象Object:=ID+Method+Attribute+Message现在学习的是第31页,共65页对象的基本特点对象的基本特点 以数据为中心以数据为中心,不设与数据无关的操作;,不设与数据无关的操作;ObjectObject主动处理主动处理而不而不 被动地等待被处理,外部被动地等待被处理,外部只能通过只能通过messagem
30、essage请求操作;请求操作;具有黑盒性具有黑盒性:外部操作时,无须知道该:外部操作时,无须知道该objectobject内内部的数据结构及算法;部的数据结构及算法;具有并行性具有并行性:不同:不同objectobject各自独立地处理自身各自独立地处理自身数据,彼此间仅通过传递数据,彼此间仅通过传递messagemessage完成通信;完成通信;模块独立性好模块独立性好:内聚强:内聚强()()、耦合松、耦合松()()现在学习的是第32页,共65页2 2、类、类ClassClass:具有相同数据和相同操作的一组对象;:具有相同数据和相同操作的一组对象;3 3、实例、实例InstanceIns
31、tance:某个:某个classclass描述的具体对象;描述的具体对象;4 4、消息、消息MessageMessage:=object_ID.method_ID:=object_ID.method_ID(parameter(s)(parameter(s);5 5、方法、方法MethodMethod:object:object能做的操作,亦称为能做的操作,亦称为service service、responsibility,responsibility,在在 class class 中须定义相应的中须定义相应的代码;代码;6 6、属性、属性AttributeAttribute :object o
32、bject 的固有数据;的固有数据;7 7、继承、继承InheritanceInheritance:子类自动共享父类:子类自动共享父类attributes attributes 和和methods methods,而不必重复定义。,而不必重复定义。面向对象的基本概念面向对象的基本概念(续续)现在学习的是第33页,共65页面向对象的基本概念面向对象的基本概念(续续)Class 中国人中国人中国人中国人 Attributes中国人中国人 Methods张山张山(instance)Class 中国人中国人 张山的张山的 AttributesClass 杭州人杭州人(子类子类)杭州人杭州人 Attri
33、butes 杭州人杭州人 Methods Class 中国人中国人李士李士(instance)中国人李士的中国人李士的 Attributes 杭州人李士的杭州人李士的 Attributes Class 杭州人杭州人例:例:现在学习的是第34页,共65页继承的特点继承的特点:低层性质覆盖高层性质低层性质覆盖高层性质:若若杭州人杭州人的的 methods中有与中有与中国人中国人的同名,则李士执行该的同名,则李士执行该 method 时以时以杭州人杭州人为准,不执行为准,不执行中国人中国人中定中定义的同名义的同名 method。传递性传递性(transitivity):AB、BC AC 一个一个 c
34、lass 继承了上层全部继承了上层全部 classes 的一切性质。的一切性质。一个子类只一个子类只 有有 一一 个父类称为单个父类称为单 继继 承承(single inheritance),一个子类可有多个父类称为多重继承一个子类可有多个父类称为多重继承(multiple inheritance).例例 修改与扩充可以很容易地通过派生子类来完成。修改与扩充可以很容易地通过派生子类来完成。现在学习的是第35页,共65页注意:注意:multiple inheritance 在定在定义中应避免二义性义中应避免二义性(ambiguity),即二个父类中定即二个父类中定义重名,但各具义重名,但各具不同
35、性质。不同性质。例:例:FemaleChineseScholarICardDeckGraphicalObjectGraphicalDeckMethod:Draw:=take a card from a deckMethod:Draw:=displaya graphical objectMethod:Draw:=?例:例:现在学习的是第36页,共65页面向对象的基本概念面向对象的基本概念(续续)8、多态性、多态性(Polymorphism):不同层次的:不同层次的 classes 可共享一个可共享一个method名名,但按各自的方式来实现这但按各自的方式来实现这种种method。C+中定义了虚函
36、数中定义了虚函数(virtual function)来实来实现这一功能。即一个现这一功能。即一个method有多个版本,运行时有多个版本,运行时才决定执行哪一个。故亦称为才决定执行哪一个。故亦称为动态联编动态联编(dynamic binding)或或滞后联编滞后联编(late binding)现在学习的是第37页,共65页面向对象的基本概念面向对象的基本概念(续续)double avg(const double a,int size);double sum=0.0;for(int i=0;i size;+i)sum+=ai;return(sum/size);double avg(const i
37、nt a,int size);int sum=0;for(int i=0;i size;+i)sum+=ai;return(double)sum/size);main()int k3=1,2,3 ;double x3=1.1,2.2,3.3 ;cout avg(k,3)“int averagen”;cout avg(x,3)“double averagen”;9、重载、重载Overloading 函数重载函数重载:不同函数共用一不同函数共用一个名字,而调用个名字,而调用参数的特征不同。参数的特征不同。例:例:现在学习的是第38页,共65页面向对象的基本概念面向对象的基本概念(续续)运算符重载运
38、算符重载Operator overloading:同一运算符同一运算符(operator)作用于不同类型的作用于不同类型的操作数操作数(operand)上面。上面。在在编编译译(compile)阶阶段段就就决决定定了了使使用用类类型型及及执执行行代代码码,故故意意亦亦称称为为静静态态联联编编(static binding)或或先前联编先前联编(early binding)。现在学习的是第39页,共65页75 面向对象建模面向对象建模面向对象的开发方法面向对象的开发方法&Booch方法方法Booch最先描述了面向对象的软件开发最先描述了面向对象的软件开发的基础问题,指出了面向对象开发方法是一的基
39、础问题,指出了面向对象开发方法是一种完全不同于传统的功能分解的设计方法。种完全不同于传统的功能分解的设计方法。面向对象的软件分解方法更接近人对客观事面向对象的软件分解方法更接近人对客观事物的理解,而功能分解只能通过问题空间的物的理解,而功能分解只能通过问题空间的转换获得。转换获得。Booch方法包括各种模型,涉及软件系方法包括各种模型,涉及软件系统的对象、动态及功能各方面,对类及继承统的对象、动态及功能各方面,对类及继承方面的描述特别值得借鉴。方面的描述特别值得借鉴。现在学习的是第40页,共65页面向对象的开发方法面向对象的开发方法(续续)&Coad方法方法1989年年Coad与与Yourdo
40、n提出的面向对提出的面向对象方法,经典著作象方法,经典著作(OOA、OOD).该方法该方法比较完整而系统介绍了面向对象的分析和比较完整而系统介绍了面向对象的分析和设计。设计。主要优点是在对象、结构、属性和服主要优点是在对象、结构、属性和服务的认定方面,提出了一套系统的原则。务的认定方面,提出了一套系统的原则。该方法完成了从需求角度出发的对象和该方法完成了从需求角度出发的对象和分类结构的认定工作,面向对象的设计分类结构的认定工作,面向对象的设计可以在此基础上,从设计的角度进一步可以在此基础上,从设计的角度进一步类和类层次结构的认定。类和类层次结构的认定。现在学习的是第41页,共65页面向对象的开
41、发方法面向对象的开发方法(续续)&OMT(Object Modeling Technique)方法方法OMT方法是方法是1991年由年由James Rumbaugh等等5人提人提出的,经典著作为出的,经典著作为“面向对象的建模与设计面向对象的建模与设计”。特点是开发工作起始于对真实世界的对象建模上,然特点是开发工作起始于对真实世界的对象建模上,然后围绕这这些对象使用这个模型来构造独立于语言的设计。后围绕这这些对象使用这个模型来构造独立于语言的设计。建立三种模型:建立三种模型:描述系统数据结构的对象模型描述系统数据结构的对象模型(object model).描述系统控制结构的动态模型描述系统控制
42、结构的动态模型(dynamic model).描述系统功能的功能模型描述系统功能的功能模型(function model).现在学习的是第42页,共65页76 对象模型对象模型(Object Model)对象模型是对模拟客观世界实体的对象以及对象模型是对模拟客观世界实体的对象以及对象之间关系的映射,描述了系统的静态结构。对象之间关系的映射,描述了系统的静态结构。对象模型是三个模型中最关键的一个模型,对象模型是三个模型中最关键的一个模型,它的作用是它的作用是描述系统的静态结构描述系统的静态结构,包括,包括构成系构成系统的类和对象统的类和对象,它们的属性和操作它们的属性和操作,及,及它们之间它们之
43、间的关系的关系。在建立对象模型时,需要定义一组图形符号,在建立对象模型时,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则。并且规定一组组织这些符号以表示特定语义的规则。此处给出此处给出CoadCoad与与YourdonYourdon的表示方法。的表示方法。现在学习的是第43页,共65页一、表示类一、表示类&对象的图形符号对象的图形符号Class NameAttributesMethods类类ClassClass NameAttributesMethods类类&对象对象Class-&-Object表示属于该类表示属于该类的对象的对象现在学习的是第44页,共65页结构表示问题域
44、中的复杂关系,是客结构表示问题域中的复杂关系,是客观世界实体间关系的抽象。观世界实体间关系的抽象。类及对象间的关系可概括为:类及对象间的关系可概括为:&归纳关系归纳关系(一般一般/特殊结构特殊结构、分类结构分类结构)针对事物类之间的组织关系针对事物类之间的组织关系&组合关系组合关系(整体整体/部分结构部分结构、组装结构组装结构)表示事物的整体与部分之间的组合关系表示事物的整体与部分之间的组合关系&关联关系关联关系 表示对象间相互依赖表示对象间相互依赖、相互作用关系相互作用关系二、表示结构的图形符号二、表示结构的图形符号现在学习的是第45页,共65页一般类一般类特殊类特殊类特殊类特殊类.子类的公
45、共属性和操作归属于一般类子类的公共属性和操作归属于一般类并被每一个子类共享,每一个子类都并被每一个子类共享,每一个子类都继承继承了一般类的特征。了一般类的特征。一般类一般类(父类、基类、超类父类、基类、超类)特殊类特殊类(子类子类)继承继承(1)(1)一般一般/特殊结构表示法特殊结构表示法现在学习的是第46页,共65页 存户存户一般一般/特殊结构举例特殊结构举例一般类一般类(父类、基类、超类父类、基类、超类)特殊类特殊类(子类子类)继承继承一个特殊类中的所有对象可继承一般类中的属性、服一个特殊类中的所有对象可继承一般类中的属性、服务、关系务、关系账号账号姓名姓名余额余额存款存款取款取款 支票存
46、户支票存户 储蓄存户储蓄存户利息率利息率现在学习的是第47页,共65页一个整体对象可有不同类型的部分对象一个整体对象可有不同类型的部分对象.一个部分对象也可同时属于多个整体对象一个部分对象也可同时属于多个整体对象.(2)(2)整体整体/部分结构表示法部分结构表示法整整 体体部分部分 1部分部分 2组合关系组合关系注:是注:是object间的关系,有传递性。间的关系,有传递性。1,m0,n现在学习的是第48页,共65页 飞机飞机发动机发动机飞机飞机整体对象整体对象可能可能 没有发动机没有发动机 最多有四台发动机最多有四台发动机用以实现聚合用以实现聚合、组合组合、划分划分发动机发动机部分对象部分对
47、象0,4现在学习的是第49页,共65页整体整体/部分结构部分结构(分类结构分类结构)&整体/部分结构是一种特定的连接.&整体类中的一个对象(或称聚合)是由各部分类的对象(或称成分)构成的.&这一结构是对象间的一种关系.现在学习的是第50页,共65页微机微机1+1+电源电源主机箱主机箱键盘键盘监视器监视器鼠标鼠标内存内存CPUCPU硬盘硬盘0,10,1整体整体/部分结构表示法举例部分结构表示法举例现在学习的是第51页,共65页 关联关系反映对象之间相互依赖、相互作关联关系反映对象之间相互依赖、相互作用的关系。用的关系。通常为通常为1:1,1:M,M:N1:1,1:M,M:N三种类型。三种类型。三
48、、表示关联的图形符号三、表示关联的图形符号类类1 连接名称连接名称m n类类2教师教师 指导论文指导论文0,m 1学生学生表示法:表示法:教师为学生教师为学生指导论文:指导论文:m,n为阶0至m现在学习的是第52页,共65页类类 1 连接名称连接名称m n类类 1连接连接属性属性1)1)关联关系关联关系(链属性链属性)的表示的表示允许实例连接带有一组属性,这些属性通过关联来描述 现在学习的是第53页,共65页为之工作为之工作1,m工资工资职务职务雇主雇主雇员雇员 个人个人名字名字身份证号身份证号公司公司名字名字地址地址题目题目答辩时间答辩时间成绩成绩 教师教师学生学生 指导论文指导论文0,m
49、11)1)关联关系关联关系(链属性链属性)示例示例现在学习的是第54页,共65页教师教师1+书书表示表示1 1个个或多个或多个2)2)阶数阶数(重数重数):相关对象的数量:相关对象的数量现在学习的是第55页,共65页目录目录文件名文件名文件文件发送者发送者接受者接受者类类 A限定词限定词类类 B目录+文件名产生一个文件3)3)限定限定4)4)消息连接消息连接例:现在学习的是第56页,共65页为之工作为之工作为之工作为之工作管理管理 0,1姓名姓名身份证号码身份证号码地址地址员工员工名字名字电话号码电话号码主要产品主要产品地址地址公司公司职务职务雇用雇用解雇解雇项目名项目名预算预算优先级优先级项
50、目项目产品名产品名成本成本重量重量产品产品工人工人经理经理部门部门部门名部门名主持主持参加参加1+1+1+1+1+生产生产四、一家公司的对象模型四、一家公司的对象模型现在学习的是第57页,共65页77 动态模型动态模型(Dynamic Model)要要想想对对一一个个系系统统了了解解得得比比较较清清楚楚,还还应应当当考考察察在在任任何何时时刻刻对对象象及及其其关关系系的的改改变变。系系统统的的这这些些涉及涉及时序时序和和改变状况改变状况用动态模型来描述。用动态模型来描述。动动态态模模型型着着重重于于描描述述系系统统瞬瞬时时的的、行行为为化化的的控控制制逻逻辑辑,其其规规定定了了对对象象模模型型