面向对象编程的基本概念

上传人:宝路 文档编号:47980381 上传时间:2018-07-07 格式:PPT 页数:48 大小:1.92MB
返回 下载 相关 举报
面向对象编程的基本概念_第1页
第1页 / 共48页
面向对象编程的基本概念_第2页
第2页 / 共48页
面向对象编程的基本概念_第3页
第3页 / 共48页
面向对象编程的基本概念_第4页
第4页 / 共48页
面向对象编程的基本概念_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《面向对象编程的基本概念》由会员分享,可在线阅读,更多相关《面向对象编程的基本概念(48页珍藏版)》请在金锄头文库上搜索。

1、第三章 面向对象程序设计基本概念面向对象的程序设计(OOP)已成为现代软件开发的 必然选择。通过掌握面向对象的技术,能开发出复杂、 高级的系统,这些系统是完整健全的,但又是可扩充的 。OOP是建立在把对象作为基本实体看待的面向对象的 模型上的,这种模型可以使对象之间能相互交互作用。面向对象程序设计在一个好的面向对象程序设计语言 (OOPL)的支持下能得到最好的实现。Java就是一种优 秀的OOPL,它提供了用来支持面向对象程序设计模型所 需的一切条件。Java有自己完善的对象模型,并提供了 一个庞大的Java类库,并有一套完整的面向对象解决方 案和体系结构。 本章介绍面向对象的概念和对象建模的

2、方法,讲解 Java对象模型中的核心部分:类及类的成员。使读者学 会如何用创建和使用Java对象。 23.1 对象n 定义:一个对象就是变量和相关方法的封装,其中 变量表明对象的状态,方法表明对象的行为。软件对 象既可以模拟现实世界的对象,也可以表示抽象的概 念对象示意图33.1 对象n 封装: 能把对别的对象来说并不重要的对象的实现细 节隐蔽起来 ,在使用一个对象时,只需知道怎样引用它 的方法而无须知道它的具体实现。 n封装的优点: 模块化一个对象的源代码的编写和维护独立于其它 对象的源代码。而且,对象在系统中很容易使用。 信息隐蔽每个对象都有一个公共接口使得其它对象 可以与其通讯。但对象能

3、维护自己的私有信息和方法 并能在任何时候改变它们而不会影响使用它的其它对 象。n3.1 对象 (SmallTalk的特征)l(1) 所有东西都是对象。可将对象想象成一种新型变 量;它保存着数据,但可要求它对自身进行操作。 l(2) 程序是一大堆对象的组合;通过消息传递,各对 象知道自己该做些什么。 l(3) 每个对象都有自己的存储空间,可容纳其他对象 。l(4) 每个对象都有一种类型。根据语法,每个对象都 是某个“类”的一个“实例”。其中,“类”(Class )是“类型”(Type)的同义词。一个类最重要的特 征就是“能将什么消息发给它?”l(5)同一类所有对象都能接收相同的消息。 3.1 对

4、象 理解对象 使用对象 对象之间的关系 面向对象程序设计中的对象与客观世界中的对 象并不是完全相同的概念,他们既有联系又有区别 。所以深刻理解编程中的对象本质将有利于实践面 向对象编程和开发。 3.1.1 理解对象 对象可以视为一组相关的 操作代码和数据的组合 对象是类的实例 对象可以互相协作,共同 完成任务 通过继承、组合或封装等 方式可以产成新的对象 对象根据特定的意义和用 途有不同的划分方法 3.1.2 使用对象:设计果园系统 一个面向对象的果园系统假设我们要开发一个最简单的果园系统GardenSys。用面 向对象的方法来分析,这个果园系统至少包括园丁和水果 这两个对象。园丁的工作包括种

