Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材 教学课件 ppt 作者 段新娥 贾宗维 2_ chap3

上传人:E**** 文档编号:89542070 上传时间:2019-05-27 格式:PPTX 页数:50 大小:4.78MB
返回 下载 相关 举报
Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  段新娥 贾宗维 2_ chap3_第1页
第1页 / 共50页
Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  段新娥 贾宗维 2_ chap3_第2页
第2页 / 共50页
Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  段新娥 贾宗维 2_ chap3_第3页
第3页 / 共50页
Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  段新娥 贾宗维 2_ chap3_第4页
第4页 / 共50页
Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材  教学课件 ppt 作者  段新娥 贾宗维 2_ chap3_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材 教学课件 ppt 作者 段新娥 贾宗维 2_ chap3》由会员分享,可在线阅读,更多相关《Java程序设计教程 工业和信息化普通高等教育“十二五”规划教材 教学课件 ppt 作者 段新娥 贾宗维 2_ chap3(50页珍藏版)》请在金锄头文库上搜索。

1、第 四章,目录,第3章 抽象和封装,3.1 面向对象程序设计,3.1.1 面向对象程序设计与面向过程程序设计 3.1.2 抽象和封装,3.1.1 面向对象程序设计与面向过程程序设计,面向过程和面向对象是两种主要的程序设计理念。面向过程是早期程序设计的主要方式,近些年来,面向对象逐渐成为程序设计的主要方式。传统的过程化程序设计通过设计一系列的过程(即算法)来求解问题。“程序=算法+数据结构”。其中,算法是第一位,而数据结构是第二位。,面向对象的程序设计(Object Oriented Programming,OOP)调换了这个次序,将数据放在第一位,然后再考虑操纵数据的算法。 程序被看作是相互协

2、作的对象集合,每个对象都是某个类的事例,所有类构成一个通过继承关系相联系的层次结构。,这些概念可以并且也已经在其他编程语言中单独出现,但只有在面向对象语言中,他们才共同出现,并以一种独特的合作方式互相协作,互相补充。,面向对象的语言通常具有以下特性: 对象生成功能 消息传递机制 类和遗传机制,实际上,软件开发的过程就是人们使用各种计算机语言将自身关心的现实世界(问题域)映射到计算机世界的过程,这个过程通常如图3-1所示。,面向对象方法的软件开发主要经历3个阶段。 面向对象的系统分析(Object-Oriented System Analysis,OOA)。系统分析的主要任务是通过对用户需求进行

3、分析确定系统的整体功能,即系统要做什么。 面向对象的系统设计(Object-Oriented System Design,OOD)。系统设计的核心是确定系统应怎样做。 面型对象的编程(Object-Oriented Programming,OOP)。,在面向对象编程模式中,开发人员先得到一个面向对象的模型,其中常见的词语是类、对象、方法、消息等,其基本过程如图3-2所示。,3.1.2 抽象和封装,1.抽象 抽象的关键是抓住事物的两个方面:属性和功能。例如,在实际生活中,我们每时每刻都与具体的实物在打交道,如我们骑的自行车、乘的公共汽车等。现在就对以上例子进行抽象,列出相关的属性和功能。 属性:

4、运行速度、发动机的功率。 功能:加速、减速、获取运行速度、设置发动机功率、获取发动机功率等。,抽象的目的:从具体的实例中抽取共有属性和功能形成一种数据类型,如Vehicle类(机动车类),那么一个具体的轿车就是Vehicle类的一个实例,即对象。一个对象将自己的数据和对这些数据的操作合理有效地封装在一起,如每辆轿车调用“减速”改变的都是自己的运行速度。,2. 封装 封装是一个面向对象的术语,就是把东西包装起来。换言之,成员变量(数据)和方法的定义都包装于类定义中,类定义可以看成是将构成类的成员变量和方法封装起来。 通过限定类成员的可见性,可以使类成员中的某些属性和方法能够不被程序的其他部分访问

