java_03

上传人:n**** 文档编号:82591334 上传时间:2019-02-24 格式:PPT 页数:65 大小:663.50KB
返回 下载 相关 举报
java_03_第1页
第1页 / 共65页
java_03_第2页
第2页 / 共65页
java_03_第3页
第3页 / 共65页
java_03_第4页
第4页 / 共65页
java_03_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《java_03》由会员分享,可在线阅读,更多相关《java_03(65页珍藏版)》请在金锄头文库上搜索。

1、1,主讲教师: 张 珑,Java语言程序设计,2, Java语言程序设计,第二章: 面向对象程序设计,3,2.1 面向对象的程序设计方法-1,一、面向过程的程序设计方法 以前,人们把程序看成是处理数据的一系列过程。过程或函数定义为一个接一个执行的一组指令。数据与程序分开存储,编程的主要技巧在于追踪哪些函数调用哪些函数;哪些数据发生了变化。为解决其中可能存在的问题,结构化编程(1969年)应运而生。 结构化程序设计的主要思想是功能分解并逐步求精。当一些任务十分复杂以至无法描述时,可以将它拆分为一系列较小的功能部件,直到这些自完备的子任务小到易于理解的程度。,4,2.1 面向对象的程序设计方法-2

2、,一、面向过程的程序设计方法 例如,计算一个公司中每一个职员的平均工资是一项较为复杂的任务。可以将其拆分为以下的子任务: (1)计算职员总数 (2)计算工资总额 (3)用工资总额除以职员总数 计算工资总额本身又可分为一系列子任务: (1)找出每个职员的档案 (2)读出工资数额 (3)把工资加到部分和上 (4)读出下个职员的档案,5,2.1 面向对象的程序设计方法-3,一、面向过程的程序设计方法 类似地,读出每个职员档案中的记录又可以分解为一系列子任务: (1)打开职员的档案 (2)找出正确记录 (3)从磁盘读取数据 结构化程序设计成功地为处理复杂问题提供了有力的手段。然而到80年代末,它些缺点

3、越来越突出。 当数据量增大时,数据与处理这些数据的方法之间的分离使程序变得越来越难以理解。对数据处理能力的需求越强,这种分离所造成的负作用越显著。,6,2.1 面向对象的程序设计方法-4,一、面向过程的程序设计方法 采用结构化程序设计方法的程序员发现,每一种相对于老问题的新方法都要带来额外的开销,与可重用性相对,通常称这为重复投人。基于可重用性的思想是指建立一些具有已知特性的部件,在需要时可以插人到程序之中。这是一种模仿硬件组合方式的做法,当工程师需要一个新的晶体管时,他不用自己去发明,只要到仓库去找就行了。对于软件工程师来说,在面向对象程序设计出现之前,一直缺乏具备这种能力的工具。,7,2.

4、1 面向对象的程序设计方法-5,二、面向对象的程序设计方法 面向对象程序设计的本质是把数据和处理数据的过程当成一个整体对象。Java全面支持面向对象程序设计。面向对象程序设计的实现需要封装和数据隐藏技术,需要继承和多态性技术。,8,2.1 面向对象的程序设计方法-6,二、面向对象的程序设计方法 1封装和数据隐藏 当一个技术员要安装一台电脑时,他将各个设备组装起来。当他想要一个声卡时,不需要用原始的集成电路芯片和材料去制作一个声卡,而是来到电脑公司,购买一个他所需要的某种功能的声卡。技术员关心的是声卡的功能,并不关心声卡内部的工作原理。声卡是自成一体的。这种自成一体性称为封装性。无需知道封装单元

5、内部是如何工作就能使用的思想称为数据隐藏。,9,2.1 面向对象的程序设计方法-7,二、面向对象的程序设计方法 声卡的所有属性都封装在声卡中,不会扩展到声卡之外。因为声卡的数据隐藏在该电路板上。技术员无需知道声卡的工作原理就能有效地使用它。 Java通过建立 类 来支持封装性和数据隐藏。完好定义的类一旦建立,就可看成是完全封装的实体,可以作为一个整体单元使用。类的实际内部工作应当隐藏起来,使用完好定义的类的用户,不需要知道类是如何工作的,只要知道如何使用它就行。,10,2.1 面向对象的程序设计方法-8,二、面向对象的程序设计方法 2继承和重用 要制造新的电视机,可以有两种选择:一种是从草图开

