资源描述
,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,人民邮电出版社,3,面向对象思想,Java,程序设计,第,章,3.2,面向对象与面向过程,3.3,面向对象语言的三大特性,3.5,小结,3.1,从数据开始,3.4 UML2.0,简介,C,目录,ONTENTS,3.1.1,类的角色,类是一种数据类型,用它可以定义复杂的数据,类似,C,语言的结构体和共体类型,,Pascal,语言的记录类型。,从数据处理的角度看:,类是有相同属性的事物的聚合或抽象。所谓“物以类聚”。,按人类的语言表述:,类是一个封装体,它把属性数据和操作方法封装在其中。,按面向对象语言的术语解释:,类是程序构成的单位,类似其他语言的函数、过程。,从,Java,程序的结构,看:,类的角色,3.1.2,事物数据化,计算机是进行数据处理的工具。人们使用计算机语言编程序进行针对不同问题的、方式方法各异的数据处理。,数据处理包括数值数据处理和非数值数据处理。,计算机在各行各业普及应用的今天,万事万物都已成为数据,用计算机存储、用计算机进行处理。各种电子政务系统、电子商务系统就是典型应用。,过去,对象指现实世界可区分的事物;现在,对象也可以是计算机中的数据。,3.1.3,对象的特殊性,1,、对象有多种属性,一事物区别于其他事物,是因为它们具有不同的属性。一本书的属性很多,在图书管理系统中对书选取的属性包括书名、著者、出版社、出版时间、定价等。,2,、对象有行为,在学校的管理系统中,学生除了具有一些属性,还具有一些行为。例如注册、选课、评师等。,3.1.3,对象的特殊性,属性是关于对象的静态描述。,行为是对象的动态描述。,人有吃饭、穿衣、形、走、坐、卧等行为。,人有姓名、年龄、性别、家庭住址、电话号码等属性。,3.1.4,对象分类,1,、物以类聚就是事物分类,3,、程序中也需要定义类,面向对象语言中有此类语法,,Java,是面向对象语言。,4,、类是对象的抽象,对象是类实例,类是有共同属性和行为名的对象的集合。对象具有具体的属性值和行为。名,-,值对应于类,-,对象。,2,、事物分类便于高效管理。,单位里有不同岗位的人。超市里有不同种类的商品。,一本英语辞典里的十几万单词被按照首字母,AZ,分为,26,个类。这样你才能快速地翻查到某个单词。,对象的数据处理,根据要解决的问题的需要,确定定义哪些,方(,method,)。,对象的处理方法也和属性一样,往往是对象独有的。,例如平面几何图形类对象有计算面积和周长的需求,可能需要定义,area(),和,perimeter(),方法。但是对于立体类对象,往往需要计算体积,那就需要定义,volume(),方法了。,再比如,在学校的管理系统中,学生类,Student,对象,可能要定义注册、交学费、选课等方法,而教师则有提交教学材料、提交成绩等方法。,3.1.5,对象处理,【例,3.1,】定义圆、矩形和三角形类,观察边长相等情况下哪种图形的面积最大,。,Example3_1.java,3.2,面向对象与面向过程,3.3,面向对象语言的三大特性,3.5,小结,3.1,从数据开始,3.4 UML2.0,简介,C,目录,ONTENTS,【,面向过程,】,面向过程的语言人们已经使用了几十年,现在仍然在使用,例如,C,语言就是这样一种语言。,面向过程的编程技术中,程序员关注于程序的函数和函数的执行,反而忽视了数据本身。对象难于以整体存在。属性被“撕裂”成不同的数据;属性和行为被“割裂”开来。用于开发大型复杂应用系统时,不能建立在类似人解决问题那样的“自然”地思考和分析。,3.2.1,问题与解决问题的思维方式,3.2.1,问题与解决问题的思维方式,过程化程序图示。,程序员要设计每一个函数,func1funcn,,还要管理每一个函数的调用和执行。在这个过程中,对象(如果有的话)似乎不存在。,【,面向过程,】,面向过程编程应用于大型的、复杂的系统开发时可能遇到的问题:,难于维护和修改程序,难于调试程序,难于跟踪其执行,逻辑,容易出现意外数据修改等逻辑错误,编程细节难于组织,程序员在程序的组织和管理方面的负担,重,3.2.1,问题与解决问题的思维方式,【,面向过程,】,【,面向对象,】,在面向对象编程中,程序员关注于数据本身,或者说对象本身。,关注与对象有哪些属性,对属性进行什么操作。,这样的问题和思考接近于人解决问题的方式。,对象各有其行为,对象之间通过消息相互通信,构成复杂的系统的运行。,3.2.1,问题与解决问题的思维方式,3.2.2,面向对象的内涵,面向对象的思想和它的原理机制可谓内涵丰富,在后续各章中依照基本语法、原理机制、应用编程的顺序展开。在此,仅就面向对象之“面向”二字的含义进行解读。,面向对象就是把对象作为整体,因为对象本来是一个整体。,基于对象的整体性,于是有对象的封装和数据隐藏。,基于对象间的关系,于是有继承和多态,形成层次体系。,基于对象的复杂性,需要对其抽象,于是有类。,把对象作为整体,于是分析问题和解决问题的方式方法都更自然简洁。软件开发和维护也变得容易了。,3.2.3,面向对象和面向过程思想的关系,OOP,程序图示:,对象的函数可以是与具体业务逻辑有关的实用的函数;也可以是负责与其他对象通信的接口函数。,3.2,面向对象与面向过程,3.3,面向对象语言的三大特性,3.5,小结,3.1,从数据开始,3.4 UML2.0,简介,C,目录,ONTENTS,3.3,面向对象语言的三大特性,面向对象的语言有三个特性:,封装性;,继承性;,多态性;,正是因为具有这些特性,面向对象语言才适用于大型系统的开发。,3.3.1,封装性(,encapsulation,),封装是指把数据和函数绑定到一个容器或者对象中。这一概念也称为数据抽象(,data abstraction,),它支持数据隐藏(,data hiding,),就是说对象可以对程序的其他部分隐藏其数据,使数据不能被直接访问,而只可以通过接口函数访问。,封装减少了意外数据修改和逻辑错误发生的可能性。,3.3.2,继承性(,inheritance,),继承机制是为了支持代码的可重用性(,reusability,)。定义新的类,可以从已有的类中继承代码,减少了程序的总代码量和写代码时间,缩短了开发周期。,例如,已经定义了三角形类,Triangle,,则定义直角三角形,Rtriangle,可以继承,Triangle,中的数据和方法,再添加新的数据和方法,即实现了代码的重用。,生活中继承的情况比比皆是。建筑设计部门开始一个新楼设计时可能从一个过去的设计承一些风格、结构思路。修改增补之后得到一个新设计。,3.3.2,继承性(,inheritance,),OOPL,比面向过程的语言更加支持代码的可重用性。继承是实现代码可重用方面最重要的概念和操作机制。使用继承,我们从已有的代码继承,得到新的代码。,继承减少了代码编写量,缩小了程序的规模,。,3.3.3,多态性(,polymorphism,),多态性类似自然语言的一词多义现象,比如汉字“打”,用在不同上下文中含义不同。“打酱油”是买酱油,“打苹果”是削苹果皮,“打牌”是玩牌,“打车”则是租车。,面向对象语言中的多态性也是为了用单一的接口形式,表达多种不同的动作。,Java,中有方法重载(,method overloading,)和方法重写(,method overriding,)两种多态。在此对重载的用法用代码举例说明。,3.3.3,多态性,int max(int a,int b,int c),if(ab&ac),return a;,if(ba&bc),return b;,else,return c;,int max,(,int a,,,int b,),return ab?a:b;,double max(double x,double y),return,xy,?x:y;,3.2,面向对象与面向过程,3.3,面向对象语言的三大特性,3.5,小结,3.1,从数据开始,3.4 UML2.0,简介,C,目录,ONTENTS,3.4.1 UML,概述,我们写程序,需要先分析问题,建立解决问题的思路。有了思路,写程序就容易了。我们可以用很多表达思路的工具。,在面向过程语言中,常用的工具包括流程图、,NS,图、,PAD,图、伪码(,Pseudo-code,)等等。,在面向对象,设计,场合,有一个常用的工具,叫做统一建模语言,UML,(,Uniform Modeling Language,)。,UML,是软件设计阶段的有用工具,利用它的各种图形符号,可以描述软件系统的结构和行为特性。,3.4.1 UML,概述,UML2.0,提供,13,种图形,:,表,3.4 UML2.0,的,13,种图形,序号,名称,作用,1,用例图,对系统的使用方式分类,2,类图,显示类及类间关系,3,对象图,显示对象及它们的相互关系,4,活动图,显示人或对象的活动,其方式类似于流程图,5,状态机图,显示生命周期比较有趣或复杂的对象的各种状态,6,通信图,显示在某种情形下对象之间发送的消息,7,顺序图,显示与通信图类以的信息,但强调的是顺序,而不是连接,8,包图,显示相关的类如何组合,9,部署图,显示安装已完成系统的机器、过程和部署制品,10,组件图,显示可重用的组件(对象或子系统)及接口,11,交互概览图,将活动图和顺序图组合图形,12,定时图,显示消息和对象状态的准确时间限制,13,复合结构图,显示对象在聚合或复合中的相互关系,显示接口和协作的对象,3.4.2,类图,UML,类图,用矩形封装类的名称、属性、方法、包括属性和方法的可见性。见下图所示。,图中描述了一个类,Circle,,属性,radius,、,x,、,y,,方法,area,,以及属性和方法的可见性,分别用,+,、,#,、,-,、,表示共有的、保护的、私有的和友好的,4,中可见性(也称为访问权限)。,3.4.3,对象图,对象图描述具体的对象名称和属性值。见下图所示。,Circle,类的,3,个对象,c1,、,c2,、,c3,。,3.2,面向过程与面向对象,3.3 OOPL,三大特性,3.5,小结,3.1,数据、对象和类,3.4 UML,简介,C,目录,ONTENTS,小结,Summary,本章从计算机应用普及,过程中,事物数据化的角度开始,,分析,对象的本质,,总结,类的作用,从,现实世界和计算机数据,处理,相对应的,角度理解面向对象,思想,。用实例说明方式引领大家理解面向对象技术的基本概念的含义。为理解面向对象的,语法,和操作奠定基础。,人民邮电出版社,谢谢观赏,Java,程序设计,海量图书方便查询,免费申请样书,下载配套资源,优惠购书,成为作者,更多,样书申请和资源下载,需求,请登录人邮教育社区(,),囊括各大品类,您想要的,应有尽有,教师免费申请样书,,,我们,将安排快递迅速送达,教学视频、,PPT,课件,、教学,案例,、,习题,答案,、模拟,试卷等丰富资源,免费下载,教师可以申请最低折扣,学生直接优惠购买图书,欢迎写文章投稿,,我们,强大的编辑团队将,为您,提供专业和高效的,编辑,出版服务,
展开阅读全文