java第4章面向对象的程序设计

上传人:tian****1990 文档编号:71695018 上传时间:2019-01-21 格式:PPT 页数:122 大小:1.51MB
返回 下载 相关 举报
java第4章面向对象的程序设计_第1页
第1页 / 共122页
java第4章面向对象的程序设计_第2页
第2页 / 共122页
java第4章面向对象的程序设计_第3页
第3页 / 共122页
java第4章面向对象的程序设计_第4页
第4页 / 共122页
java第4章面向对象的程序设计_第5页
第5页 / 共122页
点击查看更多>>
资源描述

《java第4章面向对象的程序设计》由会员分享,可在线阅读,更多相关《java第4章面向对象的程序设计(122页珍藏版)》请在金锄头文库上搜索。

1、Java程序设计教程,第4章 面向对象程序设计,第4章 面向对象程序设计,4.1 面向对象的基本概念 4.2 对象和类 4.3 接口 4.4 包 本章小 结,4.1 面向对象的基本概念,4.1.1 对象 4.1.2 类 4.1.3 接口 4.1.4 包 4.1.5 方法 总结,1. 什么是抽象 ? Benjamin 说:我们把自然界分解,然后组织成不同的概念。 例如,把一对情侣抽象为2,把“空”抽象为0,这种表示方法就是一种抽象。自然界的抽象基于人们的经验。 计算机程序设计的抽象: 例如:汇编语言 - 高级语言 涉及到 2个概念:问题空间 和 解空间 。 2. 对象的概念,4.1.1 对象,4

2、.1.1 对象,问题空间:是需要用计算机去解决的问题,是问题解决者对问题的认识,这些问题是存在于现实生活中的。比如机场管理、个人信用卡关系、银行账户管理。 解空间:所谓解空间就是对问题空间中有待解决的问题进行建模的空间。这里讨论的解空间将以计算机为载体,要做的工作就是如何将现实中将要解决的问题抽象成计算机可理解并表示的单元,这个单元即为所谓的对象。所以将现实抽象成对象是个很重要的过程。,4.1.1 对象,2. 对象的概念 Thinking in Java一书中的作者Bruce Eckel 说 :什么都是对象 ,比如 一个人,一个灯泡等。 以灯泡为例:灯泡有其属性,如功率、电流、发光颜色等;也有

3、其行为,如点亮、熄灭、调亮、调暗等。 一个对象基本上有自己的名字、属性(变量)和可以提供的服务(行为,函数实现)。 图示说明: 总结:Object (对象) Class(类) ADT(抽象数据类型)。,4.1.1 对象,2. 对象的概念 举例说明: 图4-1中的矩形是一个UML(Unified Modeling Language)图,它清晰地描述了一个对象应有的基本元素。 对象名。 矩形上层外面的Type Name,这里的Type 是很严谨的定义。应该记住这样一个层次关系:Object Class ADT。 对象提供的服务(方法或函数)。 对象的一些行为所带来的效果映射成现实中的服务。在图4-

4、1的矩形框下半部分的四个行为on()、off()、brighten()、dim(),表示此处的对象提供的服务有4种,可选择打开、关闭、调亮和调暗电筒的光源。,手电筒,4.1.2 类,类:就是一组对象的集合。 面向对象的程序设计语言都用class关键字来表示类。class是一种抽象的数据类型。 类的特性:封装性、继承(Inheritance)性和多态(Polymophism)性。 封装性:类是属性和其所提供的服务(方法)的封装体。如图4-1所示。 继承性:课本P70:图4-2 和 图4-3 。 多态性:就是指同一个符号或名字在不同情况下的不同解释。例如: 除法运算符: /。 (注:多态性在此简单

5、了解,后面做详细学习),4.1.2 类,Apple,Orange,Banana,图4-2 is-a关系(继承关系),父类(基类、超类),子类(派生类),4.1.2 类,图4-3 has-a关系(组合关系),说明:上述 has-a关系不属于类的继承关系,在此仅作了解。,4.1.3 接口,接口:是和类相似的一种抽象数据类型。 接口中只给出公有的静态常量数据成员,不能定义其他的数据成员,只能定义公有的抽象方法,不能定义其他形式的成员方法。 接口表达了设计级的内容,在某种意义上,它比类更抽象,是类的一个框架,也是观察某个类的一个角度。 例如:某些电器可以遥控,“可遥控”就是一个接口。某些动物会游泳,

