第四讲 抽象、封装与类

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java语言与面向对象程序设计
Java Program Design &Object Oriented Methodology
第四讲 抽象、封装与类 主讲教师: 王海峰 临沂大学信息学院网络教研室
gadfly7@
1
回顾上讲 • • • • Java基本数据类型 变量、常量、表达式 各种运算,优先级 程序流程控制
调节亮度
……;} }
Copyright © 2006 , Wang Hai feng, All rights reserved
13
4.2 Java 的类
import java.awt.Graphics; /**
* This class is used to draw a box .
* * @author hf_wang */ class Box { double width,height,depth; double volume( ) { return width*height*depth;
private修饰符表示该成员变量只能被该类本身访问,任何其他类都不能访 问该成员变量。 不加任何访问权限限定的成员变量属于默认访问权限。默认访问权限表示 该成员变量只能被该类本身和同一个包的类访问(friendly)。 protected修饰符表示该成员变量除可以被该类本身和同一个包的类访问外, 还可以被它的子类(包括同一个包中的子类和不同包中的子类)访问。 public修饰符表示该成员变量可以被所有类访问
Copyright © 2006 , Wang Hai feng, All rights reserved 28
16
成员变量设计: • 确定变量的数据类型:
– 运动员类的心率?Int\ float; – 银行帐号的利率?Int\ float;
• 确定变量的访问存取类型:
– 原则尽量用private,体现数据隐藏特性; – 坚决避免使用Public,打破封装性;
• 变量名尽量体现实际意义,增强可读性。
– Width,height等。Kuandu, gaodu或aa,bb
6
4.1 封装 • 封装性就是把对象的属性和服务结合成一个独立 的相同单位,并尽可能隐蔽对象的内部细节,包 含两个含义:
Copyright © 2006 , Wang Hai feng, All rights reserved
7
类实现了封装
这就样实现了封
1、把对象的全
部属性和全部服 务结合在一起, 形成一个不可分 割的独立单位
运动员类
血压 110 心率
这就样实现了封 装
对象的属性:反映 对象的状态。.
60
留有限的对外接
口使之与外部发 生联系。
跑 睡眠
对象的行为:可以改 变对象状态(又称服 务)
Copyright © 2006 , Wang Hai feng, All rights reserved
9
封装在软件工程中的意义
Copyright © 2006 , Wang Hai feng, All rights reserved 17
特恐怖的语法描述 • 声明成员变量的格式为:
[〈修饰符〉] [static] [final] [transient] 〈变量类型〉 〈变量 名〉; 〈修饰符〉有private、public和protected三种。当不加任何修饰 符时,定义为默认修饰符
3
4.1 抽象
抽象是从特定的实例中抽取共同的性质以形成一般化概
念的过程。 小孩子只认识自己的奶奶。 哲学中认识论:从具体到抽象,再从抽象到理论。 燕子,鸽子---鸟; 鸟--海鸥
Copyright © 2006 , Wang Hai feng, All rights reserved
4
4.1 抽象思想在软件设计的应用:
Copyright © 2006 , Wang Hai feng, All rights reserved 18
类--成员变量 Class Tree extend Living { private float height; private float weight; …… }
访问控制类型
Copyright © 2006 , Wang Hai feng, All rights reserved 19
12
Class Televsion {
电视机类
Private float volume = 100.00f;
音量 100.00 亮度 57.00
Private float brightness = 57.00f;
Public float adjustVolume( ){
….;}
调节音量
Public float adjustBright( ){
程序
对象
各种
问题领域 类
对象 对象
对象
Copyright © 2006 , Wang Hai feng, All rights reserved
5
4.1 抽象思想在软件设计的应用:
静态程序 员工类 商品类 超市销售问题 经理类 收银员 供货员
对象 对象 对象
程序
(运行)
对象
Copyright © 2006 , Wang Hai feng, All rights reserved
Copyright © 2006 , Wang Hai feng, All rights reserved
25
4.2 Java 的类—构造函数
public <class name> <parameters { <statements> }
修饰符 类名(同名) 参数列表
域exchangeRate被赋 予初始值.
* how much $1.00 U.S. is worth in the foreign currency
*/ private double exchangeRate; //method declarations come here }
Copyright © 2006 , Wang Hai feng, All rights reserved
)
public CurrencyConverter( double rate {
)
exchangeRate = rate;
}
Copyright © 2006 , Wang Hai feng, All rights reserved
Statements
26
4.2 对象与对象变量
–对象的生成。
New + 构造函数 例如:Date类, 生成date对象。 new Date();
}
void BoxMessage(Graphics g,int x,int y)
{ g.drawString(“宽度”+width,x,y); g.drawString(“高度”+height,x,y+15); g.drawString(“深度”+depth,x,y+30); }
}
Copyright © 2006 , Wang Hai feng, All rights reserved
• 封装的原则在软件 上的反映是:要求 使对象以外的部分 不能随意存取对象 的内部数据(属 性),从而有效的 避免了外部错误对 它的“交叉感染”, 使软件错误能够局 部化,大大减少查 错和排错的难度。
电视机
音量 100.00 亮度
遥控器 类
57.00
调节音量 调节亮度
Copyright © 2006 , Wang Hai feng, All rights reserved
电视装
对象的属性.
57.00
(即对象)。
调节音量 调节亮度
对象提供的服务
Copyright © 2006 , Wang Hai feng, All rights reserved
8
类实现了封装
2、信息隐蔽。即 尽可能隐蔽对象 的内部细节,对 外形成一个边界 〔或者说形成一 道屏障〕,只保
22
4.2 对象 • 可以把类看作一 个模板,按照类 模板所定义的一 个个具体的对象 称作类的实例, 或称作对象。
苹果类
Copyright © 2006 , Wang Hai feng, All rights reserved
23
类中生产对象实例的行为 • 生产对象的---构造函数
– C++之父Stroustrup认为编程问题来源于对变量不 适当的初始化,程序bug来源于以使用资源的不适当 清理。发明了用构造函数产生新对象,用析构函数来 销毁对象,java沿用了构造函数(构造方法或构造子)
Private float brightness = 57.00f;
Public float adjustVolume( ){
….;}
调节音量
Public float adjustBright( ){
调节亮度
……;} }
Copyright © 2006 , Wang Hai feng, All rights reserved
21
<修饰符> {
<返回值类型>
<方法名>
( <参数列表>
)
<方法体语句> }
Public void adjustVolume ( float vol ) { Volume += vol; }
Copyright © 2006 , Wang Hai feng, All rights reserved
Copyright © 2006 , Wang Hai feng, All rights reserved
2
目标 • • • • 掌握类的概念和如何设计类(重点) 掌握如何构造对象(重点) 理解抽象、封装基本面向对象思想 了解类和成员的访问控制机制(难点)
Copyright © 2006 , Wang Hai feng, All rights reserved
10
4.2 类
Import 语句
类注释
Class {
Class Name
域(成员变量 C++).
. . .
方法(C++成员函 数)
}
Copyright © 2006 , Wang Hai feng, All rights reserved 11
4.2 Java 的类
/** * This class is used to do the currency conversion * between a foreign currency and the U.S. dollar. * * @author hf_wang */ class CurrencyConverter { /**
14
类设计的两大要素: • 成员变量(或者被称为域) • 成员函数或者成员方法
Copyright © 2006 , Wang Hai feng, All rights reserved
15
Class Televsion {
电视机类
Private float volume = 100.00f;
音量 100.00 亮度 57.00
Statements
Copyright © 2006 , Wang Hai feng, All rights reserved
20
方法的功能与意义
参数列表
函数体(方法体)
返回值
奶粉 糖
冰激凌机
冰激 凌
Copyright © 2006 , Wang Hai feng, All rights reserved
Copyright © 2006 , Wang Hai feng, All rights reserved
24
4.2 构造函数的种种规矩 • 构造函数特点:
(1) 构造函数的方法名与类名相同。 (2) 构造函数没有返回类型。 (3) 构造函数的主要作用是完成对类对象的初始化工作。 (4) 构造函数一般不能由编程人员显式直接调用。 (5) 在创建一个类的新对象的同时,系统会自动调用该 类的构造函数为新对象初始化。
数据类型
类—方法(成员函数)
<修饰符> { <方法体语句> }
Modifier Return Type Method Name Parameter
<返回值类型>
<方法名>
( <参数列表>
)
public
{
void
setExchangeRagte
(
double
rate
)
exchangeRate = rate; }
成员变量 成员方法
内存
Copyright © 2006 , Wang Hai feng, All rights reserved
27
4.2 对象变量
对象变量: 对象变量可以理解为 C++中的对象指针。 就是指向具体对象。 例如:
成员变量 成员方法
deadline
内存
Date deadline;
deadline = new Date();
相关文档
最新文档