5、,它们被隐藏了起来,只能在定义的类中使用,这就是面向对象中实现封装的方式。 尽管技术上允许把成员变量标识为public,但是在实际中最好把所有成员变量都设置为private,如果需要修改、设置或读取该成员变量,开发人员应该使用公共的访问方法。因此任何其他类中的代码必须通过调用方法来访问该成员变量,而不是直接使用。这样有助于提高程序的灵活性,便于代码修改和维护,可以有效避免修改代码“牵一发而动全身”。而且,在成员变量被访问时还可以避免错误,提高程序健壮性,例3-1说明了这个问题.,从图3-3可以看出,由于对width和height成员变量进行了封装,必须通过setProperty方法设置widt

6、h和height的值,而在setProperty方法中编写了验证值正确性的规则,所以不可能再设置错误的width和height的值,对成员变量进行封装,在设置成员值的方法中编写值正确性验证规则,这样可以大大提高代码的健壮性。,编译运行代码,结果如图3-3所示:,3.2 类,3.2.1 类与对象 3.2.2 类的声明 3.2.3 成员变量(实例变量和类变量) 3.2.4 方法成员 3.2.5 构造函数 3.2.6 方法的重载,3.2.1 类与对象,类是用于创建对象的模板。使用同一个类创建的每个对象都具有相似的特性。 类包含一组特定对象的所有特性。使用面向对象语言编写程序时,并不定义各个对象,而是

7、定义用于创建这些对象的类。 使用Java编写网络程序时,可能创建Modem类,它描述了所有计算机调制解调器的特征,其一些常见的特征有: 连接到计算机的串行端口 发送和接收信息 拨叫电话号码 Modem类是调制解调器的抽象概念模型。要在程序中有能够实际操纵的具体东西,必须有对象:必须使用Modem类创建Modem对象。使用类创建对象的过程叫做实例化,在程序中,可使用Modem类创建很多不同的Modem对象,其中每个对象都可以有不同的特征,如:有些调制解调器是内置的,而有些是外置的,有些使用COM1端口,有些使用COM2端口,有些有差错控制功能,有些没有虽然有这么多的不同,两个Modem对象仍有足

8、够多的共性,使其被视为相关的对象。图3-4显示了Modem类及使用该模板创建的几个对象。,使用Java可以创建一个类来表示所有的命令按钮可单击的矩形框,出现在窗口、对话框和程序图形用户界面的其他部分。 开发CommandButton类时,可以定义如下特征: 显示在按钮上的文本 按钮的大小 按钮的外观,如是否有三维阴影效果 CommandButton类还可以定义按钮的行为,如: 按钮需要单机还是双击 是否完全忽略鼠标单击 被单击后执行什么操作,3.2.2 类的声明,当用户创建一个Java程序时,可以通过类声明来定义类,然后使用类来创建用户需要的对象。类声明是用来创建对象模板的抽象规格说明。 类的

9、实现包括两部分:类声明和类体。基本格式为: class 类名 类体的内容 class是关键字,用来定义类。“class 类名”是类的声明部分,类名必须是合法的Java标识符。两个大括号之间的内容是类体,类体中可以包含方法或成员变量。 例如下面代码定义了一个简单的类Student。 class Student ,3.2.3 成员变量(实例变量与类变量),定义类类之后,就可以在类体中声明两种类的成员,成员变量与成员方法。成员变量又可细分为实例变量和类变量。 1.实例变量的使用 实例变量就是类的属性,类定义中的属性指定了一个对象区别于其他对象的值。例如,学生类的定义中包括年龄、姓名和班级这些属性,每

10、个对象的这些属性都有自己的值。所有由类定义建立的对象共享类的方法,但是,它们都拥有各自属性变量的副本。 2. 实例变量的类型 实例变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型;引用类型:数组、对象和接口(对象和接口见后续内容)。例如:,class Factory float a; Workman zhang; class Workman double x; Factory类的实例变量a是类型为float的数组,zhang是Workman类声明的变量,即对象。 3. 实例变量的有效范围 实例变量在整个类内都有效,其有效性与它在类体中书写的先后位置无关。,4.