5、植各种水果,水果的行为 包括生长和收获,不同的水果还有不同的名称。园丁种植 水果,园丁与水果存在关联关系。 3.1.2 使用对象:对象的创建和 销毁 对象是通过类创建的,对象是类的动态实例。每个对象都有 生命期。一个对象按其生命期来分析,一般有三个阶段,出 生、活动、死亡。而我们在编程中要做的对应为:创建(初 始化)、运行、销毁。 通常,当调用构造函数时,该函数返回一个新分配内存并初 始化了的类的实例。 Java构造函数是一种比较特殊的函数,它不能由用户来指定 返回类型,只能返回所属类的类型;它也不能由用户来指定 其它名称,只能使用与类名相同的名称。即便如此,我们仍 然可以通过方法的重载(ov

6、erload)来为一个类提供多个不同 的构造函数。 在Java中没有用于销毁和清理对象的析构函数,因为Java提供 了垃圾回收(Garbage Collection,简称gc)机制负责释放对 象所占用的内存空间及相关的其它资源。 3.1.2 使用对象:对象和对象变 量 从语义上讲,对象是类的实例,类是创建对象的模板;从语言上讲,对象 也是类这种数据类型的变量,对象在内存中占有空间。但是在具体使用中 ,对象与传统的变量,也就是Java中基本类型的变量有区别。 对象是一种引用类型。对象由类创建,存储在堆中;而对象变量则是对象 的引用,存储在栈中。在程序中我们通过对象变量,也就是对象的引用, 来操纵

7、对象。 引用类型的演示:MyClass a,b;/声明MyClass类型的变量a和b,MyClass是一个Java类a = new MyClass();/变量a引用了MyClass类创建的对象实例a.myvar = 24;/给对象实例的字段myvar赋值b = a; /变量b得到的是变量a的一个引用的副本,/结果使他们都引用了同一个对象实例。a.myvar = a.myvar+1;/改变对象字段的值System.out.println(a.myvar); /此时显示a.myvar值为25System.out.println(b.myvar); /此时显示b.myvar值也为253.1.3 对象

8、之间的关系 对象之间的关系有: 合成关系(“hasa”) 继承关系(“isa”) 依赖关系(“usea”)面向对象程序设计的高效关键在于它让每个对象负责执行一组相关的任务。如果对象依 赖于其他对象负责处理的任务,那么它就去访问负责这个任务的对象。这时第一个对象 就请求第二个对象执行任务,即这个对象依赖于另一个对象。另外,一个对象不能直接 操作另一个对象内部的数据,它也不应让其他对象直接访问自己的数据。所有的通信都 应该通过方法调用来完成。通过对对象数据的封装,就可以使可重用性最大化,减少数 据依赖,并且使调试时间最小化。当然,就像面向过程语言中的模块一样,不应该让一 个对象负责过多的事情。创建

9、完成少量任务、规模较小的对象会使设计和调试过程都变 得较为简单,相反,创建数据复杂、函数众多的对象,则会使开发过程变得极为复杂。 因此理解对象之间的关系可以帮助我们设计出可重用、易维护的代码,降低耦合性,提 高灵活性。 113.2 什么是消息n 对象间相互作用和互相通讯是通过发送消息来实现 的。当对象A让对象B执行它的某个方法时,对象A就 要向对象B发送消息。123.2 什么是消息n 一个消息通常包括三部分: 接受消息的对象 接受消息的对象应执行的方法 方法所需要的参数 n消息模式的优点: 利用对象的方法来表示对象的行为,收发消息能支 持对象间所有可能的交互作用。 收发消息的对象无须在同一个进

10、程里,甚至无须在 同一个机器里。 133.3 什么是类n 定义:类是一类对象的抽象或原形,它定义了 该类对象的共同的状态和方法 n类和对象的区别: 类:是一类对象的原形,是对该类对象的抽象。 对象:是某个类的一个实例,是客观存在并能够 使用的。n类的优点:有效地支持了软件重用。程序员使用一个类可 以反复创建多个对象。第三章 面向对象程序设计的基本概念3.3 类 例如:对于园丁所种植的香蕉、橘子、葡萄等 不同的水果对象,它们有共同的名称属性, 以及种植和收获的操作,因此可将它们划归 为果园系统中的水果类。 3.3.1 什么是Java类 当用户编写自己的Java程序时,主要工作就是编写类 。当程序

