JAVA语言项目3JAVA面向对象编程.ppt
《JAVA语言项目3JAVA面向对象编程.ppt》由会员分享,可在线阅读,更多相关《JAVA语言项目3JAVA面向对象编程.ppt(195页珍藏版)》请在三一办公上搜索。
1、面向对象程序设计(Object Oriented Programming)简称(OOP),是一种新兴的程序设计方法,其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。类是Java程序中的最基本构件,即Java程序是一大堆类的集合。,下一页,项目3 Java面向对象编程,项目3 Java面向对象编程,3.1 项目概述3.2 项目目的3.3 项目支撑知识3.4 项目实施3.5 项目总结3.6 扩展训练,3.1 项目概述,在本项目中主要学习面向对象程序设计的基本思想和面向对象的概念,类的定义,成员变量和成员方法的定义及使用,对象的创建和使用,类的继承和多态,访问控制和修饰符,抽象类
2、、接口和包的声明及实现方法。,返回,3.2 项目目的,掌握创建和使用类对象、使用包的基本方法。.理解继承和复用的概念。.了解接口的声明及实现方法。.理解多态性是如何扩充和维护系统性能。,返回,3.3 项目支撑知识,面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。其应用领域不仅仅是软件,还有计算机体系结构和人工智能等。在
3、面向过程的设计中,程序员只限于使用语句构建软件,即把语句集合起来组成方法(后面称之为函数或过程)。,下一页,返回,3.3 项目支撑知识,如建筑师,只限于使用木、水、土等原材料搭建房屋,工作多,效率低。并且在房子需重新翻盖时,所有的原材料将没有用。但如果将水、土先烧成砖,木先制成门、窗等,盖房时使用砖、门、窗成形的原料,只需考虑不同型号的门、窗放的位置。即使已建成的房屋,需要重新翻盖,也不用从零开始,砖、门、窗等原材料都可重新再用,可提高工作效率,降低成本。这一类工程设计类似于面向对象的程序开发。,上一页,下一页,返回,3.3 项目支撑知识,项目开发背景知识 1面向对象的概述一、面向对象的基本概
4、念1.对象的基本概念对象是代表现实生活中的实物的软件编程实体,比如说银行账号,计算机用户,用户介面上的按钮,窗口菜单等。对象是由它们的状态和行为定义的。例如,一个银行账号拥有一种状态,诸如当前的收支状况,账户的所有入,允许的最小交易额等,而它的行为则包括提取,存入,收支平衡等。,上一页,下一页,返回,3.3 项目支撑知识,对象具有两方面的含义:在现实世界中,是客观世界中的一个实体;在计算机世界中,作为真实世界的抽象,由一个数据集以及对该数据集的操作组成。2.类的基本概念类:具有共同属性和行为的对象集合。类与对象的关系:类是对象的抽象,对象是类的实例。类是一个实体,它定义了一个对象的运行方式以及
5、在对象被创建或者说实例化的时候所包含的数据。类的作用就像一个模板,一个或者多个对象可以依照它来创建。,上一页,下一页,返回,3.3 项目支撑知识,3.消息消息:对象之间相互请求或相互协作的途径,是要求某个对象执行某项功能操作的规格说明。消息内容:通常包含接收方及请求接收方完成的功能信息。发送方:发出消息,请求接收方响应。接收方:收到消息后,经过解释,激活方法,予以响应。消息的性质:同一对象可接收不同形式的多个消息,产生不同的响应。同一个消息可以发给不同的对象,所做出的响应可以截然不同;发送方不需要知道接收方如何对请求予以响应的。,上一页,下一页,返回,3.3 项目支撑知识,消息就是向对象发出的
6、服务请求,它应该包含下述信息:提供服务的对象标识、服务标识、输入信息和回答信息。服务通常被称为方法或函数。举例说明:对象是具有某种特性和某种功能的东西。将同一种类型的对象归为一个类,以类的形式描述对象的状态和功能。例如,汽车是一类,其中如小轿车、中型面包车、大货车等,可认为是对象。类是对象的抽象,对象是类的实例。那么汽车就是Java中的类,判定某一对象是否是汽车,要看它是否具有这些属性,而自行车不能叫汽车,因为它不具有发动机属性。,上一页,下一页,返回,3.3 项目支撑知识,在面向对象的程序设计中,将类的特征和行为分别命名为属性和方法。例如,定义“电视机”这样一个类,如图3-1所示。电视机的属
7、性和方法定义如图3-2所示。一个类中定义的方法可以被该类的对象调用,对象方法的每一调用被称作发送一个消息(message)给对象。对象间是相互独立的,通过发送消息相互影响。采用消息可以让对象的行为通过它的方法来表达。一个消息由三部分组成:消息目标对象;执行方法的名字;,上一页,下一页,返回,3.3 项目支撑知识,执行方法所需要的参数(parameters)。(因Java是一个对象化的语言,对象也常被用来当作参数传递)。方法。表明对象所具有的行为,是对象与外界的接口。一个对象的行为是由它上面的操作定义的,这些操作被叫做方法。方法可以改变一个对象的状态,创建新对象,实现实用的功能等。作用:改变对象
8、的属性,返回对象的属性。二、面向对象的特点,上一页,下一页,返回,3.3 项目支撑知识,(1)封装。隐藏实现细节。例如,对象可以看作是数据及作用在这些数据上的封装体,它通过一个接口与外部进行交互,因此封装使得对象的内部实现与外部接口分离开来。这样,改变对象的内部实现并不影响使用这个对象的其他对象或应用。这种封装性也体现了一种抽象和信息隐蔽。(2)继承性。继承是指一个子类继承父类(或称为基类)的特征(数据结构和方法)。在继承一个父类时,可以在子类中增加新的数据结构和方法,也可以重定义从父类中继承下来的方法。父类的特征并不受子类的影响,反之,在理想情况下,父类的内部实现的变化不会影响子类。,上一页
9、,下一页,返回,3.3 项目支撑知识,当然,一个子类可有多个父类,这种情况称为多继承(C+语言支持多继承)。继承带来的好处是软件的复用,使用继承可以在已有软件构件的基础上构造新的软件,从而提高软件的生产率并保证软件的质量。简而言之,继承性是父类和子类之间共享数据和方法的机制;继承性具有传递性;继承性包括单继承和多重继承。继承性具有以下作用:使软件系统具有开放性;更好地进行抽象与分类;增强代码的重用率;提高可维护性。,上一页,下一页,返回,3.3 项目支撑知识,(3)多态性。不同的对象收到同一个消息可产生完全不同的效果,这一现象叫做多态。多态的原意是指一个实体多个形态。在面向对象程序设计中主要是
10、指变量多态和方法多态,变量多态是指同一个变量在运行时刻标识(表示)不同类型的对象,而方法多态主要是指同一个方法做不一样的动作,例如不同类的对象接受相同的消息(方法调用),但有不一样的响应动作。多态使得消息发送者能给一组具有公共接口的对象发送相同的消息,接收者作出相应的动作。变量多态是方法多态的基础。多态通常与语言的动态绑定(Dynamic Binding)机制有关。,上一页,下一页,返回,3.3 项目支撑知识,多态的效果:用户发送一个通用的消息,而实现的细节则由接收对象自行决定。多态性的作用:增强了操作的透明性、可理解性和可扩展性;增强了软件的灵活性和重用性。三、面向对象的优点为什么现代程序设
11、计语言会向面向对象编程靠拢?这是因为面向对象编程具备了几个优点,比如:代码维护方便、可扩展性好、支持代码重用技术等。这些优点是过程编程语言所不具备的。下面我们就来谈谈面向对象技术的这些优点。,上一页,下一页,返回,3.3 项目支撑知识,(1)维护简单。模块化是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有相同功能的类,可以在名字空间中添加一个类而不会影响该名字空间的其他成员。(2)可扩充性。面向对象编程从本质上支持扩充性。如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类。(3)代码重用。,上一页,下一页,返回,3.2 项目支撑知识,由于功能是被封装在
12、类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。事实上,任何一个编程语言的程序员都可以使用类库,类库提供了很多的功能。更令人高兴的是,可以通过提供符合需求的类来扩充这些功能。项目开发背景知识 2类的定义进行Java程序设计,实际上就是定义类的过程。一个Java源程序文件往往是由许多个类组成的。从用户的角度看,Java源程序中的类分为两种。,上一页,下一页,返回,3.3 项目支撑知识,(1)系统定义的类,即Java类库,它是系统定义好的类。类库是Java语言的重要组成部分。Java语言由语法规则和类库两部分组成,语法规则确定Java程序的书写规范;类库则提供了Java程序与运
13、行它的系统软件(Java虚拟机)之间的接口。Java类库是一组由它的发明者SUN公司以及其他软件开发商编写好的Java程序模块,每个模块通常对应一种特定的基本功能和任务,且这些模块都是经过严格测试的,因而也总是正确有效的。当自己编写的Java程序需要完成其中某一功能的时候,就可以直接利用这些现成的类库,而不需要一切从头编写,这样不仅可以提高编程效率,也可以保证软件的质量。,上一页,下一页,返回,3.3 项目支撑知识,(2)用户自己定义的类。系统定义的类虽然实现了许多常见的功能,但是用户程序仍然需要针对特定问题的特定逻辑来定义自己的类。用户按照Java的语法规则,把所研究的问题描述成Java程序
14、中的类,以解决特定问题。一个类的定义应包含两部分:类的声明和类的实体。一、类的声明类声明包括关键字class、类名及类的属性。类名必须是合法的标识符,类的属性为一些可选的关键字。其声明格式如下,)内参数为可选项。,上一页,下一页,返回,3.3 项目支撑知识,其中,修饰符public,abstract,final说明了类的属性,className为类名,superclassName为类的父类的名字,interfaceNameList为类所实现的接口列表。修饰符含义如下:abstract:声明该类不能被实例化。final:声明该类不能被继承,即没有子类。class class name:关键字cl
15、ass告诉编译器表示类的声明以及类名是class Name。,上一页,下一页,返回,3.3 项目支撑知识,extends super class name:extends语句扩展super class Name为该类的父类。implements interface Name List:声明类可实现一个或多个接口,可以使用关键字implements并在其后面给出由类实现的多个接口名字列表,各接口间以逗号分隔。二、成员变量成员变量的声明方式如下:,上一页,下一页,返回,3.3 项目支撑知识,其中,/成员变量static:静态变量(类变量);相对于实例变量。final:常量。transient:暂时
16、性变量,用于对象存档。volatile:贡献变量,用于并发线程的共享。三、成员方法方法的实现包括两部分内容:方法声明和方法体。,上一页,下一页,返回,3.3 项目支撑知识,方法声明中的限定词的含义。static:类方法,可通过类名直接调用。abstract:抽象方法,没有方法体。final:方法不能被重写。native:集成其他语言的代码。Synchronized:控制多个并发线程的访问。,上一页,下一页,返回,3.3 项目支撑知识,【例3-1】一个完整的类定义如下。,上一页,下一页,返回,3.3 项目支撑知识,项目开发背景知识 3成员变量和成员方法一、成员变量成员变量是类定义中的重要组成部分
17、,从不同的角度区分,它可以分为多种类型。1.从变量定义的位置分根据变量定义的位置划分,变量可以分为全局变量和局部变量。,上一页,下一页,返回,3.3 项目支撑知识,全局变量:定义在类中任何方法的外部,其作用范围为该变量所属的整个类。局部变量:定义在类中某一方法的内部,其作用范围为该变量定义的地方起,至所属方法结束的地方为止。【例3-2】测试全局变量的操作。,上一页,下一页,返回,3.3 项目支撑知识,上一页,下一页,返回,3.3 项目支撑知识,程序运行结果如图3-3所示。从此例我们可以看出,全局变量作用于其所在的整个类,在确保全局变量定义在类中任何方法的外部的前提下,它可以被随处安放,即使它的
18、定义处在该全局变量的使用处之后。如例子中的全局变量var a,var b的定义语句,完全可以把其安排在类的prim()方法定义体的右括号之后,程序运行的效果相同,这一点是与C/C+所不同的。【例3-3】测试局部变量的操作。,上一页,下一页,返回,3.3 项目支撑知识,上一页,下一页,返回,3.3 项目支撑知识,运行结果如图3-4所示。2.从变量的数据类型分根据变量所属的数据类型划分,变量可以分为基本类型变量和对象类型变量。所谓基本类型变量,就是指我们在第二章中讲述的8种基本数据类型,如int,double等,而由系统类库或者自定义类定义的变量,则为对象类型变量。这正如我们讲数据类型时对应的,基
19、本类型对应的是基本变量,在一个类中又被称为成员变量。对象类型对应的就是对象类型变量,在类中又可以被称为实例变量。【例3-4】基本类型变量和对象型变量测试。,上一页,下一页,返回,3.3 项目支撑知识,上一页,下一页,返回,3.3 项目支撑知识,程序运行结果如图3-5所示。,上一页,下一页,返回,3.3 项目支撑知识,【例3-5】简单数据类型与引用数据的区别。,上一页,下一页,返回,3.3 项目支撑知识,程序运行结果如图3-6所示。,上一页,下一页,返回,3.3 项目支撑知识,3.从变量的性质分根据变量的性质划分,可以将变量分为类变量和成员变量。所谓类变量(class variable),就是用
20、关键字static声明的全局变量,它是属于类本身的,不代表任何对象的状态。所谓成员变量,就是与类变量相对的,没有用static声明的其他变量,它是与具体对象相关的,保持对象的状态。类变量的使用能满足这样的需求,即有时想有一个可以在类的所有实例中共享的变量。比如,这可以用作实例之间交流的基础或追踪已经创建的实例的数量。数值型类变量在进行数值计算时候有其特殊性,即每次参加运算时的初始值为其上次运算的结果值。,上一页,下一页,返回,3.3 项目支撑知识,类变量与成员变量的通用调用格式如下。类变量:类名.类变量名成员变量:对象名.成员变量名【例3-6】类变量和成员变量测试,上一页,下一页,返回,3.3
21、 项目支撑知识,上一页,下一页,返回,3.3 项目支撑知识,程序运行结果如图3-7所示。此例中,设置l对象计数器counter为static型,要注意,若没有为该类变量初始化的话,那系统将为其设置默认值0。二、成员方法的使用成员方法通常用来描述该类对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块。1.成员方法声明在Java程序中,成员方法的声明只能在类中进行,格式如下:,上一页,下一页,返回,3.3 项目支撑知识,一修饰 返回值的类型 成员方法名(形式参数表)throw 一异常表说明部分执行语句部分,上一页,下一页,返回,3.3 项目支撑知识,成员方法的声明包括成员方法
22、头和方法体两部分,其中:成员方法头确定成员方法的名字、形式参数的名字和类型、返回值的类型、访问限制和异常处理等;方法体由包括在花括号内的说明部分和描述该方法功能实现的执行部分组成,执行部分一般由变量声明语句、赋值语句、流程控制语句、方法调用语句、返回语句等Java允许的各种语句成分组成,是程序设计中最复杂的部分,几乎会用到我们已经学习过的和将要学习的绝大多数内容。,上一页,下一页,返回,3.3 项目支撑知识,在成员方法头中:(1)修饰符。修饰符可是 public,private,protected等访问权限修饰符,也可以是static,final,native,abstract等非访问权限修饰
23、符。访问权限修饰符指出满足什么条件时该成员方法可以被访问。非访问权限修饰符指明数据成员的使用方法。具体参阅下面有关内容。(2)返回值的类型。返回值的类型用Java允许的各种数据类型关键字(例如,int,float等)指明成员方法返回结果值的数据类型。若成员方法没有返回值,则在返回值的类型处应写上void关键字。,上一页,下一页,返回,3.3 项目支撑知识,(3)成员方法名。成员方法名也就是用户遵循标识符定义规则命名的标识符。(4)形式参数表。成员方法可分为带参成员方法和无参成员方法两种。对于无参成员方法来说则无形式参数表这一项,但其后的圆括号不可省略;对于带参成员方法来说,形式参数表指明调用该
24、方法所需要的参数个数、参数的名字及其参数的数据类型,其格式为:(形式参数类型1,形式参数名1,形式参数类型2,形式参数名2,)(5)throws!异常表。它指出当该方法遇到一些方法的设计者未曾想到的异常问题时如何处理。这部分内容将在项目4中作专门介绍。,上一页,下一页,返回,3.3 项目支撑知识,2.成员方法引用成员方法的引用可有下述几种方式。方法语句:成员方法作为一个独立的语句被引用。例如,add(a,b)。方法表达式:成员方法作为表达式中的一部分被引用。例如,f3=2+add1(f1,f2)。方法作为参数:一个成员方法作为另一个成员方法的参数被引用。例如,add(a,add1(f1,f2)
25、,这里add1()是方法。通过对象来引用:即通过形如“对象名.方法名”的形式来引用对象,如Dane.ShowDog(25,25),这里Dane是对象名,ShowDog是方法名。,上一页,下一页,返回,3.3 项目支撑知识,3.形式参数与实际参数一般来说,可通过如下的格式来引用成员方法:成员方法名(实参列表)但在引用时应注意下述问题。对于无参成员方法来说,是没有实参列表的,但方法后的括弧不能省略。对于带参数的成员方法来说,实参的个数、顺序以及它们的数据类型必须与形式参数的个数、顺序以及它们的数据类型保持一致,各个实参间用逗号分隔。实参名与形参名可以相同也可以不同。,上一页,下一页,返回,3.3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 语言 项目 面向 对象 编程

链接地址:https://www.31ppt.com/p-6510243.html