Java语言程序设计 教学课件 ppt 作者 清华大学计算机与信息 3-面向对象程序设计(上)

上传人:E**** 文档编号:89396983 上传时间:2019-05-24 格式:PPT 页数:118 大小:812KB
返回 下载 相关 举报
Java语言程序设计 教学课件 ppt 作者 清华大学计算机与信息 3-面向对象程序设计(上)_第1页
第1页 / 共118页
Java语言程序设计 教学课件 ppt 作者 清华大学计算机与信息 3-面向对象程序设计(上)_第2页
第2页 / 共118页
Java语言程序设计 教学课件 ppt 作者 清华大学计算机与信息 3-面向对象程序设计(上)_第3页
第3页 / 共118页
Java语言程序设计 教学课件 ppt 作者 清华大学计算机与信息 3-面向对象程序设计(上)_第4页
第4页 / 共118页
Java语言程序设计 教学课件 ppt 作者 清华大学计算机与信息 3-面向对象程序设计(上)_第5页
第5页 / 共118页
点击查看更多>>
资源描述

《Java语言程序设计 教学课件 ppt 作者 清华大学计算机与信息 3-面向对象程序设计(上)》由会员分享,可在线阅读,更多相关《Java语言程序设计 教学课件 ppt 作者 清华大学计算机与信息 3-面向对象程序设计(上)(118页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计(上),面向对象基本概念 抽象与 封装 类定义 重载 继承 多态,认识空间解空间,现实世界,认识空间 解空间,计算机解决客观世界中问题的本质,借助于某种程序设计语言的规定,将客观世界中待处理的对象抽象为程序中的对象(称为解空间对象), 然后利用程序的功能对解空间对象进行处理,并将处理结果映射为问题的解。,现实世界中的对象解空间对象,机器语言,汇编语言,面向对象语言,高级语言,程序设计语言,解空间对象,解空间对象是什么模型,要取决于所使用的程序设计语言: 汇编语言提供的对象 存储单元。 面向过程的高级语言所提供的对象 各种预定义类型的变量、数组、记录和文件等。 面向对象语言提供的

2、对象 对象 一旦提供了某种解空间对象,也就隐含规定了允许对该类对象施加的操作。,面向过程语言,面向过程语言语言中所提供的解空间对象实质上仅仅是描述实际对象的属性数据,而缺少对象的行为。 只有从外部对对象施加操作,才能模拟对象的行为。 面向过程的程序把数据和处理 人为地分开,会增加软件开发 的难度,也不利于为现实世界 中的对象建模。,数据区,程序区,面向对象观点,人们在观察和分析周围的事物时,经常是用一种面向对象的观点看待问题。 我们周围的世界是由各式各样的对象组成: 例如学校中,学生、教师、课程、班级、教室、计算机、电视机、空调等都是对象。 对象可以是人,可以是物,可以是具体的事物,也可以是抽

3、象的概念。 我们周围所发生的一切,无非是对象相互作用的结果。,客观世界中对象的属性,客观世界中对象: 状态(数据) 静态属性 行为(功能) 动态属性 对象既含数据又含功能,因此具有自身处理数据的能力 能动的主体。 对象是一种看问题的观点,是对现实世界各种元素的一种抽象。 对象被认为是迄今为止最接近真实事物的数据抽象。,电梯举例,面向对象语言,面向对象语言中的解空间对象比较好地模拟了现实世界中的对象。 将对象定义为数据及可以施加在这些数据上的操作所构成的统一体。 该对象与传统的数据有本质的区别, 传统数据被动地等待外界对它的操作。 对象进行处理的主体。 可以通过向对象发“消息”来请求对象主动地执

4、行它的某些操作,处理它的内部数据,完成对象所具有的某项功能。,面向对象程序中的对象例,int x ; 变量x Integer x ; 对象x int compareTo(Integer anotherInteger) double doubleValue() float floatValue() int intValue() long longValue() short shortValue() String toString(),x.toString(),对 象 x 所 具 有 的 功 能,面向过程面向机器,在面向过程的程序设计中,核心是: 数据结构是利用计算机的离散逻辑来量化表达需要处理的

5、数据对象; 而算法则是研究如何快捷、高效地组织解决问题的具体过程。 面向过程本质上是面向机器,而不是面向问题。,算法数据结构,面向对象程序设计,面向对象的程序设计的编程思路 不是把程序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作又彼此独立的对象的集合。 每个对象就像一个微型程序,有自己的数据、操作和功能。 在许多系统中,解空间中的对象可以直接模拟我们实际接触的对象。,面向对象技术意义,减少人脑和电脑之间的隔阂 长期以来,人与计算机之间仍存在着较大的隔阂: 人认识问题时的认识空间和计算机处理问题时的方法空间的不一致; 而面向对象技术有助于减小这一隔阂、并使这两个空间尽量趋

6、于一致。 软件复用 类库的使用(可重用的标准化的模块) 类的继承 面向对象技术应用的普遍性,面向对象技术-人人受益,for manager 更迅速和更经济地开发和维护软件系统。 for analysts and designers 模块化的过程将变的简单,并能获得一个清晰的、易于管理的设计方案。 For programmers 清晰的对象模型,丰富的面向对象开发工具及类库使得编程变为一件饶有兴趣的工作。程序员明显感到编程效率的提高。,抽象,所有编程语言都提供“抽象”功能。 你所能解决问题的复杂程度取决于抽象的种类和质量。 汇编语言对于计算机(机器语言)是一步很小的抽象。 过程化语言(高级语言)

7、对于汇编语言的抽象迈了一大步。但你所考虑的仍然是机器的结构而非问题的结构。 面向对象方法为程序员提供了一种表示问题空间元素的全新的方法,而且不受问题类型的约束。,抽象,问题空间元素方法空间中的表示:对象 “对象”是现实世界的实体或概念在计算机逻辑中的抽象表示。 面向对象的程序设计是以要解决的问题中所涉及到的各种对象为主要考虑因素。 面向对象语言更加贴近人的思维方式。OOP允许你用问题空间中的术语来描述问题。 在面向对象程序设计中还需要一些其他对象,而它们没有在问题空间的对应体。,对象,“对象”就象是一台小“计算机”: 对象有状态 对象有你要求它执行的操作 现实世界中的对象: 它们都有自己的状态

8、 它们又都有自己的行为 程序中的对象 用属性表示状态 用方法(代码)实现行为,对象与过程,考虑对象 考虑过程 :前者更有意义 设计对象 设计过程:前者更富挑战性,尤其是设计可重用的对象。 面向对象的程序设计和问题求解力求符合人们日常自然的思维习惯,降低分解问题的难度和复杂性,提高整个求解过程的可控制性、可监测性和可维护性,从而达到以较小的代价和较高的效率获得较满意效果的目的。,封装信息隐藏,“ 封装”是一种组织软件的方法。其基本思想是把客观世界中联系紧密的元素及相关操作组织在一起,使其相互关系隐藏在内部,而对外仅仅表现为与其他封装体间的接口。从而构造出具有独立含义的软件实现。 封装并不是一个新

9、的概念,但在面向对象的程序设计中提出了一种全新的封装方法类,封装信息隐藏,每个类里都封装了相关的数据和操作。在实际的开发过程中,类多用来构建系统内部的模块。 由于封装特性把类内的数据保护得很严密,模块与模块间仅通过严格控制的界面进行交互,使它们之间耦合和交叉大大减少,从而降低了开发过程的复杂性,提高了效率和质量,减少了可能的错误,同时也保证了程序中数据的完整性和安全性。,封装软件复用,封装使得对象: 对内成为一个结构完整、可自我管理、自我平衡、高度集中的整体。 对外则是一个功能明确、接口单一、可在各种合适的环境下都能独立工作的有机的单元。 类的封装特性使得类可重用性大为提高,这样的有机单元特别

10、适宜构建大型标准化的应用软件系统,可以大幅度地提高生产效率。,对象与类,对象与类,计算机世界,徐军,徐军(对象),学生(类),创,建,现实世界,概念世界,学生,抽,象,定义类,对应,继承,“ 类”具有继承的功能。 B类继承了A类,就是继承了A类公共的属性与方法。(称A类为父类,B类为子类) 继承类的复用 在一般情况下,要定义一个新类,只需继承一个父类,再描述一下它与父类的不同之处就行了。 继承性使得用户可以在原有类的基础上定义自己的新类。,类定义属性说明,定义Employee类 class Employee String name ; int age ; float salary ; 创建一个

11、Employee类的对象(职工对象) Employee e1 = new Employee( ) ; e1.name=“张立” ; e1.age=21; e1.salary = 528.37F ;,final 类型 常量名=值,实例变量成员变量 其生命周期与对象存在的时间相同。,类定义方法说明,为Employee类增加打印方法将数据和代码封装在一个单一的实体中。 class Employee String name; int age; float salary ; void print() System.out.println(name + “ 年龄为:“ + age + “ 月薪为: “ +

12、 salary ) ; /print() 方法 /class,对象方法的含义,Employee emp = new Employee( ) ; emp.name=“张立“ ; emp.age=21; emp.salary = 528.37F ; 一旦对象被建立并被初始化,就可以调用该方法打印这个对象的数据。 emp.print() ; 对象emp执行print 方法操作自己的数据;而不是从外部操作对象的数据。 向对象发消息,让对象做某件事。,类与对象例,import java.io.*; public class Test public static void main(String args

13、) Employee emp = new Employee( ) ; emp.name=“张立“ ; emp.age=21; emp.salary = 528.37F ; emp.print() ; /main /Test class Employee String name; int age; float salary ; void print() System.out.println(name + “ 年龄为:“ + age + “ 月薪为: “ + salary ) ; /print() 方法 /Employee,对象的几个特征,Everything is an object 原则上说,

14、你可以将所要解决的问题中的任何一个“概念组件”在程序中表示为一个对象。 对象类似一个记录,可以存储数据,但你还可以让它执行某些操作(作用在它自身的数据上)。 A program is a bunch of objects telling each other what to do by sending messages 所谓 对一个对象发信息,就是调用该对象的一个方法。 Every object has a type 每一个对象都是某个类的一个实例。 对象+消息,信息隐藏封装,属性的访问权限 private public 默认(相当于package 使用private 修饰符修饰属性后,就不能

15、从对象的外部直访问这些属性(类内方法可以访问) ,而只能通过该类的方法来操作这些属性。 私有属性公有方法 方法可以保护数据(做各种合法性检查)。 使得代码可维护性好(代码可变,接口不变),信息隐藏封装(电梯例),电梯类定义(没有体现封装的类定义) class BadElevator public boolean doorOpen=false; /表示电梯门的状态 public int floor = 1; /表示电梯停靠层数 public final int TOP_FLOOR=5; /定义电梯最髙层 public final int BOTTOM_FLOOR=1; /定义电梯最低层 ,电梯操

16、作(操作BadElevator类的对象) public class test1 public static void main(String args) BadElevator e1 = new BadElevator(); /创建一个电梯对象 e1.floor-; / 到地下室了 e1.floor+; e1.floor=7; / 没有7层 e1.doorOpen=true; / /通过改变对象属性值实现开门动作 e1.doorOpen=false; /关门 e1.floor=1; / 到第一层 e1.doorOpen=true; / 门开,住户上下电梯。 e1.floor+; / 门还没关,电梯就开了。 e1.door

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

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

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