面向对象的概念讲述课件

上传人:无*** 文档编号:241846410 上传时间:2024-07-30 格式:PPT 页数:48 大小:771KB
返回 下载 相关 举报
面向对象的概念讲述课件_第1页
第1页 / 共48页
面向对象的概念讲述课件_第2页
第2页 / 共48页
面向对象的概念讲述课件_第3页
第3页 / 共48页
点击查看更多>>
资源描述
1面向对象技术面向对象技术2课程特点课程特点面向对象是一种全新的思考方式面向对象是一种全新的思考方式该课程以概念为基础该课程以概念为基础,为主线为主线注重建模和视图注重建模和视图提供统一建模语言提供统一建模语言UMLl 深入理解面向对象的概念深入理解面向对象的概念;l 掌握面向对象的建模过程掌握面向对象的建模过程;l 掌握建模语言掌握建模语言UML;l 设计健壮的、可扩展的、可复用的、设计健壮的、可扩展的、可复用的、可维护的软件系统。可维护的软件系统。3课程课程目的目的4v 面向对象的概念面向对象的概念v 面向对象的面向对象的软件软件开发模型开发模型第第1 1章章 面向对象的概念面向对象的概念5理解并掌握如下概念理解并掌握如下概念l类和对象类和对象l对象和实例对象和实例l对象和变量对象和变量l实例变量与类变量实例变量与类变量l方法与操作方法与操作l抽象类和抽象方法抽象类和抽象方法l两种方法的本质区别两种方法的本质区别l面向对象的软件开发模型面向对象的软件开发模型61.11.1 传统软件开发方法的问题传统软件开发方法的问题模型阶段性模型阶段性 模型的顺序性模型的顺序性以功能为主的方法,功能易变以功能为主的方法,功能易变 模块的封装性、可重用性差模块的封装性、可重用性差,接口易变接口易变 没有很好解决软件开发中的两个经典问题没有很好解决软件开发中的两个经典问题大峡谷大峡谷北端北端大峡谷大峡谷南端南端数据模型数据模型处理模型处理模型科罗拉科罗拉多河多河传统方法,传统方法,数据和功能各自描述系统的一部分,两种模数据和功能各自描述系统的一部分,两种模型表示角度不同,若合起来,对一致性、精确性难以验型表示角度不同,若合起来,对一致性、精确性难以验证。证。OO的对象模型解决了此问题。的对象模型解决了此问题。两个经典问题两个经典问题:问题问题“1 1”图图1-1 1-1 经典问题经典问题“1 1”7两个经典问题两个经典问题:问题问题“2 2”分析模型分析模型设计模型设计模型大峡谷大峡谷北端北端科罗拉科罗拉多河多河大峡谷大峡谷南端南端传统方法,传统方法,分析和设计两个阶段描述工具不同,需要转分析和设计两个阶段描述工具不同,需要转换,重新建立模型,向程序员解释编程要求。换,重新建立模型,向程序员解释编程要求。OO方法的设计是对方法的设计是对OOA的扩展。的扩展。图图1-2 1-2 经典问题经典问题“2 2”89面向对象的程序设计语言面向对象的程序设计语言面向对象的设计面向对象的设计 面向对象的分析面向对象的分析 面面向向对对象象的的发发展展过过程程1.2 1.2 面向对象方法的由来面向对象方法的由来解解决决问问题题的的过过程程图图1-3 1-3 面向对象方法的发展面向对象方法的发展10v Simula(Dahl and Nygaad)模拟现实世界对象的行为。模拟现实世界对象的行为。60年代末,挪威奥斯陆大学和挪威计算中心研制的创建了 第一个OO系统。v Ada(G.Booch)具有对象的特征,是一个基于对象的语言。具有对象的特征,是一个基于对象的语言。70年代,G.Booch在研究Ada软件开发中,提出了OO思想,创建了Ada的程序包。v Smalltalk(美国美国Xerox Parc研究中心研究中心A.Key研制研制)72年,推出Smalltalk72-有对象的概念;76年,推出Smalltalk76-有类的概念;81年,推出Smalltalk80和环境-全面体现了OO程序设计语 言的特征。1.2 1.2 面向对象方法的由来面向对象方法的由来v Objective-C(Cox 1986,Cox and Novobilski 1991)。支持多态、信息隐敝。v C+(1980,贝尔实验室的,贝尔实验室的Bjarne Strousrup)支持抽象、继承、自动引用、动态绑定、操作符重载等,但维护困难。v Eiffel(Myeer 1990)有断言,解决正确性、健壮性、可移植性、效率等。v Java(Sun 公司公司 James Gosling 1990)在Sun World95年会上公布。Java=C+-复杂性和奇异性+安全性和可移植性。111.2 1.2 面向对象方法的由来面向对象方法的由来1.3 1.3 面向对象与面向过程的软件开发区别面向对象与面向过程的软件开发区别1.3.1 1.3.1 方法的区别方法的区别1.3.2 1.3.2 分析与设计的区别分析与设计的区别1.3.3 1.3.3 程序的区别程序的区别121.3.1 1.3.1 方法的区别方法的区别13 (1)面向过程方法是开发人员按计算机的结构去思考问面向过程方法是开发人员按计算机的结构去思考问 题题。(2)面向过程方法是开发人员在问题空间和解空间进行面向过程方法是开发人员在问题空间和解空间进行 对应对应。面向对象方法是以对象面向对象方法是以对象(事物事物)代表求解问题的中代表求解问题的中 心环节心环节,是按解决问题的方式去思考问题是按解决问题的方式去思考问题。面向对象的方法面向对象的方法,是现实的问题空间与软件系统的是现实的问题空间与软件系统的 解空间的近似和直接模拟解空间的近似和直接模拟,使人们对复杂系统的认使人们对复杂系统的认 识过程和程序的实现过程尽可能一致识过程和程序的实现过程尽可能一致。14 (3)面向过程方法以函数过程和数据结构为中心建模面向过程方法以函数过程和数据结构为中心建模,用用 计算机的术语描述问题计算机的术语描述问题。面向对象的方法是对求解问题本身建模面向对象的方法是对求解问题本身建模,用问题本用问题本 身的术语描述问题身的术语描述问题。1.3.1 1.3.1 方法的区别方法的区别15函数和函数和过程过程举例举例:某所大学信息系统的设计某所大学信息系统的设计数据数据图图1-4 1-4 结构化方法结构化方法结构化的方法:结构化的方法:将定义数据库的布局和程序的设将定义数据库的布局和程序的设计来访问这些数据。计来访问这些数据。数据库数据库中存有关于学生、教授、中存有关于学生、教授、教室以及课程的信息。教室以及课程的信息。程序程序可以让用户登记学生的选课可以让用户登记学生的选课情况,分派教授授课,安排授课情况,分派教授授课,安排授课教室等。程序可以访问并更新数教室等。程序可以访问并更新数据库据库。16对象对象对象对象对象对象对象对象图图1-5 1-5 面向对象方法面向对象方法面向对象的方法:面向对象的方法:学生、教授、教室和课程学生、教授、教室和课程等被等被当成对象来考虑。当成对象来考虑。定义一组能进行交互的定义一组能进行交互的类类(类,(类,class是相似对象的一种通用表是相似对象的一种通用表示)。示)。这样的类将包括功能(程序)这样的类将包括功能(程序)和数据的抽象。和数据的抽象。举例举例:某所大学信息系统的设计某所大学信息系统的设计171.3.2 1.3.2 分析与设计分析与设计的的区别区别图书馆信息系统图书馆信息系统CatalogLibrarianBookLibrarySystemRecordLoansAddResourcesReportFines图图1-1-6 6 按对象概念分解按对象概念分解图图1-1-7 7 按功能或过程分解按功能或过程分解面向对象面向对象分析与设计分析与设计面向过程的面向过程的分析与设计分析与设计 分而治之分而治之分析和设计的采用一致的分析和设计的采用一致的概念、原则、表示法概念、原则、表示法1.3.3 1.3.3 程序程序的的区别区别面向对象的程序面向对象的程序=对象对象+消息消息 存存款款取取款款图图1-91-9 面向对象的储蓄处理事务面向对象的储蓄处理事务银行账户对象银行账户对象数据和施加在其上的操作分离;数据和施加在其上的操作分离;代码按过程组织的代码按过程组织的,每个过程每个过程操作不同类型的数据。操作不同类型的数据。外部消息外部消息利息结算利息结算利息结算利息结算存款存款取款取款账户账户余额余额账户账户余额余额图图1-81-8 面向过程的储蓄处理事务面向过程的储蓄处理事务 在面向对象中在面向对象中,是在数据抽象内来组是在数据抽象内来组 织过程即代码是按类组织的织过程即代码是按类组织的,每个类每个类 包含对该类实例进行操作的过程包含对该类实例进行操作的过程。面向过程的程序面向过程的程序=数据结构十算法数据结构十算法18191.4 1.4 面向对象的范型面向对象的范型1.4.1 1.4.1 喷泉模型喷泉模型1.4.2 OO1.4.2 OO软件开发生命周期软件开发生命周期1.4.1 1.4.1 喷泉模型喷泉模型 (fountain model)20调试调试验收入库验收入库概概括括聚聚集集编码编码设计设计分析分析图图1-10 1-10 喷泉模型喷泉模型1990年,年,B.Henderson seller和和J.M.Eduarols在其在其“面面向对象系统生存期向对象系统生存期”一一文提出的文提出的OO开发的七点框开发的七点框架,并以架,并以Bailin提出的实体数提出的实体数据流图或信息流图作底层工具,据流图或信息流图作底层工具,而构思的面向对象生存期的喷而构思的面向对象生存期的喷泉模型。泉模型。v 无隙性:各阶段无明显界限无隙性:各阶段无明显界限v 复用:支持分析和设计结果复用:支持分析和设计结果 的自然复用;的自然复用;v 概括、聚集对客观世界对象概括、聚集对客观世界对象 的模型化。的模型化。21系统分析系统分析系统设计系统设计写程序写程序问题定义问题定义系统测试系统测试系统维护系统维护1.4.2 1.4.2 OO软件开发生命周期软件开发生命周期图图1-11 1-11 OOOO软件开发生命周期软件开发生命周期221.5 1.5 面向对象的概念面向对象的概念面向对象概念的提出面向对象概念的提出:使描述问题的问题空间和解决问题的方法空间一致使描述问题的问题空间和解决问题的方法空间一致(概念上、处理行概念上、处理行为上为上一致一致)按问题领域的按问题领域的基本事物基本事物实现自然分割实现自然分割 按人们按人们思维方式思维方式建立问题域模型建立问题域模型 演绎思维演绎思维(从一般到特殊从一般到特殊)归纳思维归纳思维(从特殊到一般从特殊到一般)为此,必须建立直接表现为此,必须建立直接表现组成问题域的事物,及这些事物间相组成问题域的事物,及这些事物间相互联系的概念互联系的概念,建立适应人们一般思维方式的描述范式。,建立适应人们一般思维方式的描述范式。CoadCoad和和YourdonYourdon给出了面向对象的定义:给出了面向对象的定义:面向对象面向对象=对象对象+类类+继承继承+通信通信 23问题空间的对象问题空间的对象:现实世界中任何实际存在的事物都是对现实世界中任何实际存在的事物都是对象象(是对实体概念的一种描述是对实体概念的一种描述)。物理实体物理实体软件实体软件实体概念实体概念实体1.5.1 1.5.1 对象对象(Object)24 对象是一个具有封装了的数据结构和操作的实体,这对象是一个具有封装了的数据结构和操作的实体,这 个实体有一个标识它的名字,对外通过相应的接口,个实体有一个标识它的名字,对外通过相应的接口,提供相应的服务。计算机程序中的对象是具有三个特提供相应的服务。计算机程序中的对象是具有三个特 征的实体征的实体:标识、状态、行为标识、状态、行为。方法空间方法空间的对象的对象:是对某个事物的抽象描述。是对某个事物的抽象描述。Object:=(OID,DS,OS,MI)1.5.1 1.5.1 对象对象(Object)25对象特征对象特征 (对象对象的属性和行为的属性和行为)属性属性 Atribute 描述对象描述对象“静态静态”(结构结构)特征的一个数据项;特征的一个数据项;属性是对象知道的事情;描述对象的当前状态。属性是对象知道的事情;描述对象的当前状态。操作操作Operation描述对象描述对象“动态动态”(行为行为)特征的一个操作序列特征的一个操作序列;操作是调用对象执行的转换或查询的规格说明;操作是调用对象执行的转换或查询的规格说明;有可能改变对象的状态;有可能改变对象的状态;操作操作是方法的抽象说明。是方法的抽象说明。说明对象在什么条件下是可行的说明对象在什么条件下是可行的。方法方法Method对象完成的事情。是操作的实现或执行操作的函数对象完成的事情。是操作的实现或执行操作的函数或过程。是实现类的行为的过程抽象。或过程。是实现类的行为的过程抽象。规格规格思考思考:l 属性完全相同的两个事物属性完全相同的两个事物,是否是同一个对象是否是同一个对象?举例。举例。两个教师姓名和职称都相同两个教师姓名和职称都相同,但它们却是两个不同的对象。但它们却是两个不同的对象。l所有的对象都是独立的实体所有的对象都是独立的实体,都有其唯一的标识。对象都有其唯一的标识。对象 之间的区别是由它们之间的区别是由它们固有的存在性所决定的固有的存在性所决定的,而与它们而与它们 的特征是否相同无关。的特征是否相同无关。2627 类是具有相同属性和服务的一组对象的集合,它为类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。属于该类的全部对象提供了统一的抽象描述。1.5.2 1.5.2 类类(Class)(1)(1)类的定义类的定义Class:=(ID,ATT,OPE,ITF,INH)其中其中IDID类名,类名,ATTATT属性集,属性集,OPEOPE操作集,操作集,ITFITF接口消息集,接口消息集,INHINH类的类的继承性集。继承性集。(2)(2)类和对象类和对象类可以是对象,但对象不是类;类可以是对象,但对象不是类;类是对象的抽象描述类是对象的抽象描述;对象是类的实例;对象是类的实例;实例:实例:InstanceInstance具有身份和值的独立实体具有身份和值的独立实体概念层概念层的类的类RectangleheightwidthgetArearesizeRectangleheight:intwidth:intgetArea():intresize(int,int)Rectangleheightwidth对象实例对象实例p:Rectangleheight=10 width=20q:Rectangleheight=15 width=25(3)(3)类的描述几种情况类的描述几种情况说明层说明层的类的类实现层实现层的类的类281.5.2 1.5.2 类类(Class)例如绘图中的点类:例如绘图中的点类:x:inty:int move()getX()getY()setX()setY()Point用用JavaJava定义点类:定义点类:Class Point Class Point intint nxnx;/;/点的点的x x坐标坐标 intint nyny;/;/点的点的y y坐标坐标 intint nColornColor;/;/颜色值颜色值 void void move(intmove(int x,intx,int y);/y);/将当前点移到将当前点移到、y y处处 intint getXgetX();/();/获当前点获当前点X X坐标坐标 intint getYgetY();/();/获当前点获当前点Y Y坐标坐标 intint setXsetX();();intint setYsetY();();Point Point mypointmypoint;/;/点类的一个对象点类的一个对象 291.5.2 1.5.2 类类(Class)l类是一个支持继承的抽象数据类型类是一个支持继承的抽象数据类型;(4)(4)类的作用类的作用l类是创建类是创建(实例化实例化)对象的模板,类是对对象的抽象;对象的模板,类是对对象的抽象;l类类似一张表,表内描述了数据和操作的封装体。类类似一张表,表内描述了数据和操作的封装体。l类是一个命名空间类是一个命名空间,为类的泛化声明建立作用域为类的泛化声明建立作用域;301.5.2 1.5.2 类类(Class)31l表示两个类之间是表示两个类之间是 “is ais a”,“is likeis like”或或“is is kind ofkind of”关系。关系。1.5.31.5.3 继承继承(Inheritance)superclasssubclassl继承使两个以上的类共享相同的属性和继承使两个以上的类共享相同的属性和/或相同方法。或相同方法。l继承提高了复用性。继承提高了复用性。l继承的各个类可形成层次结构。继承的各个类可形成层次结构。l继承集中的继承集中的属性,只能声明一次属性,只能声明一次。操作可以被多次操作可以被多次声明声明,只要声明相同。,只要声明相同。321.5.4 1.5.4 消息消息(Message)消消息息包包括括的的信信息息消息的发出者消息的发出者消息的接收者消息的接收者 要求的服务要求的服务 输入的信息输入的信息 输出输出(回答回答)的信息的信息 协议对象间通信要遵守条件协议对象间通信要遵守条件 消息是一个对象向另一个对象发出的服务请求消息是一个对象向另一个对象发出的服务请求(操作的(操作的 请求、执行方法的请求),要求系统的某个请求、执行方法的请求),要求系统的某个 对象完成它对象完成它 指定的操作。指定的操作。33l为不同的目的建立不同层次上的抽象,为不同的目的建立不同层次上的抽象,并将不同层并将不同层次上的同一概念的两种元素联系起来的依赖关系,次上的同一概念的两种元素联系起来的依赖关系,一个元素比另一个元素更详细。一个元素比另一个元素更详细。1.5.51.5.5 抽象抽象(Abstraction)l抽象是确定一个事物的本质特征的行为,使这个事抽象是确定一个事物的本质特征的行为,使这个事物与其他事物区分开物与其他事物区分开。l抽象是自底向上的对几组事物观察,找出事物的共抽象是自底向上的对几组事物观察,找出事物的共性,把具有共性的事物划分成一类性,把具有共性的事物划分成一类。34抽象类抽象类 abstract classabstract class 抽象类是不能被直接实例化的类,即抽象类是不能被直接实例化的类,即它它没有直接的没有直接的实例。实例。对象是对问题域中某些事物的抽象;对象是对问题域中某些事物的抽象;类是对对象的一个抽象;类是对对象的一个抽象;1.5.51.5.5 抽象抽象(Abstraction)35具体类具体类 letterBody:StringCursor:IntegerGetNextSentence():StringRestCursor()EncryptedLetterEncoding:CodeKeygetNextSentence():String图图1-12 1-12 具体超类产生模糊性具体超类产生模糊性1.5.51.5.5 抽象抽象(Abstraction)36抽象类抽象类 图图1-13 1-13 抽象超类避免模糊性抽象超类避免模糊性LetterBody:StringCursor:IntegergetNextSentence():StringRestCursor()EncryptedLetterEncoding:CodeKeygetNextSentence():StringNonEncryptedLettergetNextSentence():String1.5.51.5.5 抽象抽象(Abstraction)371.5.6 1.5.6 封装封装(Encapsulation)将数据将数据(属性属性)和方法和方法(服务服务)结合成一个独立的系统单位。结合成一个独立的系统单位。隐藏了对象的内部细节:信息隐蔽隐藏了对象的内部细节:信息隐蔽(information hiding)有一个清晰的边界有一个清晰的边界有确定的接口有确定的接口(即协议)(即协议)受保护的内部实现受保护的内部实现封装性的条件封装性的条件 售报亭售报亭报刊名称报刊名称报刊定价报刊定价销售总额销售总额(钱租钱租)报刊零售报刊零售款货清点款货清点图图1-14 1-14 售报亭对象售报亭对象38封装的意义封装的意义l表达事物的静态特征和动态特征表达事物的静态特征和动态特征(是事物不可分割的是事物不可分割的两个侧面两个侧面)。l封装性使我们只要注意该对象对外呈现什么行为封装性使我们只要注意该对象对外呈现什么行为(做做什么什么),而不关心内部的实现细节,而不关心内部的实现细节 (怎么做怎么做)。可以。可以避免外部入侵避免外部入侵,提高软件的可维护性、可修改性。提高软件的可维护性、可修改性。l描述系统中的功能是如何划分的。描述系统中的功能是如何划分的。391.5.7 1.5.7 多态性多态性(Polymorphism)在面向对象中在面向对象中,多态性使得同一个属性或服务在一般类及多态性使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。其各个特殊类中具有不同的语义。说说明明 多态性表示了对象属于多个类的能力。多态性表示了对象属于多个类的能力。抽象操作是多态的抽象操作是多态的,抽象操作可以在不同的类中按抽象操作可以在不同的类中按不同方式执行。不同方式执行。多态性增加了多态性增加了OOOO的灵活性,减少冗余信息的灵活性,减少冗余信息,提高可提高可重用性,可扩展性。重用性,可扩展性。在在OOOO语言中,多态性的实现与下列概念有关语言中,多态性的实现与下列概念有关:同样的操作可用于一个类型及其子类型。在子类中,对继承类的属同样的操作可用于一个类型及其子类型。在子类中,对继承类的属性或服务进行重新定义。性或服务进行重新定义。动态绑定动态绑定(dynamic binding)程序在运行时,根据对象接受的消息,动态地确定要连到哪一段代程序在运行时,根据对象接受的消息,动态地确定要连到哪一段代码上。程序设计中,运行期决定对象和分配存储能力为动态绑定。码上。程序设计中,运行期决定对象和分配存储能力为动态绑定。参数参数多态多态(parametric)参数多态是指一个可参数化的类模板中包含的操作所涉及的类型必参数多态是指一个可参数化的类模板中包含的操作所涉及的类型必须用类型参数实例化。须用类型参数实例化。40 包含多态包含多态(inclusion)多态性显著提高多态性显著提高了软件的可重用了软件的可重用性和可扩充性。性和可扩充性。用户可以发送一个通用的消息,而实现时的细节则由接收对象自行决定,用户可以发送一个通用的消息,而实现时的细节则由接收对象自行决定,这样同一消息可以调用不同的方法,增加了系统的这样同一消息可以调用不同的方法,增加了系统的灵活性灵活性。经理经理Pay()推销员推销员Pay()技工技工Pay()销售部经理销售部经理Pay()雇员雇员Pay()41包含多态包含多态(inclusioninclusion)ShapeShape类类图图1-15 1-15 画图系统中类的继承关系画图系统中类的继承关系 各种图形具有共同的属性和操各种图形具有共同的属性和操作作:颜色、线型、旋转、移动。颜色、线型、旋转、移动。但在不同图形中对但在不同图形中对Draw的描的描绘虽然不同绘虽然不同,外界都可以采用以外界都可以采用以下方式调用下方式调用:Shape LineTriangleSquare RectangleDraw()Shape*aShape;Line*aLine;aLine=new Line;aShape=oLine;aShape-draw();/调用的是类Line的方法。为外界调用提供统一的接口为外界调用提供统一的接口,使对图形扩充成为可能。使对图形扩充成为可能。42431.5.8 1.5.8 永久对象永久对象(Persistent object)就是对象的生存期可以超越程序的执行时间就是对象的生存期可以超越程序的执行时间而长期存在的对象而长期存在的对象44 面向对象的符号表示面向对象的符号表示UMLUML表示法表示法1 1 (UML,UnifiedUML,Unified Modeling Language)Modeling Language)类类classnameAttr:atypeOp(par:type):Rtypecname活动类活动类Name:classOname:classRole角色角色对象对象Oname:class多对象多对象关联关联Aname泛化泛化子子类类父父类类实现实现实实现现规规格格说说明明A依赖依赖BABKind扩展扩展extend被扩展被扩展用例用例45面向对象的符号表示面向对象的符号表示UMLUML表示法表示法2 2用例用例状态状态并发组并发组成状态成状态初始状态初始状态包含包含include被包含被包含用例用例聚合聚合(共享共享)组合组合转换转换信号信号singnal协作协作Cname或或cator customer参与者参与者SnameSname终止状态终止状态历史状态历史状态H深历史状态深历史状态H*结合状态结合状态分叉或结合分叉或结合分支或合并分支或合并46面向对象的符号表示面向对象的符号表示UMLUML表示法表示法3 3输入事件输入事件构件构件节点节点包包Ename输出事件输出事件EnameNnamePname提供者提供者客户客户实现实现接口接口使用使用TnameP:Type模板模板注释注释47RoseRose工具中的类符号工具中的类符号实体类符号实体类符号Classentity控制类符号控制类符号Classcontrol本章结束本章结束48
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!