6、“会游泳 ” 就是一个接口。,4.1.4 包,程序包:是多个类或接口的集合,它使得大型Java程序可以具有清晰的层次化结构。 程序包、子程序包、编译单元、类或接口构成了Java程序的逻辑组织结构; 目录、子目录、文件在大多数Java运行平台下构成了Java程序的物理组织结构。 程序包的作用:使得不同的类或接口的名字层次化,减少了类或接口名字的冲突,因此Java程序的重用更为方便。 标准的 Java库分为许多程序包。常用的有: java.lang(自动引入) 、 java.applet、 java.util java.awt 、 java.io、 、 java.sql、,4.1.5 方法,1.

7、 方法的声明与调用 2. 参数调用 3. 标识符的作用域 4. 使用Java API,4.1.5 方法,1.方法的声明与调用 (1)方法的声明。 声明格式如下: 返回类型 方法名字(形式参数表) 方法体; ,格式说明:方法名字和形式参数表构成了方法的基调,所谓的基调是一种函数关系。方法名是一个Java标识符,通常根据方法所执行的功能为方法选择一个有意义的名字;形式参数表是用逗号分隔的变量声明列表,用于接收从方法调用程序传递给该方法的数据,如果该方法不需要接收数据,那么形参表可以为空。,(2) 方法的调用。,4.1.5 方法,(2)方法调用 方法调用在Java语言中是一个表达式,它的一般格式为:

8、 方法名 (实际参数表),格式说明:实际参数表也用逗号分隔,个数和形式参数表的个数相同,类型和形式参数对应兼容。注意,即使实际参数为空,形参也为空,方法名后面的圆括号也是不能省略的。在程序设计中,经常会用到嵌套调用。即方法a调用方法b,而方法b又调用了方法c,如图4-4所示。,4.1.5 方法,2. 参数调用 Java中对参数的调用有两种方式: 对于所有的基本数据类型:采用按值调用; 而对于对象:则按引用调用。 说明: (1) 按值调用:是指当程序调用一个方法的时候,该方法的形参接收的是实际参数的拷贝而不是实际参数本身,也就是说接收的只是一个值的概念。无论在方法体中对形参作什么操作,都不会改变

9、原来实参的值; (2) 按引用调用:是指传递的是对象的引用,也就是指向对象的指针,所以对形参的操作也就是对这个指针的操作。,4.1.5 方法,3. 标识符的作用域 标识符命名要求能表达变量的含义不要过于简短,这样既便于阅读也便于多人合作的开发。 标识符的作用域规则:(共4条 ,见课本P72 ) (1)方法的形式参数涵盖整个方法体。 (2)在块中声明的标识符其作用域从声明开始到该块结束。在嵌套块之前声明的标识符涵盖该嵌套块。所谓的块就是用花括号括住的一个区域,方法就是一个块,块中也可以嵌套块。程序举例说明 (3)在for语句初始化部分声明变量的作用域为for语句中的三部分以及整个循环体。,例如,

10、有以下程序段: public void scope(int x) x=x+1 ; int y=x*2 ; if ( y5 ) int z=y-x ; System.out.println( x+“,“+y+“,“+z ); y=y*2 ; int z=x+5 ; System.out.println(x+“,“+y+“,“+z ); ,说明:该规则禁止了方法体中声明的局部变量隐藏同名的形式参数,也禁止在内层块中声明的变量隐藏外层声明的同名变量。,运行程序: 如果方法传入的参数为6,那么显示应该为: 7 , 14 , 7 7 , 28 , 12,3. 标识符的作用域 (4) 类中声明的方法的作用

