JAVA程序设计教案肖宏启贵州航天职业技术学院2011年1月第一章面向对象软件开发概述概述了面向对象软件开发的基础知识,包括面向对象问题求解的提出和面向对象问题求解的基本过程。教学目的:集中介绍面向对象软件开发和面向对象程序设计中的基本概念和基本方法,教学要求:使得对面向对象软件开发方法的体系,原则,基本思想和特点有一定的了解。学习方法:学习课本知识为主,结合自己曾经学过的C等编程语言的知识.§1.1面向对象问题求解的提出面向过程与面向对象技术的关系面向过程的程序遵循面向过程的问题求解方法。其中心思想是用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的解决过程。数据结构,算法是面向过程问题求解的核心组成。面向对象技术代表了一种全新的程序设计思路和观察,表述,处理问题的方法,与传统的面向过程的开发方法不同,面向对象的程序设计和问题求解力求符合人们日常自然的思维习惯,降低,分解问题的难度和复杂性,提高整个求解过程的可控制性,可监测性和可维护性,从而达到以较小的代价和较高的效率获得较满意效果的目的。最早的面向对象的软件是1966年推出的SimulaI。1980年提出的Smalltalk-80已经是一种比较成熟有效的面向对象的语言了,其后,先后产生了Lisp,Clascal,ObjectPascal,C++等种面向对象的语言。目前使用的最成功的面向对象语言有在C语言基础上发展起来的C++语言和90年代新出现的面向对象的编程语言Java等。§1.2面向对象问题求解概述与传统的面向过程的程序设计方法相比,面向对象的程序设计具有如下的优点:对象的数据封装性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性;对象的数据封装性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块干扰对象作为独立的整体具有良好的自恰性,可以通过自身定义的操作来管理自己;在具有自恰的的同时,通过一定的接口和相应的消息机制与外界相联系继承是面向对象方法中除封装外的另一个重要特性,通过继承可以很方便地实现应用的扩展和已有代码的重复使用§1.3对象,类与实体对象的概念是面向对象技术的核心,面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现,类是同种对象的集合与抽象。对象,实体与类的关系如下图所示。计算机世界现实世界对象实体实抽例象抽象化类抽象数据类概念世界在用面向对象的软件方法解决现实世界的问题时,首先将物理存在的实体抽象成概念世界中的抽象数据类型,这个抽象数据类型里面包括了实体中与需要解决的问题相关的数据和属性然后再用面向对象的工具,如JAVA语言,将这个抽象数据类型用计算机逻辑表达出来,即构造计算机能够理解和处理的类,最后将类实例化就得到了现实世界实体的面向对象的映射――对象,在程序中对对象进行操作,就可以模拟现实世界中的实体上的问题并解决之。§1.4对象的属性与相互关系1、对象的属性状态和行为是对象的主要属性状态是对象的静态属性,如对象(电视机)具有状态(种类,品牌,外观,大小等)行为是对象的操作,如对象(电视机)可以具有操作(打开,关闭,调整音量等)2、对象的关系对象间可能存在的关系有三种:包含,继承和关联当对象A是对象B的属性时,称对象B包含对象A。如电视机与显像管是包含关系,电视机包含显像管。当对象A是对象B的特例时,称对象A继承了对象B。如彩色电视机是电视机的特例,彩色电视机对象继承了电视机对象,电视机是父亲,彩色电视机是儿子。当对象A的引用是对象B的属性是时,称对象A和对象B之间是关联关系。所谓对象的引用是指对象的名称,地址,句柄等可以获取或操纵该对象的途径。例如,每台电视机都对应一个生产厂商,如果把生产厂商抽象成对象,则电视机对象应该记录自己的生产厂商,电视机对象与生产厂商对象是关联关系。§1.5面向对象的软件开发过程1、面向对象的分析(OOA)这里介绍较广泛的Coad&Yourdon的面向对象分析(OOA)模型,它有5个层次:对象-类层静态属性层服务层结构层主题层每个层次描述需求模型的一个方面,设计完上述5个层次,就得到了完整的OOA模型。2、面向对象的设计(OOD)分析阶段(OOA)要明确开发的软件系统是“干什么”的,设计阶段(OOD模型)则是明确这个软件系统将“怎么做”。面向对象的设计就是OOA模型再加入界面管理,任务管理和数据管理四个部分3、面向对象的实现面向对象的实现就是具体的编码阶段,其主要任务包括:选择一种合适的面向对象的编程语言用选定的语言编码实现详细设计步骤所得的公式,图形,说明和规则等对软件系统各对象类的详尽描述。将编写好的各个类代码模块根据类的相互关系集成利用开发人员提供的测试样例和用户提供的测试样例分别检验编码完成的各个模块和整个软件系统§1.6面向对象程序设计方法的优点可重用性:指一个软件项目中开发的模块,能够不仅限于在这个项目中使用,而且可以重复地使用在其他项目中,从而在多个不同的系统中发挥伤用。可扩展性:指应用软件能够很方便,容易地进行扩充和修改。可管理性:面向对象的开发方法采用内涵比过程和函数丰富,复杂得多的类作为系统的部件,使整个项目的组织更加合理,方便。小结这一课概述了面向对象软件开发的基础知识,包括面向对象问题求解的提出和面向对象问题求解的基本过程。习题:1.简述面向过程问题求解和面向对象问题求解的异同。2.面向对象的程序设计方法有哪些优点?第二章Java概述§2.1第一个JavaApplication程序根据结构组成和运行环境的不同,Java程序可以分为两类:JavaApplication和JavaApplet.两者区别是:JavaApplication是完整的程序,需要独立的解释器来解释运行,而JavaApplet则是嵌在HTML编写的Web页面中的非独立程序,由Web浏览器内部包含的Java解释器来解释运行。1、源程序编辑JAVA源程序是以.java为后缀的简单的文本文件,可以用各种JAVA集成开发环境中的源代码编辑器来编写,也可以用其他文本编辑工具(如记事本)。参见以下JavaApplication的例子:程序2-1MyJavaApplication.javaimportjava.io.*;//用import语句加载已定义好的包java.io.*,//类似于C中的#include,要在屏幕上进行输出//的程序都要加载该包publicclassMyJavaApplication//主类MyJavaApplication的头说明{publicstaticvoidmain(Stringargs[])//程序入口,主类的主函数main{System.out.println(“Hello,JavaWorld!”);//标准输出函数,在屏幕上打印//“Hello,JavaWorld!”}}要点解释:类体中的类的成员包括域和方法主类必须说明成publicclassmain方法的说明必须是:publicstaticvoidmain(Stringargs[])System是系统内部定义的一个系统对象;out是System对象中的一个域,也是一个对象;println是out对象的一个方法2、字节码的编译生成程序编辑完成之后,接着要做的步骤是:javacMyJavaApplication.java//生成字节码要点解释:调用JDK软件包中的Java编译器程序javac.exe后编译所得的目标码称为字节码源代码中定义了几个类,编译结果就生成几个字节码文件:类名.class含有main方法的类就称为主类,类名就是Java源文件名3、字节码的解释与运行Java字节码不能直接运行在一般的操作系统平台上,而必须运行在一个称为“Java虚拟机”的操作系统之外的软件平台上,在运行Java程序时,首先应该启动这个虚拟机,然后由它来负责解释执行Java的字节码:javaMyJavaApplication//解释执行字节码§2.2第一个JavaApplet程序对于JavaApplet程序,字节码文件必须嵌入到另一种语言HTML的文件中并由负责解释HTML文件的浏览器充当其解释器。1、源程序的编辑与编译参见以下JavaApplet的例子:程序2-2MyJavaApplet.java:importjava.awt.Graphics;//将java.awt包中的类Graphics引入,这样//以下的程序中可以引用该类及其中的//函数g.drawString,用于画图和写文字。importjava.applet.Applet;//是Applet程序都要引入java.applet包中的//系统类AppletpublicclassMyJavaAppletextendsApplet//Applet程序的主类必须是Applet的子类,//这里extends是表示继承的关键字,//MyJavaApplet是Applet的儿子{publicvoidpaint(Graphicsg)//用于在窗口中画图和写字的系统函数,//只能在图形界面中可用,故Application程//序不可用。{g.drawString(“Hello,JavaAppletWorld!”,10,20);//在窗口中显示文字“Hello,Java//AppletWorld!”}}要点解释:JavaApplet中不需要main方法,要求程序中有且必须有一个类是系统类Applet的子类paint方法表示它将在页面需要重画时(窗口移动或放缩时)被浏览器自动调用并执行。2、代码嵌入程序2-2是JavaApplet程序,用命令:javacMyJavaApplet.java生成字节码后,必须将其字节码嵌入到HTML文件中,它可以嵌入在如下的HTML文件中:程序2-3AppletInclude.html:HTML//HTML文件开始BODYAPPLETCODE=“MyJavaApplet.class”HEIGHT=200WIDTH=300//嵌入字节码文件MyJavaApplet.class//在Web页中占用的高度为200,宽度//为300/APPLET/BODY/HTML//HTML文件结束3、Applet的运行JavaApplet的下载执行过程:文件―――――请求Applet嵌入标记Applet字节请求HTML文件Applet名――――――――――浏览器―――――下载Applet字节码解释执行Applet字节码首先将编译好的字节码文件和编写好的HTML文件保存在Web服务器的合适路径下,当文件并显示时,它会自动下载此HTML文件中指定的JavaApplet字节码,然后调用内置在浏览器中Java解释器来解释执行下载到本机的字节码程序。§2.3图形界面的输入输出图形用户界面(GraphicsUserInterface)简称GUI,是目前大多数应用程序使用的输入输出界面,它在图形模式下工作,操作简便,美观。1、JavaApplet图形界面输入输出JavaApplet程序需要在浏览器中运行,而浏览器本身是图形界面的环境,所以JavaApplet程序只能在图形界面下工作。程序2-4AppletInOut.javaimportjava.applet.*;importjava.awt.*;//凡使用图形界面,必须加载java.awt包importjava.awt.event.*;//凡使用图形界面的事件处理进行输入输//出,必须加载java.awt.event包publicclassAppletInOutextendsAppletimplementsActionListener//implementsActionListener说明该类还要//通过图形界面的事件处理进行输入输出{Labelprompt;//定义标签对象promptTe