第3章 面向对象程序设计(上)(2)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
改变对象的属性,一般记为set方法 返回对象的属性,一般记为get方法
方法定义格式如下:
访问控制修饰 符

[public | protected | private ] [static] [final | abstract] [native] [synchronized] <方法的返回类型> <方法名>([参数列表]) [throws <异常列表>]

范例3-2 MediaAppExam.java
任务2---方法定义(续)

成员方法(Member Method)又称为功能接 口(Function Interface),简称为方法 (Method),是类对象与外界的接口,包含 了理解和操纵对象状态的代码,反应了对 象的行为特征,特别是对属性进行操作的 特征。成员方法对成员变量的操作主要体 现在以下两个方面:
类定义示例
【例】建立一个公共的最终类—日期类,其声明格式如下: public final class Date //类的声明语句 { //类体定义 private int year; //年 private int month; //月 private int day; //日 public initDate(int y,int m,int d){……} //初始化年、月、日值 的方法 public showDate(){……} //显示当前日期值的方法 }
了解Java程序的执行 掌握Java程序入口方法 借助主程序入口参数解决实际问题
【任务分析】 命令行计算器就是用户在命令行输入要参加计算的 两个数和运算符,然后程序参照用户输入的运算符 对两个数进行算术运算,最终将运算结果呈现给用 户。 本案例要求程序在启动时接收 用户的输入。那么, 程序该如何实现在程序启动过程中传递用户输入呢? 答案就是Java程序中的主方法main()。
范例:ApplicationDemo .java 在上例中涉及到两类变量:局部变量和成员 变量 局部变量: 1)局部变量是定义在方法体内部的变量, 包括方法圆括号中的参数在内。局部变量有 时被称作自动变量。局部变量存储在栈内存 中,其生命周期从方法的执行到方法方法的 结束。 2)局部变量定义以后,必须进行初始化。 3)局部变量只能在定义方法范围内使用


成员变量:成员变量是定义在类当中的变量, 又称为属性(Attribute)或数据域(Data Field), 用以表述一个对象的状态信息。成员变量跟随 对象一起存储在堆内存当中,其生命周期从 对象的实例化开始,直到对象被销毁时消失。 语法描述格式如下: [public|protected|private][static][final][transien t][volatile] <类型> <属性名>[=初始值/new<构 造方法>>];
2、类体:是类功能的主体,是JAVA语句的集合。
一般要定义三类元素:成员变量;构造方法;成员 方法。


语句块界定符{及}标识出类体的有效范围。 成员变量与成员方法为类的成员要素,简称为成员 (Member),它们又分为静态/类要素与对象/实例要素 两类。 构造方法是具有与类名相同名称的一种特殊方法,用 来创建类的对象及对成员变量进行初始化。构造方法 为可选项,当省略时,Java系统会按缺省方式定义空 白的构造方法。
一组对象能够组合成复杂的子系统。 程序中的很多对象来自于标准库,还有一些是自定义的。究竟是自己
构造对象,还是使用外部对象(可以是免费的,也可以是商业的)完全取决
于预算和时间。但只要能够实现功能,完全可以不必关系其实现的细节。 传统的结构化程序设计通过一系列的过程(即算法)来解决问题,然后 考虑存储数据的方式(即如何组织数据),而面向对象刚好相反。 对于较小规模的问题使用结构化设计比较理想,而面向对象设计更适 合解决规模较大的问题。

类与对象的关系
类与对象之间的关系,类似于数据类型与 变量之间的关系;一个类可以生成无数个 不同的对象,每个对象属性值不同,其状 态也不同。 可以用计算机模型与计算机实体之间的关 系来更形象地说明类与对象之间的关系: 将冯· 诺依曼计算机模型看作计算机类,则 不同品牌的计算机实体就对应为一个个的 实例对象。

一旦一个类的实例化对象产生,就可以通过该对象 访问类中定义的成员了。通过对象访问成员的基本 结构如下:
对象变量.属性 = 值; 对象变量.方法();
3.2 方法
任务2---方法的定义
【任务内容】给任务1中的媒体播放器类增加控制方 法 【能力目标】
掌握方法定义 学会用方法解决实际问题
【任务分析】 本案例要求在任务1案例中MediaPlayer类基础上扩 充可控制播放器的方法。通过分析任务1的案例, 我们可以得知,MediaPlayer类至少包含播放、暂 停、调节音量等方法。
范例:Calc.java 在Java中,main()方法是Java应用程序的入 口方法,也就是说,程序在运行的时候,第 一个执行的方法就是main()方法。main()方法 与其他的方法有所不同,它在程序中有固定 的语法声明: public static void main(String args[])

1、类的声明用来指定该类的访问修饰符、类的
名称、父类名称及实现接口等属性。声明类的完整 形式为: [public][abstract|final] class <类名> [extends<基类名> ]
[implements <接口列表>] 类名应该能够描述出类的 特征或作用,类名的第一 个字母通常要大写,如果 类名由多个单词组成,则 每一单词的首字母一般都 要大写

OOP的优越性