6、始,另一种是对现有的型号加以改进。也许现有的型号已经令人满意,但如果再加一个功能,会更加完美。电视机工程师肯定不想从头开始,而是希望制造另一种新型电视机,该机是在原有的型号基础上增加一组电路做成的。新的电视机很快就制造出来了,被赋予一种新的型号,于是新型电视机就诞生了。这是继承和重用的实例。,11,2.1 面向对象的程序设计方法-9,二、面向对象的程序设计方法 Java采用继承支持重用的思想,程序可以在扩展现有类型的基础上声明新类型。新子类是从现有类型派生出来的,称为派生类。新型电视机是在原有型号的电视机上增加若干种功能而得到的,所以新型电视机是原有电视机的派生,继承了原有电视机的所有属性,并

7、在此基础上增加了新的功能。,12,2.1 面向对象的程序设计方法-10,二、面向对象的程序设计方法 3多态性 通过继承的方法构造类,采用多态性为每个类指定表现行为。例如,学生类应该有一个计算成绩的操作。大学生继承了中学生,或者说是中学生的延伸。对于中学生,计算成绩的操作表示语文、数学、英语等课程的计算,而对于后继的大学生,计算成绩的操作表示高等数学、计算机、普通物理等课程的计算。,13,2.2 什么是对象-1,对象是一些相关的变量和方法的软件集。软件对象经常用于模仿现实世界中我们身边的一些对象。对象是理解面向对象技术的关键。你在学习之前可以看看现实生活中的对象,比如狗、桌子、电视、自行车等等。

8、你可以发现现实世界中的对象有两个共同特征:它们都有状态和行为。比如狗有自己的状态(比如名字、颜色等等)和行为(比如摇尾巴、汪汪叫等等)。同样自行车也有自己的状态(比如当前档位、两个轮子等等)和行为(比如刹车、加速、减速以及改变档位等等)。,14,2.2 什么是对象-2,软件对象实际上是现实世界对象的造型,因为它同样有状态和行为。一个软件对象利用一个或者多个变量来维持它的状态。变量是由用户标识符来命名的数据项。软件对象用它的方法来执行它的行为。方法是跟对象有关联的函数(子程序)。 你可以利用软件对象来代表现实世界中的对象。你用可以控制电子自行车的程序来代表现实世界的自行车。同样你可以使用软件对象

9、来造型抽象的概念,比如,事件是一个用在GUI窗口系统的公共对象,它可以代表用户按下鼠标按钮或者键盘上的按键的反应。,15,2.2 什么是对象-3,如下图是一个软件对象的公共可视代表。,16,2.2 什么是对象-4,软件对象的状态和行为都可以用在对象中的变量和方法来表达。构造现实世界的自行车的软件对象,要有指示自行车的当前状态的变量:速度为20mph,它的当前档位为第三档。这些变量就是我们熟知的实例变量,因为它们包含了用于特殊自行车对象的状态,并且在面向对象技术中,特殊的对象称为实例。 如下图所示,是作为软件对象的自行车造型。,17,2.2 什么是对象-5,软件对象的自行车造型,18,2.3 什

10、么是消息-1,软件对象之间进行交互作用和通讯是利用消息的。单一的一个对象通常不是很有用的。相反,一个对象通常是一个包含了许多其它对象的更大的程序或者应用程序。通过这些对象的交互作用,程序员可以获得高阶的功能以及更为复杂的行为。你的自行车如果不使用它的时候,它就是一堆铝合金和橡胶,它没有任何的活动。而只有当有其它的对象来和它交互的时候才是有用的。软件对象与其它对象进行交互与通讯是利用发送给其它对象来实现的。当对象A想对象B来执行一个B中的方法,对象A就会消息给对象B。如下图所示。,19,2.3 什么是消息-2,20,2.3 什么是消息-3,有时候,接收的对象需要更多的信息以至于它可以正确知道该如

11、何做。比如,当你想改变自行车的齿轮,你就必须指出哪个齿轮。一个消息由三个部分组成: 1被寻址消息的对象(YourBicycle) 2要执行方法的名字(changeGears) 3这个方法需要的所有参数(lowerGear),21,2.3 什么是消息-4,22,2.4 什么是类-1,类实际上是对某种类型的对象定义变量和方法的原型。在现实世界中,你经常看到相同类型的许多对象。比如 ,你的自行车只是现实世界中许多自行车的其中一辆。使用面向对象技术,我们可以说你的自行车是自行车对象类的一个实例。通常,自行车有一些状态(当前档位、两个轮子等等)以及行为(改变档位、刹车等等)。但是,每辆自行车的状态都是独