11、编程风格 (1)一行只声明一个变量。我们已经知道,尽管可以使用一种数据类型,并用逗号分隔来声明若干个变量 (2)变量的名字除了符合标识符规定外,名字的首单词的首字母使用小写;如果变量的名字由多个单词组成,从第2个单词开始的其他单词的首字母使用大写。 (3)变量名字见名知意,避免使用诸如m1,n1等作为变量的名字,尤其是名字中不要讲小写的英文字母i和数字1相邻接,人们很难区分“ii”和“11”。 5. 类变量 用关键字static给予修饰的称作类变量,类变量也成为static变量,静态变量,例如:,class Dog float x; /实例变量 static int y; /类变量 Dog类中

12、,x是实例变量,而y是类变量。需要注意的是,static需放在变量的类型的前面。 6. 实例变量和类变量的区别 (1)不同对象的实例变量互不相同 (2)所有对象共享类变量 (3)通过类名直接访问类变量,3.2.4 方法成员,我们已经知道一个类的类体由两部分组成:变量的声明和方法的定义。方法的定义包括两部分:方法声明和方法体。一般格式为: 返回值类型 方法名(参数序列) 方法体 其中返回值类型是指调用方法后返回数据的类型,参数序列给出了方法接受信息的类型和名称,方法体则是该方法功能的实现。,1. 参数序列 参数序列指定要传递给方法什么样的信息,规则如下。 (1)参数可以是Java中的任何类型,包

13、括基本数据类型、对象引用类型。 (2)每个参数必须包括类型与变量标识符,这样就可以在方法体中使用接收到的信息,例如参数为两个int型,名称分别为a 和b。若有多个参数,则用逗号将其分隔,如“int a,int b”。 方法的参数实际上也是一种局部变量,其作用域为整个方法体。 2. 方法体 方法声明之后的一对大括号“”,“”以及之间的内容称作方法的方法体。方法体的内容包括局部变量的声明和Java语句,即方法体内可以对成员变量和该方法体中声明的局部变量进行操作。在方法体中声明的变量和方法的参数被称作局部变量,和类的成员变量不同的是,局部变量只在声明它的方法内有效,而且与其声明的位置有关。方法的参数

14、在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。如果局部变量的声明是在一个复合语句中,那么该局部变量的有效范围是该复合语句,即仅在该复合语句中有效,如果局部变量的声明是在一个循环语句中,那么该局部变量的有效范围是该循环语句,即仅在该循环语句中有效。 另外,return这个关键字包含2层意思: (1)代表了已经完成方法功能,可以离开此方法返回。 (2)如果该方法产生一个值需要返回,则这个值需要放在return语句的后面。,3. 返回值类型 返回值类型指定了该方法返回结果的类型,可以是基本数据类型,也可以是对象引用类型。当然在没有返回值的方法中,也需要使用关键字“viod”指明该方法

15、无返回值。关于return语句后边的返回值和方法的返回值类型之间有如下5条规则。 (1)可以在具有对象引用返回类型的方法中返回null,但当基本数据类型作为返回类型时,则不可以返回null。 (2)对象也是完全合法的返回值类型,如数组。 (3)在具有基本数据返回类型的方法内,可以返回任何值,只要其能够自动转换为返回值类型。例如返回值类型为double,返回整数4是可以的,但若返回值类型为int,返回12.43则报错。 (4)一定不能在具有“void”返回类型的方法中返回任何内容。 (5)在具有对象引用返回类型的方法内,可返回任何类型的对象引用,只要返回的引用与返回类型相同或可自动转换为返回类型

16、即可。,4. 区分成员变量和局部变量 如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。 方法中的局部变量的名字如果与成员变量的名字相同,那么方法就隐藏了成员变量,如果想在该方法中使用被隐藏的成员变量,必须使用this(后续会详细讲解this关键字)。 5. 需要注意的问题 对成员变量的操作只能放在方法中,方法可以对成员变量和该方法体中声明的局部变量进行操作。在声明成员变量是可以同时赋予初值。,3.2.5 构造函数,构造函数是一种特殊的方法,它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个可用的对象。在例3-4中,利用构造函数初始化汽车的各项参数。,多个构造函数可看做方法的重载,只能根据参数的类型匹配合适的构造函数。但构造方法与普通方法不同,是一种特殊的方法

展开阅读全文
相关资源
相关搜索

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

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