从面向过程到面向对象是程序设计技术的 一个飞跃。人们之所以要采用面向对象的 程序设计技术,其目的在于:
按照与人类习惯思维方法一致的原则开发系统 提高代码的可重用性(或者称为复用性) 提升程序的开发与运行效率
OOP的优越性(续)
提高程序的可靠性与可维护性 提高程序的可扩展性 增强程序的可控制性
【范例 3-1】 设计一个媒体播放器类
class MediaPlayer{ //音乐文件路径 public String musicFile; //播放器音量,范围:0(静音)~100 public int soundLevel; //播放器状态 public boolean isPlaying; }
范例:Application.java 通过上例,我们知道: static方法可以用类来直接调用,而无 需用从类中实例化出来的具体对象来调用, 因此这类方法被称为类的方法。 注意: static方法只能访问类中的static属性和 其他的static方法 。

3.2 方法
任务4:main方法
【任务内容】实现命令行计算器程序 【能力目标】
第3章 Java面向对象程序设计(上)
本章学习目标
掌握Java面向对象程序设计方法 利用面向对象设计方法解决实际问

3.1 类和对象
任务1:一个简单的类对象
【任务内容】设计一个音乐播放器类,并创建 一个对象。 【能力目标】
掌握面向对象程序设计方法 掌握创建类的基础语法 掌握类对象的创建 学会用面向对象设计思想解决实际问题

总之,面向对象的程序设计,能够有效分解、降 低问题的难度与复杂性,提高整个求解过程的可 控制性、可监视性和可维护性,从而获得较高的 开发效率与可靠效果
创建类
类是Java语言面向对象编程的基本要素, 用来定义对象的成员变量(数据域)与成员方 法(功能接口),描述对象的状态与行为。 Java程序将你要表达的实体或概念封装在 类中,并由类来创建诸多的实例对象。应 用程序的功能便是由各个类的实例对象, 通过调用各类方法来实现的。 JAVA的类由类的声明与类体两部分组成。
结构化程序设计中,方法是最小的功能模块。每个方法都是一个具有
输入输出的子系统。
※ 面向对象程序设计
面向对象程序设计(Object-Oriented Programming 简称OOP)是当 今主流的程序设计方法,它将软件系统看做各种对象的集合,每个对象包
含对用户公开的特定功能部分和隐藏的实现部分。对象是最小的子系统,
实例化对象

类只是一种数据类型,需要实例化对象以后才能使用 。 类类型实例化对象需要由两个步骤来完成,首先用类定义对 象变量,然后通过实例化类的对象来初始化对象变量,即:
类名称 对象变量; 对象变量 = new 类名称();
也可以一步完成,即:
类名称 对象变量 = new 类名称();
Βιβλιοθήκη Baidu
实例化对象(续)


mplayer.musicFile = "spring.mp3"; mplayer.soundLevel = 50; mplayer.isPlaying = false; } }
预备知识----程序设计方法
※ 结构化的软件开发方法
结构化的软件开发方法是20世纪80年代使用最广泛的软件开发方法。 它主要依据功能来划分软件的结构,它把软件系统的功能看做是根据给定 的输入数据,然后输出结果。 进行结构化设计时,首先考虑整个软件的功能,然后对功能进行分解, 将软件划分为多个模块,每个模块实现子功能(但功能不是一成不变的)。 模块内部还可以进一步细分,最后将所有的模块拼装起来构成整个软件系 统。软件系统可以看做多个子系统的集合。 结构化设计属于自顶向下的设计,在设计阶段就需要考虑如何实现系 统功能,因为分解功能的过程实际就是实现功能的过程。其局限性在于不 能适应用户需求的不断变化,系统结构会根据需求变化而变化。
class MediaAppExam{ //主程序 public static void main(String args[]){


//用MediaPlayer类创建播放器对象mplayer

MediaPlayer mplayer = new MediaPlayer();
//设定播放器内部的属性值

3.3 成员变量和局部变量
任务5:成员变量和局部变量
【任务内容】设计一个Person类,包含姓名、性别、年龄属性, 并通过方法访问这些属性。 【能力目标】
掌握成员变量定义 掌握局部变量定义 掌握成员变量和局部变量的区别

【任务分析】 该案例要求设计一个Person类,并且包含有姓名、性别 和年龄三个属性,属性的访问必须通过方法来完成。每个属 性的访问包括读和写,所以Person类至少包含六个属性分别 对应上述三个属性的读写操作。其中写属性操作还需要外界 提供一个参数,作为被操作属性的新值。
OOP的逻辑过程

面向对象设计分析的完整过程如图所示:
逻辑实现 类 抽象数据类 概念域
抽象
实例化
计算机世界
抽象
映射 对象 物理实体 现实域
面向对象具有以下几个重要特征:
1 3
抽象 封装与隐藏 继承 多态性
2 3
3 4 3
面向对象的基本概念

对象(Object)是一个应用系统中用来描述客观 事物的实体,是具有特定属性(数据)和行为 (方法)的基本运行单位,是类的一个特定状态 下的实例。 类(Class)是Java代码的基本组织模块,是用 以描述一组具有共同属性和行为的对象的基 本原型,是对这组对象的概括、归纳与抽象 表达,它定义了本类对象所应拥有的状态属 性集及操作这组属性的行为方法集。


{
//方法体定义
…… //用于描绘方法行为的Java语句
}
3.2 方法
任务3:静态方法
【任务内容】设计一维数组工具类,包含数组复制,打印任务 【能力目标】
掌握静态方法的定义 学会用静态方法解决实际问题

【任务分析】 本案例要求设计一个针对一维数组做操作的工具类,这些方 法对于所有一维数组来说是通用的。 作为工具类,它只是包含了操作数组的方法,而与数组没有 任何直接关系。因此,在使用操作数组的方法时并不需要对 工具类做实例化。那么如何才能在不实例化类对象的情况下 访问类内部的方法呢? Java编程语言中静态方法可以很好的解决上述问题。Java允 许开发人员在一个类内部定义直接通过类名称访问的静态方 法,而无需实例化类对象。
相关文档
最新文档