12、立的并且跟其它自行车不同。当厂家制造自行车的时候,厂商利用了自行车共有的特性来根据相同的蓝图制造许多自行车。如果制造一辆自行车就要产生一个新蓝图,那效率就太低了。,23,2.4 什么是类-2,在面向对象软件中,同样地,可以让相同种类地许多对象来共有一些特性,比如矩形、雇员记录、视频夹等等。就象自行车制造商人,你可以利用相同种类的对象是相似的事实并且你可以为这些对象创建一个蓝图。对对象的软件蓝图叫做类。自行车的类需要定义一些实例变量来包括当前档位、当前速度等等。这个类将为实例方法定义和提供实施方法,它允许骑车者改变档位、刹车以及改变脚踏板的节奏,如下图所示:,24,2.4 什么是类-3,25,2

13、.4 什么是类-4,当你创建了自行车类以后,你可以从这个类创建任意个自行车对象。当你创建了一个类的实例后,系统将为这个对象和的实例变量分配内存。每个实例将给所有实例变量的副本定义在类中。如下图所示:,26,2.4 什么是类-5,27,2.4 什么是类-6,28,2.4 什么是类-7,除了实例变量,类还要定义类的变量。类变量包含了被类所有实例共享的信息。比如,假设所有的自行车有相同的档位数。在本例子中,要定义一个实例变量来容纳档位数。每一个实例都会有变量的副本,但是在每一个实例中数值都是相同的。在这样的情况下,你可以定义一个类变量来包含档位数,这样所有的类的实例都共享这个变量。如果一个对象改变了

14、变量,它就为改变那个类的所有对象。类同样可以定义类方法。你可以直接从类中调用类方法,然而你必须在特定的实例中调用实例方法。如下图所示。,29,2.4 什么是类-8,30,2.4 什么是类-9,31,2.5 什么是继承 -1,一个类可以从它的父类继承状态和行为。继承为组织和构造软件程序提供了一个强大的和自然的机理。 总得说来,对象是以类得形式来定义得。你可能现在已经可以从它类知道许多对象了。即使你不知道,如果我告诉你它是一辆自行车,你就会知道它有两个轮子和脚踏板等等。面向对象系统就更深入一些了,它允许类在其它类中定义。比如,山地自行车、赛车以及串座双人自行车都是各种各样的自行车。在面向对象技术中

15、,山地自行车、赛车以及串座双人自行车都是自行车类的子类。同样地,自行车类是山地自行车、赛车以及串座双人自行车的父类。这个父子关系可以如下图所示:,32,2.5 什么是继承 -2,33,2.5 什么是继承 -3,每一个子类从父类中继承了状态。山地自行车、赛车以及串座双人自行车共享了这些状态:比如速度等。同样,每一个子类继承类从父类的方法,山地自行车、赛车以及串座双人自行车共享了这些行为:刹车、改变脚踏速度等等。然而,子类不能受到父类提供的状态和行为的限制。子类可以增加变量和方法到从父类继承而来的变量和方法。比如,串座双人自行车有两个座位,这是它的父类没有的。子类同样可以重载继承的方法并且为这些方

16、法提供特殊执行方法。比如 ,如果你有一个山地自行车有额外 的齿轮设置,你就可以重载改变齿轮方法来使骑车者可以使用这些新的齿轮。,34,2.5 什么是继承 -4,下面说说我们为什么要使用继承,它到底有哪些好处呢?好处是有的: 1、子类提供了特殊的行为,这是在父类中所没有的。通过使用继承,程序员可以多次重新使用在父类中的代码。 2、程序员可以执行父类(称为抽象类)来定义总的行为。这个抽象的父类可以定义并且部分执行行为,但是绝大多数的父类是未定义和未执行的。其它的部分由程序员来实现特殊的子类。,35, Java语言程序设计,第三章:Java语言基础,36,3.1 引入,我们先看看一个具体例子,给你们有个先入为主的感觉。 程序要求: 这是一个BasicsDemo程序,它的作用是从1加到10,并显示结果: public class BasicsDemo public static void main(String args) int sum = 0; for (int cur

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

当前位置:首页 > 大杂烩/其它

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