11、运行时,已声明的类用来创建新对象。由类 创建对象的过程称为实例化(instantiation),每个对 象都是类的一个新实例(instance)。 类是一种抽象数据类型,在Java中类也被当作一个数 据类型来定义。类的语法结构包括关键字class、跟在 后面的类名称。如果其继承自某个基类,还需要使用 extends关键字加基类名称。 类通常不需要从头生成。相反,他们可以从其他的类 派生而来,继承祖先类的可用类成员,包括:字段、 方法等。即使是从头创建的新类也必须是继承自 Object类,只不过我们可以合法省略extends Object而 已。 class 类名 extends 基类 /类的函

12、数成员构造函数1;构造函数2;.方法1;方法2;./类的数据成员字段1;字段2;. 3.3.2 类成员 类成员包括数据成员和函数成员。 数据成员是面向对象的术语,用于表示类中的数 据变量,即Java中的字段(field)。 函数成员也是面向对象的术语,用于表示类中的 操作。Java的函数成员包括方法和构造函数: 方法是一些封装在类中的过程和函数,用于执行类的 操作,完成类的任务。 构造函数是一种特殊的方法,用于对象的创建和初始 化。3.3.3 类成员的可访问性 类成员包括数据成员和函数成员,类的每个成员都有一 个称为可访问性的属性,用来保护类成员。Java有四种 类成员的保护方式,分别为缺省的

13、、public(公有的) 、protected(保护的)、private(私有的)。 为了使程序具有良好易读的风格,建议最好在撰写类代 码时用不同的可访问性来组织类成员,并将public成员 作为对外公布的接口放在最前面,以便引起关注。限访问修饰符关键字同一个类中同一个包中派生类中其他包中 public protected 无访问 修饰符关键字private3.3.4 方法 方法是在类中定义,用来实现对象操作的过程或者函数。方 法是类的成员,并有自己的可访问性。Java程序中,方法的 声明和方法的实现是分开的。 方法与普通函数和过程不同,方法只应用于特定类及其祖先 类的对象。另外,每一个方法都

14、有一个隐含的参数,称为 this,它引用作为方法调用主体的对象。调用一个方法的语 法格式是:对象名.方法名(实际参数); 实例字段和实例方法是属于某一具体实例对象的字段和方法 ,必须先创建这个实例对象,然后才能使用这些字段和方法 。对于同一个类创建的不同的实例对象,其字段可以有不同 的取值,以反映该对象的不同状态。 除此之外,还有一种通过类就可以直接访问的静态字段和静 态方法,这种静态的字段和方法用static关键字标识,不需要 创建实例就可以通过类直接访问。 193.4 什么是继承n 定义:利用现有的类(supperclass)定义新 的类(subclass), 子类可以继承父类的属性 和方

15、法并可以增加新的属性和方法或重载父类 的方法。n对象的继承是一种在保持对象差异性的同时共 享对象相似性的复用。它是源自类的泛化机制 。这种抽象机制允许类之间共享代码,大大减 少了代码长度并且使软件易于维护。对象通过 继承,保证了实现部分紧内聚和松耦合的良好 特性。第三章 面向对象程序设计的基本概念3.4 什么是继承第三章 面向对象程序设计的基本概念继承的优点: 子类提供了基于父类公共部分的更具体的行为。利 用继承子类可以重用父类多次; 可以定义一个称为抽象类的父类来定义一般行为。 213.4 什么是继承交通工具汽车卡车旅行车 小汽车轿车 跑车 面包车基类/ 祖先类父类/子类/派生类子类/派生类

16、第三章 面向对象程序设计的基本概念3.4.1 使用继承 1.基类与派生类 Java中派生类通过extends关 键字继承基类,并通过super 关键字访问基类的构造函数和 方法。 Java中所有的类都继承了 Object类的toString方法,我 们可以重写并覆盖toString方 法,使之带有对象的具体信息 ,以便我们跟踪和调试对象。 继承关系形成了树状的类层次 结构。继承产生的派生类不能 直接访问其基类的private成 员,但所有其他基类成员通过 继承成为派生类的成员后,保 持它们原来的成员的可访问性 ,并可在派生类中使用。面积 = length width周长 = 2 (length + width)Square需要重写并覆盖基类的 calcPer

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

当前位置:首页 > 中学教育 > 教学课件

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