1、Java语言程序设计,课程介绍,课时 :80 课时 分为两部分: 讲课部分:50 课时,课堂教学 实践部分:30 课时,课程实验 学习目标 理解程序运行的原理 了解程序开发的过程 掌握简单的程序设计语言 具备基本的编程技能,目 录,Java开发平台概述 Java语言基础 Java Applet 图形界面设计 数据库 多媒体 输入输出 多线程 网络通信,1、如何学习JAVA我觉得所有初学者要学好JAVA或C+等任何一门计算机技术,一定要做到: 动手、动脑、动嘴、静心、吃苦其中动手是最为重要的了。很多人学计算机技术就是看书、听课,当时是明白了,过后马上就忘记。如果不愿意敲键盘,就不如不学。即使有时
2、候所敲的代码你不明白,可以先运行,看看结果,增加感性认识,然后上升到理性的认识。特别是在大家做考题的时候,很多东西,概念,你只要随便敲一个程序做做实验就能很深刻的理解。,动脑,动嘴, 就是要多想问题,多思考,多分析例子程序,多上机练习,有不懂的问题就说出来。很多人一是不动脑筋想问题,也就提不出问题。还有一些人怕自己提出的问题傻,怕人笑话。其实IT行业技术面很广,工作了5、6年的人说出一些傻话来也是正常的。,静心很重要。现在IT行业很浮躁,这种心态是学不好东西的。我带过一群C+的学生,给他们讲C+基础,指针等,他们说太基础了,不愿学。要我讲高级点的,我就教他们MFC,带他们做一个小MFC程序,结
3、果有些人连C+大小写要区分都不知道。学JAVA的学生很多一开始就让讲EJB,说热门。其实,你学会了基本的东西,EJB之类东西是很容易的,否则就是本末倒置。当然有些人情况特殊,急着工作,那去学JSP,SERVLET,JDBC很容易,也好找工作,但基础最后还是要补的。,最后是要学会吃苦。学习新东西,必须有不怕困难,敢于吃苦的精神,在JAVA学习中,会遇到很多很多的难题,有些概念很不好理解,怎么办,放弃吗?我觉得理解是需要时间的,一下不能理解,多看看,甚至多背几遍就理解了。读书千遍,其义自见,现在也管用。而且我觉得初学时候要不求甚解,多做,多敲代码。等你做的足够多的时候,见多识广的时候,概念,理论的
4、东西就很容易理解了。,学习导读,Java 语言是对软件开发技术有深远影响、应用前景广泛、具有丰富的类库、继承了C+传统(摈弃了某些不足)广泛使用的网络编程语言。Java语言的特性使它可以最大限度地利用网络。本章简要介绍面向对象的基本概念(对象和类,封装、继承和多态)以及面向对象的语言Java 的基本特性。,本节课的内容:,程序设计语言的发展面对对象的软件开发概述面对对象的基本概念Java语言概述Java程序举例,1.1 程序设计语言的发展,第一代语言(1GL) : 二进制机器代码第二代语言 (2GL) : 汇编语言( Low level Language LLL) 第三代语言 (3GL): 高
5、级语言 (HLL) C,Pascal,Basic 第四代语言(4GL) : 面向对象语言(00P ) C+ ,Java,1.2 面对对象的软件开发概述,较早的软件开发是用结构化程序设计方法,程序的定律是:程序=(算法) +( 数据结构)即算法是一个独立的整体,数据结构(包含数据类型和数据)也是一个独立的整体,两者分开设计,以算法为主:,随着时间的流逝,软件工程师越来越注重于系统整体关系的表示和数据模型技术(把数据结构和算法看做是一个独立功能模块),程序定律再次被重新认识:程序=(算法+数据结构)+ (算法+数据结构) 即算法与数据结构是一个整体,算法总离不开特定的数据结构,算法只能适用于特定的
6、数据结构。,算法1,数据结构1,算法2,数据结构2,这就是面向对象程序设计的基础,在面向对象中,算法与数据结构被捆绑成为一个类,而现实世界本身就是一个对象的世界,任何对象都具有一定的属性与操作,也总能用数据结构与算法合一地来描述。这时程序定律被再次描述为:对象=(算法+数据结构)程序=(对象+对象+),由于突破了传统的软件设计思想的障碍,程序规模迅速扩大,软件产业得以迅速发展,类机制就这样在程序语言中应运而生,人们把现实世界中的实体对象抽象为一个个具有数据属性和动作的类来描述,这就是真正意义上的面向对象的程序设计。结构化程序设计和面向对象的程序设计的对比(骑自行车和坐汽车),面向对象程序设计:
7、 一种新的思维方法,更接近人类处理现实世界问题的自然表示方法。 假设你面对现实世界的一个对象,你不会把它的属性和处理方法分开,程序设计也是一样 面向对象的语言有:C+、smalltalk、VB、Java等,1.3 有关面向对象的概念,使用面向对象的程序设计的原因是软件系统的复杂性内部复杂性 由系统本身组合引起 外部复杂性由用户自身对它们的系统如何工作只有一个含糊的概念,且难以表达它们的需求而引起,简化复杂性把系统分解为它的组成部件并以某种层次结构来安排它们, 解释软件系统之所以会复杂的原因,我们以PC机为例简要说明复杂性如何能得以简化。,比如:Jane打电话给修理她电视机的技术员。该技术员如何
8、处理电视机的复杂性?,解答:电视机是一个复杂系统,要一下子理解它的复杂机能是不可能也是毫无意义的。因此,技工将分别研究电视机的各个不同部分,理解它们各自的功能以及每个部分可能会发生的问题。例如,他可能首先检查天线看它是否安置妥当,之后再检查显象管。,面向对象程序设计围绕的几个主要概念抽象数据类型 类层次(子类) 封装 继承 多态,对象 以类为类型定义的变量(实体)叫做对象 在面向对象的系统中,面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机中的映射和体现。 对象是由属性和操作所构成的一个封闭整体。属性值规定了对象所有可能的状态。对象的操作是指该对象可以展现的外部服务。,对象的特征状
9、态:是由一组属性和这些属性的值指出 行为:指出一个对象是如何行动的 本体:使该对象与所有其它对象区别开来,识别可能的属性以定义以下对象的状态: 茶杯 立体声磁带录音机解答:茶杯的属性:尺寸、制造材料、选用颜色。 立体声录音机的属性:尺寸、声音输出。,类是JAVA程序的基本组成,任何JAVA程序都是由一个个的类组成,在这主要讲类的定义,类与对象的关系,对象间的消息传递,可以说JAVA程序的编写就是对类的不断定义和实例化。 类定义的一般 形 式 如 下:,class classname extends superclassname type instance-variable1;type inst
10、ance-variable2; type instance-variableN;type methodname1(parameter-list) method-body; type methodname2(parameter-list) method-body; type methodnameN(parameter-list) method-body; ,class Tdate private int month ; /属性即数据成员 private int day;private int year; /行为即方法成员 private void set(int m , int d , int
11、y) month=m ; day= d ; year=y ; int isLeapYear( ) return (year%4=0 ,class Car int color_number; int door_number;int speed;void brake() void speedUp() ;void slowDown() ,数据抽象类型,在程序中使用的对象是类的一个实例 创建一个对象 Hello obj=new Hello(); 调用方法 obj.showString(“Hello World!”),class Hello ,private String s;,public void
12、showString () System.out.println(s); public void changeString(String str) s=str; return s;,什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上是使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,私有数据,方法,方法,数据,对象A,对象B,公有数据,什么是子类? 子类是作为另一个类的扩充或修正所定义的一个类.,bicycle,(super class),Mountain bikes,Racing bikes,Tandem bikes,sub class,
13、什么是继承?继承是面向对象语言中的一种重要机制,是子类利用父类中定义的方法和变量就像它们属于子类本身一样.,class Car int color_number; int door_number;int speed;push_break() add_oil() ,class Trash_Car extends Car double amount;fill_trash() ,1.4 Java语言概述,1. Java产生的历史1991年 ,SUN MicroSystem公司的 Jame Gosling、 Bill Joe等人 ,为在电 视、控制烤面包箱等家用消费类电子产品上进行交互式操作而开发了一
14、个名为Oak 的软件 (即一种橡树的名字 )Oak Java:1994年下半 年,Internet的迅猛发展,环球信息网 WWW的快速增长,促进了 Java语言研制的 进展,使得它逐渐成为 Internet上受欢迎的开发与编程语言 。,Sun Microsystems的 首 席 程 序 员James Gosling,创 建 一 个 新 的语 言Java以克 服C+ 中 的问 题,Gosling的新 语 言 以C+ 为 主 线, 但 克 服 了C+ 的 缺 陷。1995年Sun向公众推出Java并引起业界的轰动 环球信息网 WWW的创始人 Berners-Lee说 :“计算机事业发展的下一个浪潮
15、就 是 Java,并且将很快会发生的”。有人预言 :不久的将来全世界90%的程序代码将用Java语言书写或、改写。 Java将是网络上的 “世界语 ”,今后所有的用其他语言编写的软件统统都要用 Java语言来改写。,发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。(1995年以来)应用:Java是当今最流行的软件开发语言之一,Sun推出了 Java2 & J2EE使Java具有更广泛的用途,适用于各种应用开发,尤其是网络应用,网络服务,嵌入式系统等。,2. Java语言特点Java是一种简单的、面象对象的、分布式的、解释的、健壮的、安全的、结构中立的、可移植的、性能优异的、多
16、线程的动态的语言。 java语言的编译方式: Java编译器把Java源程序翻译成被称为字节码的中间代码。,两种工作模式的比较,Java虚拟机 Java语言为每个计算机系统都提供一个叫做Java虚拟机(JVM)的环境,它包括一个编译器和一套软件系统。,不同的操作系统有不同的虚拟机.它类似一个小巧而高效的CPU. byte-code代码是与平台无关的是虚拟机的机器指令.,1、Java开发环境,JDK (可从http:/ 集成环境Jbuilder (Borland)Visual J+ (Microsoft)JPadTextPad,1.5 基于Windows系统的Java程序,安装JDK直接运行“j
17、2sdk-1_5_1-win.exe”,按照安装向导进行安装。解开“j2sdk-1_5_1-doc.zip”,得到JDK的开发文档。,安装JDK后产生如下目录结构:bin目录:Java开发工具,包括Java编译器、解释器等demo目录:一些实例程序lib目录:Java开发类库jre目录: Java运行环境,包括Java虚拟机、运行类库等,设置环境变量:PATH = c:jdk1.3.1bin;CLASSPATH = . ;c:javaexamplesapplications;Windows 98: autoexec.bat Windows NT/2000/XP:控制面板系统高级环境变量,C:,
18、Jdk1.3.1,bin,lib,javac,java,appletviewer,用户类文件所在目录 c:javaexamplesapplications,当前目录,jre,demo,Java编程一般可以分为:编辑源程序编译生成的字节码解释运行字节码。,2、Java 程序编写步骤,3、Java 程序 根据结构和运行环境的不同,Java程序可以分为二类: Java应用程序(Java Application)和Java小程序(Java Applet) 应用程序 是完整的程序,需要独立的解释器来解释运行,可任何操作系统提示下执行 它们可以是基于窗口的应用程序或控制台应用程序 它们比 applets
19、有更为安全的特权它们驻 留 在 本 地 机 器 的硬 盘 上,Java Applet 嵌在HTML编写的Web页面中的非独立程序,由Web内部包含的内部Java解释执行。 它们是基于窗口的 它们只可访问宿主机上资源;它们不可访问被下载计算机上的文件 它们驻 留 在 远 程 计 算 机 上,下面以一个简单的Java Application例子来说明这个过程,编辑存盘:源程序必须以.java为后缀的文本文件,文件名和公共类名(用public声明) 要一致HelloWorldApp.java 编译程序:javac HelloWorldApp.java 运行程序:java HelloWorldApp
20、运行结果:Hello World!,Import java.io.* public class HelloWorldApp public static void main(String args) System.out.println(“Hello World!”); ,第一行用Import语句来加载已定义好的类或包 声明一个类:public class HelloWorldApp,类名第一个字母大写。 一个类中可有很多方法, main方法是运行程序的第一个方法,方法名的第一个字母小写。在类体内不能再定义类,任何java程序都由若干这样的类定义组成 System.out.println是向屏幕
21、输出,相当于C中的printf()。,import java.io.* public class HelloWorldApp public static void main(String args) System.out.println(“Hello World!”); ,在类体内有两种成分:属性(变量、常量、对象数组等)和方法(类型与C+的函数) 方法main()是一个特殊的方法,它是所有java应用程序的入口点,与标准C中main()函数的地位是一样的。所以任何java应用程序必须有且只能有一个main()方法,而且方法头必须如上所书写 public static void main(St
22、ring args) main()方法必须包含在一个类中,该类即为应用程序的外部标志。 程序进入从一个类的main方法开始,必须保证主类HelloWorldApp中实现了main方法。,必须保证HelloWorldApp.java文件在当前目录下必须保证PATH环境变量中有jdk_homebin 类个数:至少一个类,最多只能有一个public类 源文件命名:若有public类,源文件必须按该类命名 标识符:区分大小写 程序注释:与C类似,/*/,下面再看一个定义了两个类的Java Application例子,import java.io.* public class MyApplication
23、2 public static void main(String args) System.out.println(UserClass.m_sMessage); class UserClass static String m_sMessage=“message from user defined class”;,这里定义了两个类:一个是含有main()方法的主类,另一个是含有一个域的类UserClass,其中m_sMessage是一个字符串对象。需要注意的是一个Java源程序文件中可以定义多个类,但是其中只能有一个类含有main()方法,因为main()方法是程序的入口点,一个Java应用程序
24、只能有一个入口点,这个含有main()方法的类就是主类,这个类名就是Java源文件的文件名。,Java Applet是另一类非常重要的Java程序,它的编译生成的字节码文件必须嵌入到HTML语言中,下面看一个简单的Java Applet程序:,import java.applet.Applet; import java.awt.Graphics; public class MyJavaApplet extends Applet public void paint(Graphics g)g.drawString(“hello applet world”,25,25); ,第一二行利用import
25、语句导入了该程序用到的两个系统类,与Java Application一样,Java Applet程序也是由若干个类定义组成的,但是Java Applet程序中不需要main()方法,它要求程序中必须有一个类是Applet的子类。Paint()方法是系统类Applet中已定义好的成员方法,能够被WWW浏览器自动调用,这个方法在WWW所显示的页面需要重画时被浏览器自动调用。,My Java Applet ,理解程序: import语句相当于C语言中的include。 每一个applet都是java.applet.Applet的子类,用extends继承。 applet中没有main()方法。当applet被浏览器运行时, init() 、start()方法等自动执行,再调用paint()方法。 在applet中与屏幕输出有关的操作通过Graphics对象来实现。 一个Java源文件内最多只能有一个public 类,称为主类,且文件名必须和它同名。,本章小结,对象,类,消息抽象,封装,继承,多态Java开发环境Java程序:Java Application和Java AppletJava程序的运行,