《软件工程面向对象软件开发方法34256.pptx》由会员分享,可在线阅读,更多相关《软件工程面向对象软件开发方法34256.pptx(140页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机软件技术基础计算机软件技术基础 软件工程软件工程东北大学网络学院软件技术基础课程组教师:高克宁教师:高克宁E-mailE-mail:c_c_软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组2 2 o面向对象方法概述面向对象方法概述n面向对象(面向对象(OO,Object Oriented)技术是)技术是软件工程领域中的重要技术,这种软件开发软件工程领域中的重要技术,这种软件开发思想比较自然地模拟了人类认识客观世界的思想比较自然地模拟了人类认识客观世界的方式,成为当前计算机软件工程学中的主流方式
2、,成为当前计算机软件工程学中的主流方法方法n“面向对象面向对象”(”(Object-Oriented)是针对是针对“面向过程面向过程”一词提出的,是从本质上区别于一词提出的,是从本质上区别于传统的结构化方法的一种新方法,新思路传统的结构化方法的一种新方法,新思路o应该特别强调的是,面向对象技术不仅仅是一种应该特别强调的是,面向对象技术不仅仅是一种程序设计方法,更重要的是一种对真实世界的抽程序设计方法,更重要的是一种对真实世界的抽象思维方式象思维方式 软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3
3、 3 o面向对象方法概述面向对象方法概述背景背景n传统开发方法由一整套过程、方法和工具作传统开发方法由一整套过程、方法和工具作为支撑,在一定时期内对解决软件危机起了为支撑,在一定时期内对解决软件危机起了很大作用,曾指导开发出很多成功的系统,很大作用,曾指导开发出很多成功的系统,但其缺点也日益显现但其缺点也日益显现n传统软件开发方法不能完全消除软件危机,传统软件开发方法不能完全消除软件危机,并且生产率的提高不能满足需要并且生产率的提高不能满足需要从从50年代到年代到80年代,美国的软件生产率年代,美国的软件生产率翻了两翻。但社会对软件的需求每年以翻了两翻。但社会对软件的需求每年以两位数字的百分比
4、在增长。软件的开发两位数字的百分比在增长。软件的开发已成为影响计算机应用的瓶颈已成为影响计算机应用的瓶颈软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组4 4 o面向对象方法概述面向对象方法概述背景背景(1)n传统开发方法传统开发方法存在的问题存在的问题o软件维护软件维护n系统是围绕着如何实现一定的行为来进行的,当系统行系统是围绕着如何实现一定的行为来进行的,当系统行为易变,需要常常修改时,修改极为困难为易变,需要常常修改时,修改极为困难n软件结构严重依赖于系统功能,基于功能分解的系统结软件结构严重
5、依赖于系统功能,基于功能分解的系统结构将很难进行修改和扩充构将很难进行修改和扩充n用户功能需求的改变将导致软件结构的相应改变,给软用户功能需求的改变将导致软件结构的相应改变,给软件的开发及维护造成很大困难件的开发及维护造成很大困难n数据和对数据的处理操作是分离的,对数据的修改将影数据和对数据的处理操作是分离的,对数据的修改将影响某个功能的实现响某个功能的实现传统开发方法的软件维护比软件开发效率低几十倍。传统开发方法的软件维护比软件开发效率低几十倍。80年代,美国一年花费的软件维护费用高达年代,美国一年花费的软件维护费用高达300多亿美元。多亿美元。90年代,软件维护费用占系统研制、开发总费用的
6、年代,软件维护费用占系统研制、开发总费用的70%。软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组5 5 o面向对象方法概述面向对象方法概述背景背景(2)n传统开发方法传统开发方法存在的问题存在的问题o自顶向下功能分解的分析方法极大地限制了软件自顶向下功能分解的分析方法极大地限制了软件的可重用性的可重用性n结构化分析、设计技术的本质是功能分析结构化分析、设计技术的本质是功能分析n从代表目标系统整体功能的单个处理着手,自顶向下不从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理
7、,层层分解下去,直至仅断把复杂的处理分解为子处理,层层分解下去,直至仅剩下若干个容易实现的子处理为止剩下若干个容易实现的子处理为止传统方法通过建立标准函数库和子程序库实现软件的可传统方法通过建立标准函数库和子程序库实现软件的可重用性,然而标准函数库等只是对建立在数学模型基础重用性,然而标准函数库等只是对建立在数学模型基础上的应用问题有可重用的功效,而对其它实际应用问题上的应用问题有可重用的功效,而对其它实际应用问题则不能很好地进行软件重用则不能很好地进行软件重用软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术
8、基础课程组6 6 o面向对象方法概述面向对象方法概述背景背景(3)n传统开发方法传统开发方法存在的问题存在的问题o以输入以输入-处理处理-输出为核心的分析和设计方法不符合输出为核心的分析和设计方法不符合人类的思维方式人类的思维方式n软件不能真正了解用户的需要,以致开发出的软件系统与软件不能真正了解用户的需要,以致开发出的软件系统与用户预期的系统不一致,不能满足用户的需要用户预期的系统不一致,不能满足用户的需要n功能与数据分离的软件设计结构与人类的现实世界环境很功能与数据分离的软件设计结构与人类的现实世界环境很不一样,和人的自然思维也就很不一致,因此对现实世界不一样,和人的自然思维也就很不一致,
9、因此对现实世界的认识与编程之间存在着一道很深的理解上的鸿沟的认识与编程之间存在着一道很深的理解上的鸿沟Standish94报告中指出:报告中指出:31%软件项目没有完全软件项目没有完全完成,完成,53%的项目花费最先预算的的项目花费最先预算的200%之多,之多,并且估计美国的公司和政府机构在并且估计美国的公司和政府机构在1995年为了年为了取消软件项目的生产而花费了取消软件项目的生产而花费了810亿美元亿美元软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组7 7 o面向对象方法概述面向对象方法概述背
10、景背景(4)n传统开发方法传统开发方法存在的问题存在的问题o系统中模块之间控制作用的重要影响系统中模块之间控制作用的重要影响n在系统中,实际控制发生的根源来自分散的各个模块之中在系统中,实际控制发生的根源来自分散的各个模块之中时,由于在时,由于在“好的模块结构好的模块结构”中的模块间的控制作用只能中的模块间的控制作用只能通过上下之间的调用关系来进行,造成信息传递路径过长,通过上下之间的调用关系来进行,造成信息传递路径过长,效率低,易受干扰,甚至出错效率低,易受干扰,甚至出错软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计
11、算机软件技术基础课程组8 8 o面向对象方法概述面向对象方法概述背景背景(5)n为为了了解解决决传传统统开开发发方方法法的的问问题题,在在软软件件开开发发实践中人们提出了许多针对具体开发的方法实践中人们提出了许多针对具体开发的方法o快速原型法快速原型法o面向对象方法面向对象方法o.n诞诞生生了了面面向向对对象象程程序序设设计计语语言言,并并基基于于面面向向对象思想诞生了面向对象软件开发方法对象思想诞生了面向对象软件开发方法软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组9 9 o面向对象方法概述面向
12、对象方法概述发展历程发展历程n面向对象的思想最初出现于挪威奥斯陆大学面向对象的思想最初出现于挪威奥斯陆大学和挪威计算中心于和挪威计算中心于60年代末共同研制推出的年代末共同研制推出的S1mula67语言中,该语言首先引入了类的语言中,该语言首先引入了类的概念和继承机制概念和继承机制n80年代年代,美国加利福尼亚,美国加利福尼亚Xerox研究中心推研究中心推出的出的Smalltalk-76和和Smalltalk-80语言,它语言,它具备了面向对象语言的继承和封装的主要特具备了面向对象语言的继承和封装的主要特征,比较完善地实现了面向对象的程序设计,征,比较完善地实现了面向对象的程序设计,推动了面向
13、对象技术的飞速发展推动了面向对象技术的飞速发展 软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1010 o面向对象方法概述面向对象方法概述发展历程发展历程(1)n从从80年代中期到年代中期到90年代,面向对象语言十分年代,面向对象语言十分热门,涌现出大批比较实用的面向对象编程热门,涌现出大批比较实用的面向对象编程语言语言o如如C+、Object Pascal等等n随着面向对象编程语言走向实用,开始了对随着面向对象编程语言走向实用,开始了对面向对象分析和面向对象设计的研究面向对象分析和面向对象设计的
14、研究o面向对象的分析和设计技术逐渐走向实用,最终面向对象的分析和设计技术逐渐走向实用,最终形成了由分析、设计到编程、测试与维护一整套形成了由分析、设计到编程、测试与维护一整套的软件工程体系组成的面向对象软件开发方法的软件工程体系组成的面向对象软件开发方法 软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1111 o面向对象方法概述面向对象方法概述发展历程发展历程(2)n在面向对象软件开发方法发展中,出现了很在面向对象软件开发方法发展中,出现了很多方法,典型的以发明者命名的方法有:多方法,典型的以发明
15、者命名的方法有:Booch法、法、Rambaugh法、法、Jacobson法、法、Coad和和Yourdon法、法、Wirfs-Broch法等法等n1995年,年,Grady Booch、Ivar Jacobson和和James Rumbaugh一起合作,将各自的方一起合作,将各自的方法组合成一种统一的方法,称为法组合成一种统一的方法,称为“统一建模统一建模语言语言”,即,即(Unified Modeling Language,UML)o1997年提出年提出UML1.0版本版本oUML现已在整个行业使用现已在整个行业使用软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网
16、络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1212 oOO技术的基本原理技术的基本原理n按照问题域的基本事物实现自然分割,按人按照问题域的基本事物实现自然分割,按人们通常的思维方式建立问题域的模型,设计们通常的思维方式建立问题域的模型,设计尽可能直接自然表现问题求解的软件系统。尽可能直接自然表现问题求解的软件系统。n OO技术引入了对象技术引入了对象(object)概念来表现事概念来表现事物;用消息物;用消息(message)传递建立事物间的联传递建立事物间的联系;用类系;用类(class)和继承和继承(inheritance)作为作为适应人们一般思维方式的描述模型
17、;用方法适应人们一般思维方式的描述模型;用方法(method)表示作用在对象上的各种操作。表示作用在对象上的各种操作。软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1313 oOO技术的基本原理技术的基本原理(1)(1)n传传统统的的程程序序设设计计方方法法,针针对对的的是是数数学学模模型型,出发点是出发点是“怎样做(怎样做(HowHow)?)?”o用计算机求解一个实际问题应该怎样做?用计算机求解一个实际问题应该怎样做?o从从实实际际问问题题到到求求解解模模型型(数数学学模模型型)的的抽抽象象都都
18、是是围绕怎样做?去进行的围绕怎样做?去进行的n面面向向对对象象(OOOO)方方法法的的出出发发点点是是“是是什什么么(WhatWhat)?”?”n要求解的实际问题,到底是什么?要求解的实际问题,到底是什么?n用对象表现现实世界中的某个具体的事物用对象表现现实世界中的某个具体的事物软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1414 oOO技术的基本原理技术的基本原理(2)(2)n面向对象(面向对象(OOOO)方法的出发点是)方法的出发点是“(WhatWhat)?”?”由物质组成现实世界由物质组成
19、现实世界物体多样化的表现形式构成问题域(物体多样化的表现形式构成问题域(DomainDomain)人认识事物的规律:首先认识问题域是什么?人认识事物的规律:首先认识问题域是什么?当物体反映到头脑中后,变成意识形成抽象的概念,既当物体反映到头脑中后,变成意识形成抽象的概念,既逻辑世界逻辑世界o由对象组成逻辑世界由对象组成逻辑世界n对象在具体的逻辑世界中担当一定的角色,并完成一定对象在具体的逻辑世界中担当一定的角色,并完成一定的功能(动作)的功能(动作)n对象有自己的属性和动作。对象表现现实世界中的某个对象有自己的属性和动作。对象表现现实世界中的某个具体的事物。具体的事物。软件工程软件工程面向对象
20、软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1515 oOO技术的基本原理技术的基本原理(3)(3)n基本思想基本思想o客观世界是由对象组成的客观世界是由对象组成的n任何复杂的软件都是由简单的对象组合而成的任何复杂的软件都是由简单的对象组合而成的n面向对象的软件系统同样是由对象组成的面向对象的软件系统同样是由对象组成的o具有相同数据和相同操作的对象可以归并为一个类具有相同数据和相同操作的对象可以归并为一个类n类具有封装性,其数据和操作等对外界是不可见的,外界类具有封装性,其数据和操作等对外界是不可见的,外界只能通过消息
21、请求进行某些操作,提供所需要的服务只能通过消息请求进行某些操作,提供所需要的服务o所有对象都可以划分为不同的对象类所有对象都可以划分为不同的对象类n每个对象类都有自己特定的数据和方法每个对象类都有自己特定的数据和方法n对象是对象类的一个实例对象是对象类的一个实例软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1616 oOO技术的基本原理技术的基本原理(4)(4)n基本思想基本思想o对象类具有层次结构对象类具有层次结构n上层的类称为上层的类称为“父类父类”或或“基类基类”,下层的类称为,下层的类称为
22、“子类子类”或或“派生类派生类”n父父类可以派生出子类,子类继承父类的全部特性(数据类可以派生出子类,子类继承父类的全部特性(数据和操作),又可以有自己的新特性和操作),又可以有自己的新特性n子类与父类形成类的层次结构子类与父类形成类的层次结构o对象之间通过消息机制传递相互联系对象之间通过消息机制传递相互联系软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1717 oOO技术的基本原理技术的基本原理(5)(5)n思想的精髓是按照对象(事物、概念、实体)思想的精髓是按照对象(事物、概念、实体)的观点考
23、虑问题域和逻辑解决方案的观点考虑问题域和逻辑解决方案o“面向对象面向对象”技术追求的是软件系统对现实世界技术追求的是软件系统对现实世界的直接模拟的直接模拟o尽量实现将现实世界中的事物直接映射到软件系尽量实现将现实世界中的事物直接映射到软件系统的解空间统的解空间软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1818 oOO技术的基本原理技术的基本原理(6)(6)n软件工程学家软件工程学家Codd和和Yourdon认为认为o面向对象的程序设计技术是以对象为基础,以消面向对象的程序设计技术是以对象为基础
24、,以消息驱动对象实现操作的一种全新的程序设计方法息驱动对象实现操作的一种全新的程序设计方法o如果一个软件系统使用这些概念来建立模型并予如果一个软件系统使用这些概念来建立模型并予以实现,那么它采用的就是面向对象软件开发方以实现,那么它采用的就是面向对象软件开发方法法面向对象对象类继承通信面向对象对象类继承通信软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组1919 o面向对象方法组成面向对象方法组成(1)(1)n与结构化软件开发方法类似,面向对象软件与结构化软件开发方法类似,面向对象软件开发方法也由三
25、部分组成开发方法也由三部分组成o面向对象分析方法(面向对象分析方法(OOA)n重点在于发现并描述问题域中的对象(或概念)重点在于发现并描述问题域中的对象(或概念)n例如:图书馆信息系统中的书(例如:图书馆信息系统中的书(book)o面向对象设计方法(面向对象设计方法(OOD)n重点在于定义能最终面向对象程序设计语言的实现的逻重点在于定义能最终面向对象程序设计语言的实现的逻辑软件对象辑软件对象n软件对象具有方法和属性软件对象具有方法和属性n例如:对象书(例如:对象书(book)具有一个题目属性()具有一个题目属性(title)和一)和一个打印方法(个打印方法(print)o面向对象程序设计方法(
26、面向对象程序设计方法(OOP)软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组2020 o面向对象方法组成面向对象方法组成(2)(2)n与结构化软件开发方法类似,面向对象软件与结构化软件开发方法类似,面向对象软件开发方法也由三部分组成开发方法也由三部分组成o面向对象程序设计方法(面向对象程序设计方法(OOP)n实现所设计的构件实现所设计的构件n例如采用例如采用c+、Java语言编写一个语言编写一个book类类软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技
27、术基础课程组东北大学网络学院计算机软件技术基础课程组2121 o面向对象方法组成面向对象方法组成(3)(3)n面向对象思想强调的是对象的表示面向对象思想强调的是对象的表示领域概念领域概念用面向对象的用面向对象的程序设计语言表示程序设计语言表示分析过程中分析过程中概念的表示概念的表示booktitlePublic class book public void print();.private String title;软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组2222 o面向对象方法组成面向对象
28、方法组成(4)(4)n面向对象程序设计方法(面向对象程序设计方法(OOP)被一些被一些人称为人称为“面向对象变成之父面向对象变成之父”的的Alan Kay,确定了以下关于确定了以下关于OOPKay1993的基本特征的基本特征o任何事物是一个对象任何事物是一个对象o通过互相联系的对象请求其他对象执行一定的行通过互相联系的对象请求其他对象执行一定的行为来完成计算为来完成计算n对象通过发送和接收消息进行通信对象通过发送和接收消息进行通信n消息是指对特定行为的请求,并且伴随着完成这项任务消息是指对特定行为的请求,并且伴随着完成这项任务所需要的参数所需要的参数o每个对象都有自己的存储空间,用来储存其他对
29、每个对象都有自己的存储空间,用来储存其他对象象软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组2323 o面向对象方法组成面向对象方法组成(5)(5)n面向对象程序设计方法(面向对象程序设计方法(OOP)被一些被一些人称为人称为“面向对象变成之父面向对象变成之父”的的Alan Kay,确定了以下关于确定了以下关于OOPKay1993的基本特征的基本特征o每个对象都是一个类的实例,类用来代表一组相每个对象都是一个类的实例,类用来代表一组相似的对象似的对象n例如:整数、链表等例如:整数、链表等o类可以看
30、作是存储仓库,用来保存与一个对象相类可以看作是存储仓库,用来保存与一个对象相关的行为关的行为n同一个类的多个实例对象能够执行相同的行为同一个类的多个实例对象能够执行相同的行为o类可以组织成一个单根树状结构,成为继成层次类可以组织成一个单根树状结构,成为继成层次n在该结构中,一个类实例的存储空间和行为自动地被其在该结构中,一个类实例的存储空间和行为自动地被其派生类使用派生类使用软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组2424 o面向对象与面向功能的分析与设计面向对象与面向功能的分析与设计n软件
31、项目是复杂的软件项目是复杂的o分而治之是处理复杂问题的主要策略分而治之是处理复杂问题的主要策略n将问题分解为易于管理和控制的单元将问题分解为易于管理和控制的单元n结构化的分析与设计(前,流行)结构化的分析与设计(前,流行)o对问题的分解尺度主要依据功能和过程对问题的分解尺度主要依据功能和过程o处理问题的结果是将一个复杂的过程分解为一系处理问题的结果是将一个复杂的过程分解为一系列具有层次关系的字过程列具有层次关系的字过程n面向对象的分析与设计(现,流行)面向对象的分析与设计(现,流行)o以对象为尺度分解问题空间以对象为尺度分解问题空间软件工程软件工程面向对象软件开发方法面向对象软件开发方法200
32、7东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组2525 o面向对象与面向功能的分析与设计面向对象与面向功能的分析与设计(1)(1)n以图书馆信息系统为例以图书馆信息系统为例图书馆信息系统图书馆信息系统面向对象的分析与设计面向对象的分析与设计按对象或概念分解按对象或概念分解CatalogLibrarianBookLibrary结构化的分析与设计结构化的分析与设计按功能或过程分解按功能或过程分解SystemRecordLoansAdd ResourcesReportFines软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软
33、件技术基础课程组东北大学网络学院计算机软件技术基础课程组2626 o面向对象方法优点面向对象方法优点n与人类的思维习惯相一致与人类的思维习惯相一致n所开发出的系统部件可重用性好所开发出的系统部件可重用性好n系统可维护性强系统可维护性强n生产率得到了大幅提高生产率得到了大幅提高人的认识过程是从一般到特殊人的认识过程是从一般到特殊的渐进思维过程,是从是什么的渐进思维过程,是从是什么开始,认识事物及其本质规律开始,认识事物及其本质规律,主观随意性受到限制。而传,主观随意性受到限制。而传统方法是从统方法是从”怎样做?怎样做?“开始,开始,到做什么?反认识规律而动,到做什么?反认识规律而动,主观随意性太
34、多。主观随意性太多。OO方法采用封装机制和信息隐藏方法采用封装机制和信息隐藏机制,使其内部实现与外界完全机制,使其内部实现与外界完全隔离,具有较强的独立性(对象隔离,具有较强的独立性(对象对外界而言,好象一个对外界而言,好象一个”黑匣子黑匣子“)。较好地解决了。较好地解决了“软件复杂性控制软件复杂性控制”问题。问题。OO方法中类的继承性是一方法中类的继承性是一种代码重用的有效途径。开发者种代码重用的有效途径。开发者在设计软件的过程中,将一些精在设计软件的过程中,将一些精心设计、测试过的代码不断加入心设计、测试过的代码不断加入到已有的类库中。而类库是可供到已有的类库中。而类库是可供共享的代码库。
35、因此用共享的代码库。因此用OOP开发开发的软件具有较好的可重用性。的软件具有较好的可重用性。局部修改,不影响大局,错误不会传播;局部修改,不影响大局,错误不会传播;封装性和信息隐藏机制易于阅读、理解;封装性和信息隐藏机制易于阅读、理解;符合人类习惯的思维方法,对原系统所符合人类习惯的思维方法,对原系统所做的修改,往往通过在原有类的基础上做的修改,往往通过在原有类的基础上派生一些新类即可实现,易于贯通。派派生一些新类即可实现,易于贯通。派生类继承原有类的特性,只需测试新增生类继承原有类的特性,只需测试新增加的特性加的特性软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络
36、学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组2727 o实体和对象实体和对象n实体实体o客观存在的事物客观存在的事物o客观世界中的问题都是由实体及其相互之间的关客观世界中的问题都是由实体及其相互之间的关系构成的系构成的o例:例:软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组2828 o实体和对象实体和对象n对象对象(Object)o一般说来,在系统分析和系统构造中,对象是对客观一般说来,在系统分析和系统构造中,对象是对客观世界事物的一种抽象,是由数据世界事物的一种抽象,是由
37、数据(属性属性)及在其上的操及在其上的操作作(行为行为)所组成的封装体所组成的封装体n用来描述客观事物的一个实体,它是实体的抽象,是构用来描述客观事物的一个实体,它是实体的抽象,是构成系统的一个基本单位成系统的一个基本单位n由一组属性和对这组属性进行处理的一组服务(也称操由一组属性和对这组属性进行处理的一组服务(也称操作)组成作)组成n对象可以是具体实体也可以是抽象实体对象可以是具体实体也可以是抽象实体具体实体:学生、书等具体实体:学生、书等抽象实体:规则、算法、事件等抽象实体:规则、算法、事件等n封装了对象的数据属性和操作服务,将其结合成一个独封装了对象的数据属性和操作服务,将其结合成一个独
38、立的系统单位,并尽可能隐藏对象的内部细节立的系统单位,并尽可能隐藏对象的内部细节软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组2929 o实体和对象实体和对象对象对象(1)n公式表示公式表示o属性表示对象的结构特征,描述了对象的状态属性表示对象的结构特征,描述了对象的状态n用来描述对象静态特征的一个数据项用来描述对象静态特征的一个数据项n属性一般只能通过执行对象的操作来改变属性一般只能通过执行对象的操作来改变o操作可以改变对象的状态操作可以改变对象的状态n用来描述对象动态特征(行为)的一个处理序列
39、,即处用来描述对象动态特征(行为)的一个处理序列,即处理属性数据的算法理属性数据的算法 n通过操作可以获得或改变对象的属性通过操作可以获得或改变对象的属性对象对象=属性属性+操作操作软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3030 o实体和对象实体和对象对象对象(2)n通过传递消息实现对象的操作通过传递消息实现对象的操作o每当需要改变对象的状态时,只能由其它对象向每当需要改变对象的状态时,只能由其它对象向该对象发出消息该对象发出消息o对象响应消息时,按照消息模式找出与之匹配的对象响应消息时,
40、按照消息模式找出与之匹配的方法,并执行该操作方法,并执行该操作软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3131 o实体和对象实体和对象对象对象(3)n三个特征三个特征o标识标识n用来唯一区分一个对象用来唯一区分一个对象o状态状态n使用对象的属性描述使用对象的属性描述o行为行为n由对象的操作体现,用于改变对象的状态由对象的操作体现,用于改变对象的状态行为分为行为分为自身所承受的操作自身所承受的操作以以及及施加于其它对象的操作施加于其它对象的操作两类两类软件工程软件工程面向对象软件开发方法面向对
41、象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3232 o实体和对象实体和对象对象对象(4)n主要特点主要特点o自治性自治性n对于给定的输入,经过状态转换,对象能产生输出对于给定的输入,经过状态转换,对象能产生输出n所设操作都与数据要做的处理有关所设操作都与数据要做的处理有关o封闭性封闭性n对象的封闭性是指对象具有信息隐蔽的能力对象的封闭性是指对象具有信息隐蔽的能力n对象的私有数据完全被封装在内部,对外是不可见的对象的私有数据完全被封装在内部,对外是不可见的n要要使使用用对对象象的的私私有有数数据据,只只需需知知道道数数据据的的取取值值范
42、范围围和和可可以以对对该该数数据据施施加加的的操操作作,根根本本无无须须知知道道数数据据的的具具体体结结构构以及实现操作的算法以及实现操作的算法软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3333 o实体和对象实体和对象对象对象(5)n主要特点主要特点o通信性通信性n对象能够接收其它对象发来的消息,也能向其它对象发对象能够接收其它对象发来的消息,也能向其它对象发送消息送消息n通信性反映了不同对象间的联系通信性反映了不同对象间的联系n上述特点分别刻画了对象不同方面的性质上述特点分别刻画了对象不同方
43、面的性质o自治性反映了对象独立计算的能力自治性反映了对象独立计算的能力o封封闭闭性性和和通通信信性性说说明明对对象象是是一一个个既既封封闭闭又又开开放放的的相对独立体相对独立体软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3434 o实体和对象实体和对象对象对象(6)n其它特点其它特点o对对象象的的并并行行性性反反映映出出不不同同对对象象各各自自独独立立地地处处理理自自身身的的数数据据,彼彼此此通通过过发发消消息息传传递递信信息息完完成成通通信信;对对象象主主动动性性表表现现对对象象本本身身是是进
44、进行行处处理理的的主主体体,不不是是被被动动地地等等待待处处理理(与与传传统统的的数数据据有有本本质质不不同同);而而对对象象的的内内聚聚性性强强,对对象象间间的的耦耦合合性性弱弱,则则体体现现了模块独立性好了模块独立性好软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3535 o服务和消息服务和消息n面向对象技术的封装机制使对象是相互独立面向对象技术的封装机制使对象是相互独立独立的,并且彼此之间信息是隐藏的独立的,并且彼此之间信息是隐藏的n在面向对象的技术中,消息是对象之间相互在面向对象的技术中,
45、消息是对象之间相互请求或相互协作的惟一途径请求或相互协作的惟一途径o对象间的联系只能通过传递消息来进行对象间的联系只能通过传递消息来进行o对象也只能在收到消息时才被激活对象也只能在收到消息时才被激活n消息通信机制是对象之间联系的唯一合法途消息通信机制是对象之间联系的唯一合法途径,使对象间的行为能够相互配合,从而共径,使对象间的行为能够相互配合,从而共同完成一定的功能,形成一个统一的系统同完成一定的功能,形成一个统一的系统软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3636 o服务和消息服务和消息
46、(1)n服务服务(method,即操作、方法,即操作、方法)的定义的定义o为了完成某一任务,一个对象所提供的并体现其为了完成某一任务,一个对象所提供的并体现其责任的操作称为服务责任的操作称为服务o属于同一类的所有对象共享相同的服务属于同一类的所有对象共享相同的服务软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3737 o服务和消息服务和消息(2)n消息的定义消息的定义o消息就是用来请求对象执行某个处理或回答某些消息就是用来请求对象执行某个处理或回答某些信息的要求,是连接对象的纽带(信息的要求,是连
47、接对象的纽带(对提供服务的对提供服务的对象发出的服务请求对象发出的服务请求)n或者说,一个对象为实现其责任而与其它对象的通信称或者说,一个对象为实现其责任而与其它对象的通信称为消息为消息o消息通常由三个部分信息组成消息通常由三个部分信息组成n接收消息的对象:接收消息的对象:对象标识对象标识n消息选择符(也称为消息名):消息选择符(也称为消息名):服务标识服务标识n零个或多个变元:零个或多个变元:输入信息和应答信息输入信息和应答信息软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3838 o服务和消息
48、服务和消息(3)通常,一个对象会向另一个对通常,一个对象会向另一个对象发出消息请求某项服务,接象发出消息请求某项服务,接收消息的对象响应该消息,激收消息的对象响应该消息,激发所要求的服务操作,并将操发所要求的服务操作,并将操作结果返回给请求服务的对象作结果返回给请求服务的对象发送消息的对象称为发送者发送消息的对象称为发送者接收消息的对象称为接收者接收消息的对象称为接收者软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组3939 o服务和消息服务和消息(4)n消息的性质消息的性质o同一对象可接收不同形式
49、的多个消息同一对象可接收不同形式的多个消息n产生不同的响应,达到提供不同服务的目的产生不同的响应,达到提供不同服务的目的o相同形式的消息可以送给不同的对象相同形式的消息可以送给不同的对象n所做出的响应可以是截然不同的,即不同的对象可针对所做出的响应可以是截然不同的,即不同的对象可针对同一消息提供不同的服务同一消息提供不同的服务o消息的发送可以不考虑具体的接收者消息的发送可以不考虑具体的接收者n对象可以响应消息,也可以对消息不予理会对象可以响应消息,也可以对消息不予理会n对消息的响应并不是必须的对消息的响应并不是必须的软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学
50、院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组4040 o服务和消息服务和消息(5)n消息的类别消息的类别o公有消息公有消息n对象所接收的消息是由外部对象直接发送给它的消息对象所接收的消息是由外部对象直接发送给它的消息o私有消息私有消息n对象所接收的消息是由对象发送给自身的消息对象所接收的消息是由对象发送给自身的消息软件工程软件工程面向对象软件开发方法面向对象软件开发方法2007东北大学网络学院计算机软件技术基础课程组东北大学网络学院计算机软件技术基础课程组4141 o服务和消息服务和消息(6)n在面向对象编程中,服务的启动是通过将在面向对象编程中,服务的启动是通过将“消息