第3章 面向对象程序设计(上)课件.ppt
《第3章 面向对象程序设计(上)课件.ppt》由会员分享,可在线阅读,更多相关《第3章 面向对象程序设计(上)课件.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 Java面向对象程序设计面向对象程序设计(上上) 本章学习目标本章学习目标v掌握掌握Java面向对象程序设计方法面向对象程序设计方法v利用面向对象设计方法解决实际问利用面向对象设计方法解决实际问题题任务任务1:一个简单的类对象:一个简单的类对象【任务内容任务内容】设计一个音乐播放器类,并创建一个对象。【能力目标能力目标】v掌握面向对象程序设计方法v掌握创建类的基础语法v掌握类对象的创建v学会用面向对象设计思想解决实际问题3.1 类和对象类和对象【范例范例 3-1】 设计一个媒体播放器类设计一个媒体播放器类 class MediaPlayer/音乐文件路径public String
2、musicFile;/播放器音量,范围:0(静音)100public int soundLevel;/播放器状态public boolean isPlaying;vclass MediaAppExam /主程序vpublic static void main(String args)v /用MediaPlayer类创建播放器对象mplayervMediaPlayer mplayer = new MediaPlayer(); /设定播放器内部的属性值v mplayer.musicFile = spring.mp3; mplayer.soundLevel = 50;vmplayer.isPlayi
3、ng = false;v v 结构化的软件开发方法结构化的软件开发方法是20世纪80年代使用最广泛的软件开发方法。它主要依据功能来划分软件的结构,它把软件系统的功能看做是根据给定的输入数据,然后输出结果。进行结构化设计时,首先考虑整个软件的功能,然后对功能进行分解,将软件划分为多个模块,每个模块实现子功能(但功能不是一成不变的)。模块内部还可以进一步细分,最后将所有的模块拼装起来构成整个软件系统。软件系统可以看做多个子系统的集合。结构化设计属于自顶向下的设计,在设计阶段就需要考虑如何实现系统功能,因为分解功能的过程实际就是实现功能的过程。其局限性在于不能适应用户需求的不断变化,系统结构会根据需
4、求变化而变化。结构化程序设计中,方法是最小的功能模块。每个方法都是一个具有输入输出的子系统。预备知识-程序设计方法 面向对象程序设计 面向对象程序设计(Object-Oriented Programming 简称OOP)是当今主流的程序设计方法,它将软件系统看做各种对象的集合,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。对象是最小的子系统,一组对象能够组合成复杂的子系统。程序中的很多对象来自于标准库,还有一些是自定义的。究竟是自己构造对象,还是使用外部对象(可以是免费的,也可以是商业的)完全取决于预算和时间。但只要能够实现功能,完全可以不必关系其实现的细节。传统的结构化程序设计通过一
5、系列的过程(即算法)来解决问题,然后考虑存储数据的方式(即如何组织数据),而面向对象刚好相反。对于较小规模的问题使用结构化设计比较理想,而面向对象设计更适合解决规模较大的问题。OOP的逻辑过程 v面向对象设计分析的完整过程如图所示:现实域现实域抽象抽象类类对象对象实例化映射抽象数据类抽象数据类物理实体物理实体逻辑实现概念域概念域计算机世界计算机世界面向对象具有以下几个重要特征:抽象封装与隐藏继承多态性 33313234面向对象的基本概念 v对象(Object)是一个应用系统中用来描述客观事物的实体,是具有特定属性(数据)和行为(方法)的基本运行单位,是类的一个特定状态下的实例。v类(Class
6、)是Java代码的基本组织模块,是用以描述一组具有共同属性和行为的对象的基本原型,是对这组对象的概括、归纳与抽象表达,它定义了本类对象所应拥有的状态属性集及操作这组属性的行为方法集。类与对象的关系v类与对象之间的关系,类似于数据类型与变量之间的关系;一个类可以生成无数个不同的对象,每个对象属性值不同,其状态也不同。v可以用计算机模型与计算机实体之间的关系来更形象地说明类与对象之间的关系: 将冯诺依曼计算机模型看作计算机类,则不同品牌的计算机实体就对应为一个个的实例对象。 OOP的优越性 v从面向过程到面向对象是程序设计技术的一个飞跃。人们之所以要采用面向对象的程序设计技术,其目的在于: 提升程
7、序的开发与运行效率提高代码的可重用性(或者称为复用性)按照与人类习惯思维方法一致的原则开发系统OOP的优越性(续) v提高程序的可靠性与可维护性 v提高程序的可扩展性 v增强程序的可控制性 总之,面向对象的程序设计,能够有效分解、降低问题的难度与复杂性,提高整个求解过程的可控制性、可监视性和可维护性,从而获得较高的开发效率与可靠效果创建类v类是Java语言面向对象编程的基本要素,用来定义对象的成员变量(数据域)与成员方法(功能接口),描述对象的状态与行为。Java程序将你要表达的实体或概念封装在类中,并由类来创建诸多的实例对象。应用程序的功能便是由各个类的实例对象,通过调用各类方法来实现的。v
8、JAVA的类由类的声明与类体两部分组成。1、类的声明用来指定该类的访问修饰符、类的名称、父类名称及实现接口等属性。声明类的完整形式为:publicabstract|final class extends implements 说明了类的属性类名应该能够描述出类的特征或作用,类名的第一个字母通常要大写,如果类名由多个单词组成,则每一单词的首字母一般都要大写2、类体:是类功能的主体,是JAVA语句的集合。一般要定义三类元素:成员变量;构造方法;成员方法。v语句块界定符 及 标识出类体的有效范围。v成员变量与成员方法为类的成员要素,简称为成员(Member),它们又分为静态/类要素与对象/实例要素两
9、类。v构造方法是具有与类名相同名称的一种特殊方法,用来创建类的对象及对成员变量进行初始化。构造方法为可选项,当省略时,Java系统会按缺省方式定义空白的构造方法。类定义示例【例】建立一个公共的最终类日期类,其声明格式如下:public final class Date /类的声明语句 /类体定义 private int year; /年 private int month; /月 private int day; /日 public initDate(int y,int m,int d) /初始化年、月、日值的方法 public showDate() /显示当前日期值的方法实例化对象v类只是一
10、种数据类型,需要实例化对象以后才能使用 。v类类型实例化对象需要由两个步骤来完成,首先用类定义对象变量,然后通过实例化类的对象来初始化对象变量,即: 类名称 对象变量; 对象变量 = new 类名称(); 也可以一步完成,即:类名称 对象变量 = new 类名称();实例化对象(续)v一旦一个类的实例化对象产生,就可以通过该对象访问类中定义的成员了。通过对象访问成员的基本结构如下: 对象变量.属性 = 值; 对象变量.方法();任务2-方法的定义【任务内容任务内容】给任务1中的媒体播放器类增加控制方法【能力目标能力目标】v掌握方法定义v学会用方法解决实际问题【任务分析任务分析】v本案例要求在任
11、务1案例中MediaPlayer类基础上扩充可控制播放器的方法。通过分析任务1的案例,我们可以得知,MediaPlayer类至少包含播放、暂停、调节音量等方法。v范例3-2 MediaAppExam.java 3.2 方法方法任务2-方法定义(续)v成员方法(Member Method)又称为功能接口(Function Interface),简称为方法(Method),是类对象与外界的接口,包含了理解和操纵对象状态的代码,反应了对象的行为特征,特别是对属性进行操作的特征。成员方法对成员变量的操作主要体现在以下两个方面:改变对象的属性,一般记为set方法返回对象的属性,一般记为get方法方法定义
12、格式如下:vpublic | protected | private static final | abstract native synchronized (参数列表参数列表) throws v /方法体定义 v /用于描绘方法行为的Java语句v 访问控制修饰符任务3:静态方法【任务内容任务内容】设计一维数组工具类,包含数组复制,打印任务【能力目标能力目标】v掌握静态方法的定义v学会用静态方法解决实际问题【任务分析任务分析】v本案例要求设计一个针对一维数组做操作的工具类工具类,这些方法对于所有一维数组来说是通用通用的。作为工具类,它只是它只是包含了操作数组的方法,而与数组包含了操作数组的方
13、法,而与数组没有任何直接关系没有任何直接关系。因此,在使用操作数组的方法时并不需要对工具类做实例化。那么如何才能在不实例化类对象的情况下访问类内部的方法呢?如何才能在不实例化类对象的情况下访问类内部的方法呢?vJava编程语言中静态方法静态方法可以很好的解决上述问题。Java允许开发人员在一个类内部定义直接通过类名称访问的静态方直接通过类名称访问的静态方法法,而无需实例化类对象。3.2 方法方法v范例:Application.java通过上例,我们知道:static方法可以用类来直接调用,而无需用从类中实例化出来的具体对象来调用,因此这类方法被称为类的方法。 注意: static方法只能访问类
14、中的static属性和其他的static方法 。任务4:main方法【任务内容任务内容】实现命令行计算器程序【能力目标能力目标】v了解Java程序的执行v掌握Java程序入口方法v借助主程序入口参数解决实际问题【任务分析任务分析】v命令行计算器就是用户在命令行输入要参加计算的两个数和运算符,然后程序参照用户输入的运算符对两个数进行算术运算,最终将运算结果呈现给用户。本案例要求程序在启动时接收 用户的输入。那么,程序该如何实现在程序启动过程中传递用户输入呢?答案就是Java程序中的主方法main()。3.2 方法方法v范例:Calc.javav在Java中,main()方法是Java应用程序的入
15、口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法。main()方法与其他的方法有所不同,它在程序中有固定的语法声明:vpublic static void main(String args)任务5:成员变量和局部变量【任务内容任务内容】设计一个Person类,包含姓名、性别、年龄属性,并通过方法访问这些属性。【能力目标能力目标】v掌握成员变量定义v掌握局部变量定义v掌握成员变量和局部变量的区别【任务分析任务分析】v该案例要求设计一个Person类,并且包含有姓名、性别和年龄三个属性,属性的访问必须通过方法来完成。每个属性的访问包括读和写,所以Person类至少包含六个属
16、性分别对应上述三个属性的读写操作。其中写属性操作还需要外界提供一个参数,作为被操作属性的新值。3.3 成员变量和局部变量成员变量和局部变量v范例:ApplicationDemo .javav在上例中涉及到两类变量:局部变量和成员变量v局部变量: 1)局部变量是定义在方法体内部的变量,包括方法圆括号中的参数在内。局部变量有时被称作自动变量。局部变量存储在栈内存栈内存中,其生命周期从方法的执行到方法方法的结束。 2)局部变量定义以后,必须进行初始化必须进行初始化。 3)局部变量只能在定义方法范围内使用 v成员变量:成员变量是定义在类当中的变量,又称为属性(Attribute)或数据域(Data F
17、ield),用以表述一个对象的状态信息。成员变量跟随对象一起存储在堆内存堆内存当中,其生命周期从对象的实例化开始,直到对象被销毁时消失。 语法描述格式如下: public|protected|privatestaticfinaltransientvolatile =初始值/new;vpublic、protected与private为成员要素访问修饰符,用来限制成员变量或成员方法的访问范围,即哪些类或对象可以访问此成员要素。vstatic用来指明成员要素为静态要素,又称类要素,以区别于对象要素。静态要素存在于类的定义区域中,属于类本身的成员,每个该类的对象共享这些要素 vfinal用于成员变量时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 面向对象程序设计上课件 面向 对象 程序设计 课件
限制150内