11、域是包含整个类的,所以方法的声明次序是无关紧要的。 注意:如果对作用域的概念比较模糊,就可能造成标识符命名冲突。例如: public void conflit( int x ) int x=0 ; int y=x+5 ; if( y4 ) int y=x-5 ; System.out.println(x+“, “+y) ; ,注意 :黄色标注的语句出现命名冲突,是错误的。,4.1.5 方法,4. 使用Java API Java语言的一个很大的优点是Java语言本身提供了非常丰富的API供程序员使用,里面包含了大量的方法,其中有很多是静态的方法。和静态变量(后面将详细讨论)的定义一样,静态方法是

12、类的方法,当需要使用类的服务时,不需要创建对象来提供服务,而可以直接指示该类来提供服务,用下面的语法来实现: Class . methods( ); 例如,Java API 提供的Math类就有很多常用的数值运算方法,参见课本P73表4-1所示。 说明:尽量去用一些现成且久经考验的工具去完成一项工作是十分明智的,API就扮演了这样一个角色。能够熟练掌握并运用Java API提供的服务,对开发程序是十分有利的。,Java程序的结构总结:,package 语句 - 0/1 个(或)必须放在文件开始。(包说明语句) import 语句 - 0/多 个,必须放在所有类定义之前。(引入语句) 公有的(p

13、ublic)类定义 - 0/1 个 类定义 - 0/多 个 接口定义 - 0/多 个,说明: 一个java源文件可以有三个顶层元素, 即: 一个包说明;任意多个引入语句;类和接口的说明。,4.2 对象和类,4.2.1 类的定义 4.2.2 对象实例的创建 4.2.3 封装、继承与多态 (1)封装 (2)继承 (3)方法的重定义和方法重载 (4)多态 (5)抽象类和最终类,本节主要学习如何用Java语言将类和对象表达出来。,【类与对象之间的关系】,类与对象的关系,一个程序是对现实世界中一些实体的建模,一个实体主要包括了属性和行为特性。 类:描述实体抽象概念的程序成分。 对象:描述实体具体个体的程

14、序成分。 【结论1】类是一组对象的集合。 数据成员(成员变量):实体的属性。 方法成员:实体的行为(操作),函数实现。 【结论2】 对象是数据和操作(代码)的封装。,【结论3】对象通过类来创建。,类结构组成图示如下一页所示。,类与对象的关系,【结论3】对象通过类来创建。,类结构组成图示如下:,4.2.1 类的定义,1. 类的声明 2. 类的访问修饰符 3. 类作用域,4.2.1 类的定义,1. 类的声明 程序举例: 类声明格式: Java程序格式说明:,4.2.1 类的定义,类的声明-程序举例 【例4-1】编写一个计算器类,可以实现加、减、乘、除四种运算。,计算器的属性(数据成员):运算结果,

15、用变量base表示,初始值规定为0。此外还表示四种运算的第一个数据。 计算器提供功能(方法成员):分别为加法运算、减法运算、乘法运算、除法运算,可以通过函数(方法)实现。这四这种运算需要两个数据才能完成相应的操作,假设第一个数据已经在属性变量base中,方法中的形参变量给出第二个数据。此外,增加一个查询运算结果(读取base)的函数。,问题分析:,4.2.1 类的定义,类的声明 【例程4-1】 SimpleCalculator.java public class SimpleCalculator private double base = 0; /数据成员,存储计算结果 public void

16、 add( double arg ) /加法运算 base = base + arg; public void minus( double arg ) /减法运算 base = base - arg; public void multiple( double arg ) /乘法运算 base = base * arg; public void devide( double arg ) /除法运算 if (arg = 0) return; /除数为0的特殊情况 base = base / arg; public double getResult( ) /取得计算结果 return base; ,4.2.1 类的定义,程序说明: 例程4-1用关键字 pu

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号