资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,面向对象方法的产生与发展,面向对象技术概念,OO,方法的开发过程,面向对象分析(,OOA,),面向对象设计(,OOD,),第九部分 面向对象开发方法,1,面向对象方法的产生与发展,结构化方法的缺陷,(1)问题空间与解空间不一致,(2)系统分析到系统设计的过渡困难,(3)过程模型和数据模型分别建立,,忽视了行为特征,2,面向对象思想的由来,传统的软件开发方法 没有直接而全面地反映问题的本质,直接面对问题域中客观存在的事物来进行软件开发 面向对象,希望,3,面向对象的语言,出发点:,更直接地描述客观世界中存在的事物,(,对象,),以及它们之间的关系。,特点:,是高级语言。,将客观事物看作具有属性和行为的对象。,通过抽象找出同一类对象的共同属性和行为,形成类。,通过类的继承与多态实现代码重用,4,面向对象的语言,优点:,使程序能够比较直接地反映问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。,5,举例:检查单词拼写程序,检查单词拼写程序将对用户提供的单词进行拼写检查,如果在字典中找到,输出“拼写正确”的字样,否则输出“拼写不正确”的字样。,8,面向对象的程序设计方法,Dictionary,Dictionary,Set,Word,面向对象程序,=,对象,+,消息,字典,单词,集合,9,面向对象基本概念,基本概念,对象(,object,),类,(class),消息,(message),接口,(interface),继承性,(inheritance),封装性,(encapsulation),多态性,(polymorphism),10,基本术语,抽象,指从事物中,舍弃个别的、非本质的属性,抽取出共同的、本质的属性的过程,它是形成概念的必要手段。,抽象包括过程抽象和数据抽象。,11,封装,指将现实世界中某个客体的属性与行为聚集在一个逻辑单元内部的机制。利用这种机制可以将属性信息隐藏起来,外界只能够通过提供的特定行为接口改变或获取其属性状态。,12,对象,对象是用来描述现实世界中客体的部件,是面向对象软件系统在运行时刻的基本单位。为了区分属于同一个类的不同对象,每个对象都有一个惟一的标识。,13,属性,行为,1,行为,2,行为,3,行为,4,行为,5,行为,6,行为,8,行为,7,在面向对象的程序设计中,封装是指将对象的属性和行为分别用,数据结构,和,方法,描述,并将它们绑定在一起形成一个可供访问的基本逻辑单元。,14,类,类是一组具有相同属性特征的对象的抽象描述,是面向对象程序设计的又一个核心概念。,类是对象抽象的结果。有了类,对象就是类的具体化,是类的实例。类可以有子类,同样也可以有父类,从而构成类的层次结构。,类之间主要存在三种关系。它们是:关联、聚合和泛化。,15,消息,消息是一个对象要求另一个对象实施某项操作的请求。在一条消息中,需要包含消息的接收者和要求接收者执行哪项操作的请求,而并没有说明应该怎样做,具体的操作过程由接收者自行决定。,16,消息传递是对象之间相互联系的惟一途径。发送者发送消息,接收者通过调用相应的方法响应消息,这个过程被不断地重复,使得应用程序在人的有效控制下运转起来,最终得到相应的结果。可以说,消息是驱动面向对象程序运转的源泉。,17,继承,继承是类之间的一种常见关系。这种关系为共享数据和操作提供了一种良好的机制。通过继承,一个类的定义可以基于另外一个已经存在的类。,继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。,父类,子类,18,多态性,不同的类对象收到同一个消息可以产生完全不同的响应效果,这种现象叫做多态。利用多态机制,用户可以发送一个通用的消息,而实现的细节由接收对象自行决定,这样,同一个消息可能会导致调用不同的方法。,19,面向对象的,4,个特性,抽象性,封装性,继承性,多态性,20,面向对象程序设计语言,所谓面向对象程序设计语言,OOPL,(,Object-Oriented Programming Language,),是指提供描述面向对象方法所涉及到的类、对象、继承和多态等基本概念的程序设计语言。它应该具有下列特征:识别性、分类性、继承性和多态性。,21,几种有代表性的,OOPL,Simula67,,,支持单继承、一定含义上的多态和部分动态联编。,Smalltalk,,,支持单继承、多态和动态联编。,Eiffel,,,支持多继承、多态和动态联编。,C+,,,支持多继承、多态和部分动态联编。,Java,,,提供了类机制,以及有效的接口模型。支持单继承、多态和动态联编。,22,Java,语言的基本特点,简捷性,面向对象,分布式,健壮性,结构中立,安全性,可移植性,解释执行,高性能,23,面向对象的软件工程,面向对象的分析,简称:,OOA,面向对象的设计,简称:,OOD,面向对象程序设计,简称:,OOP,面向对象的测试,简称:,OOT,面向对象数据库系统,简称:,OODBMS,面向对象计算机软件辅助工程,,简称:,OOCASE,24,面向对象软件工程,面向对象,“面向对象”是一种认识客观世界的世界观,这种世界观将客观世界看成是有许多不同种类的对象构成的,每个对象有自己的内部状态和运动规律,不同对象之间的相互联系、相互作用就构成了完整的客观世界。,25,面向对象软件工程,面向对象,“面向对象”是从结构组织的角度去模拟客观世界的一种方法,这种方法的基本着眼点是构成客观世界的那些成分,-,对象。,用“面向对象”的观点去认识客观世界,用“面向对象”的方法去模拟客观世界,这就构成了“面向对象”的完整含义。,26,面向对象软件工程,面向对象建模,面向对象思想比较自然地模拟了人类认识客观世界的方式,面向对象的分析和设计应该从建模开始。构造模型通常出于以下几个目地:,在着手解决一个复杂问题之前,对解决方案进行检测;,用于同客户或其他相关人员进行交流;,加强视觉效果;,对复杂问题进行简化。,27,面向对象软件工程,面向对象建模,模型是对事物的一种抽象,人们常常在正式建造实物之前,首先建立一个简化的模型,以便更透彻地了解它的本质,抓住问题的要害;,在模型中,人们总是剔除那些与问题无关的、非本质的东西,从而使模型与真实的实体相比更加简单、易于把握;,28,面向对象软件工程,面向对象建模,在建造一个复杂系统时,开发者必须从多种不同的角度来抽象系统,使用准确的符号来构造模型,然后检查这些模型是否符合系统的需求,并逐步添加细节,从而将这些模型转化成实现方案。,建模语言是面向对象建模中的一个非常关键的因素。,29,标准建模语言,UML,UML,的设计目标:,运用面向对象概念来构造系统模型,建立起从概念模型直至可执行体之间明显的对应关系,着眼于那些有重大影响的问题,创建一种对人和机器都适用的建模语言,30,标准建模语言,UML,UML,概要,UML,由,OMG,与1997年11月批准为标准建模语言,(Booch,Jacobson,Runbaugh),。,UML,建立在当今国际上最有代表性的三种面向对象方法(,Booch(Grady Booch:The Booch method targets object-oriented analysis and design with emphasis on detailed design),方法,,OMT(Object Modeling Technique),方法,,OOSE,方法的基础之上。,UML,是一种建模语言而不是一种方法,,UML,本身是独立于过程的。,31,标准建模语言,UML,UML,为人们提供了从不同的角度去观察和展示系统的各种特征的一种标准表达方式。在,UML,中,从任何一个角度对系统所作的抽象都可能需要用几种模型图来描述,而这些来自不同角度的模型图最终组成了系统的完整模型。,32,标准建模语言,UML,一般而言,我们可以从以下几种常用的视角来描述一个系统:,系统的使用实例:从系统外部的操作者的角度描述系统的功能。,系统的逻辑结构:描述系统内部的静态结构和动态行为,即从内部描述如何设计实现系统功能。,系统的构成:描述系统由哪些程序构件所组成。,系统的并发性:描述系统的并发性,强调并发系统中存在的各种通信和同步问题。,系统的配置:描述系统的软件和各种硬件设备之间的配置关系。,33,标准建模语言,UML,UML,模型图(,5,类,,10,种):,用例图,静态图(类图,对象图,包图),行为图(状态图,活动图),交互图(顺序图,合作图),实现图(构件图,配置图),34,35,标准建模语言,UML,(用例图),36,标准建模语言,UML,(用例图),37,标准建模语言,UML,(类图),单一继承,Car,Powered Vehicle,Truck,Truck,Car,Powered Vehicle,38,标准建模语言,UML,(类图),多重继承,Aircraft,Powered Vehicle,Car,Airplane,Truck,39,标准建模语言,UML,(对象图),作者,计算机,名字:,String,内存:,Ineger,名字:,String,年龄:,Integer,0.1,Uses,1.*,小王:作者,小王的工作,PC,:,计算机,名字,=“,王小影”,年龄,=32,小王的工作,PC,:,计算机,名字,=“Compaq X”,内存,=32,名字,=“Dell486”,内存,=64,类图,对象图,40,标准建模语言,UML,(包图),订单获取,界面,订单获取,应用,AWT,邮件发送,清单界面,邮件发送,清单应用,订单,顾客,41,标准建模语言,UML,(状态图),下降状态,在第一层,上升状态,向第一层下降,空闲状态,上升,到达,到达,上升,超时,下降,到达第一层,42,标准建模语言,UML,(状态图),Custom order Status,tentative,canceled,confirmed,entry/self.cancel,custSubmitsOrder,custConfirmsOrder,custCancelsOrder,custCancelsOrder,After(30days),Cust.notifyCanceled(self),self.fulfillmentStatus not=shipped,43,标准建模语言,UML,(顺序图),44,标准建模语言,UML,(协作图),45,标准建模语言,UML,(活动图),46,标准建模语言,UML,(构件图),Graphic.dll,:,图形库,Comhnd.cpp,:,命令处理器,Main.cpp,:,主类,Whnd.obj,:,窗口处理器,Comhnd.obj,:,命令处理器,Main.obj,:,主类,client.exe,:,客户程序,Whnd.cpp,:,窗口处理器,47,标准建模语言,UML,(配置图),客户,A,:,个人电脑,PC,客户,B,:,个人电脑,PC,数据库服务器:,VAX,服务器:,02,TCP/IP,协议,TCP/IP,协议,DecNet,协议,48,标准建模语言,UML,(配置图),49,OO,方法的开发过程,OO,方法改进了在生存期各个阶段间的界面,因为生存期各个阶段开发出来的“部件”都是类,在面向对象生存期的各个阶段对各个类的信息进行细化,类成为分析、设计和实现的基本单元。,50,面向对象分析与模型化,面向对象分析(,OOA),问题定义阶段,得到对问题论域的清晰、精确的定义。,论域分析:建立概括的系统实现环境,应用分析:根据特定应用的需求进行论域分析,51,OOA,的基本过程,:,抽取整理用户需求,建立问题域精,确模型.,三个子模型与五个层次,52,三个模型,对象模型,:,描述静态结构,定义做事情的实体,功能模型,:,描述处理(数据变换),指明系统应“做什么”,动态模,型:,描述交互过程,规定什么时候做,53,五个层次,主题层,类-&-对象层,:,结构层,属性层,服务层,总结:面向对象分析大体上按照下列顺序进行:寻找类-&-对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。,54,55,
展开阅读全文