java程序设计第一章.ppt
Java语言程序设计,主讲教师:李学相E_Mail:电话:63888959,课程介绍,课时:96 课时分为两部分:讲课部分:64 课时,课堂教学实践部分:32 课时,课程实验学习目标 理解程序运行的原理了解程序开发的过程掌握简单的程序设计语言具备基本的编程技能,目 录,第1章:程序设计概述第2章:Java基础第3章:程序流程控制第4章:方法第5章:数组第6章:面向对象的程序设计概念第7章:类的继承第8章:类的多态性第9章:文字图形与GUI设计第10章:字符串,第一章,程序设计概述,主要内容,程序设计的概念 程序设计语言算法与逻辑实现Java概述Java运行环境,1.1 程序设计的概念,1什么是程序设计 利用计算机解决问题,首先要按照人们的意愿,借助计算机语言,将解决问题的方法、公式、步骤等编写成程序,然后将程序输入到计算机中,由计算机执行这个程序,这个设计和书写程序的整个过程就是程序设计。程序设计是根据给出的具体任务,编制一个能正确完成该任务的计算机程序。计算机程序是有序指令的集合或者是具有一定结构的语句的集合。它能被计算机执行。,为了能很好地完成给定的任务,程序设计过程大致需要三步:确定算法与数据结构;用流程图表示程序的思想;用程序设计语言编制计算机程序。2程序设计方法 面向过程的结构化程序设计 面向对象程序设计 结构化程序设计是由荷兰学者Dijkstra在20世纪70年代提出的,其主要思想是自顶向下、逐步求精、模块编程。,面向过程编程,在面向过程的编程方法中,会先将问题分解为较小的部分,逐个解决。然后再将所有的解决方案组合起来,解决整个问题。面向过程编程的步骤:编写的一段代码称为过程一个过程在执行时可以访问另一个过程 把过程组合起来就形成了程序 把所有程序整合起来就形成应用软件 示例:BASIC、Fortran、Pascal、COBOL,面向过程编程方法的局限性,代码不可重用代码不可改变,灵活性差,面向对象的程序设计(Object Oriented Programming,缩写为OOP)是一种先进的程序设计方法,OOP实际上是围绕着各类事物进行程序设计的。OOP本质是把数据和处理数据的过程(函数)当成一个整体 对象。一旦在程序中建立了一个对象,其他程序员可以在其他的程序中使用这个对象,完全不必重新编制繁琐复杂的代码。对象的重复使用可以大大地节省开发时间,切实地提高软件的开发效率。,面向对象的编程方法,面向对象编程 类、对象、消息与封装 抽象继承和组合,面向对象编程,面向对象方法把程序看作离散对象的集合,这些对象中包含了相应的数据结构以及与其他对象交互的方法 优点:可重用灵活,可修改示例:C+、Java、Microsoft Visual Basic.NET、Microsoft Visual C#、Microsoft Visual C+,类、对象、消息与封装,类,对象,类是对象的模板或蓝图,定义了对象的属性和设计阶段建立的操作,对象是类的实例,要占用内存,而且对象的生命周期有限,抽象,类是对象的蓝图,描述了对象并定义了对象的属性和操作抽象就是将类简化,只使用那些对定义对象有用的元素,继承和组合,继承指定了类之间的所属关系多个类共享相同的属性和操作,提高了代码的可重用性示例:顾客“是一种”人雇员“是一种”人,基类,2程序设计风格 程序设计时程序应结构清晰、合理,编写出来的程序不仅可在机器上正确执行,还要便于程序的调试和维护,让别人能看懂。学习程序设计过程中,必须养成良好的程序设计风格。好的程序设计风格有助于提高程序的正确性、可读性、可维护性、可用性。,建议从以下方面,逐步形成良好程序设计风格:编码格式和编码约定在整个程序中应保持一致;程序中应给出必要的注释。对变量、标识等的命名,采用“匈牙利命名法”。程序书写采用缩进格式,突出程序的层次结构。每一行只写一条语句,使用括号间隔表达式或语句的组成部分。使用结构化、面向对象的编程技术,提高程序可重用性、可扩充性。提高程序健壮性,预防用户的操作错误。,返回,1.2 程序设计语言,编写计算机程序所用的语言即程序设计语言,是人与计算机之间交换信息的工具。程序设计语言的发展从面向过程,到面向对象,进一步发展成为面向组件,经历了非常曲折的发展过程。总的来说可以分成机器语言、汇编语言、高级语言、面向对象语言等等。,程序设计语言经历:,高级语言:,1机器语言,机器语言是计算机第一代语言,它由0、1代码构组的机器指令集合组成。是最底层、能直接被机器所接受的语言。用机器语言编写程序,计算机硬件可直接识别,执行速度比较快,基本上充分发挥了计算机的速度性能。不同的CPU,其机器语言也不同。针对一种计算机所编写的机器语言程序,不能在另一种计算机上运行。机器语言不容易记忆,程序编写难度大,调试修改繁琐,且不易移植,但执行速度最快,它是一种面向机器的程序设计语言。,2汇编语言 汇编语言是第二代程序设计语言。汇编语言是用助记符代替操作码,用地址符号代替地址码,使机器语言“符号化”,所以也称汇编语言是符号语言。汇编语言与特定类型的机器相对应,也是一种面向机器的语言。事实上,每一个计算机厂家都为自己的机器制定了一套机器码的“助记符”,即汇编语言指令系统。,汇编语言与机器语言是一、一对应的,因此,对于不同的计算机,针对同一问题所编写的汇编语言源程序是互不通用的。用汇编语言编写的程序执行效率比较高,但通用性与可移植性仍然比较差。总的来说,汇编语言比机器语言前进了一步。但是,计算机不能直接识别用汇编语言编写的程序,必须由一种专门翻译程序将汇编语言程序翻译成机器语言程序,计算机才能执行。,3高级语言 机器语言和汇编语言都是面向机器的语言,称为低级语言。它们对机器依赖性很大,用它们开发的程序通用性差,且要求程序员必须熟悉和了解计算机硬件的每一个细节,普通计算机用户很难胜任编程工作。随着计算机技术的发展及计算机应用领域的不断扩大,计算机用户的队伍不断壮大,而且这个队伍中绝大部分不是计算机专业人员。为此,从20世纪50年代中期开始,逐步发展了面向问题的程序设计语言,称为高级语言。高级语言与具体的计算机硬件无关,其表达方式接近于被描述的问题,接近于自然语言和数学语言,易被人们接受和掌握。,高级语言的显著特点是独立于具体的计算机硬件,通用性和可移植性好。目前,计算机高级语言已有上百种之多,得到广泛应用的也有十几种,并且几乎每一种高级语言都有其最适用的领域。高级语言发展经历了二个阶段。第一阶段高级语言是过程化的语言,如:BASIC语言、C语言、FORTRAN语言、COBOL语言、PASCAL语言、LISP语言等都是过程化的语言。过程化语言编程时需要一步一步地安排好机器的执行顺序,要告诉机器怎么做。,第二个阶段的高级语言是非过程化语言。非过程化语言只需告诉机器做什么就可以了,由机器自己生成和安排执行的步骤。如FOXBASE、FOXPRO都是非过程化的语言。用任一种高级语言编写的源程序都不能被计算机直接执行,在执行之前,必须由编译程序或解释程序翻译成机器能接受的目标代码。与低级语言相比,用高级语言编写的程序其执行的时间和空间效率要差。取其所长,上述三类语言可用在不同的场合,一般科学计算、数据处理采用高级语言比较合适,而实时控制因为速度要求高,往往采用汇编语言。,4面向对象程序设计语言(OOPL)OOPL是建立在用对象编程的方法基础上的,是当前程序设计采用最多的一种语言。OOPL具有封装性、继承性和多态性。OOPL有两大类:一类是纯粹的面向对象语言,在纯粹的面向对象语言中,几乎所有的语言成分都是“对象”,如:Smalltalk、Java等,这类语强调开发快速原型的能力;另一类是混合型面向对象语言,如:C+、Object Pascal,这类语言是在传统的过程化语言基础上增加面向对象机制,它所强调的是运行效率。成熟的面向对象语言通常都提供丰富的类库和强有力的开发环境。,返回,5组件技术 所谓组件可理解为自包含的、可编程的、可重用的、与语言无关的代码片段,可以作为整体很容易地插入到应用程序中。组件技术是计算机软件发展的最新结果,也是非常有效的软件构造方法。,返回,1.3 算法与程序逻辑的实现,分析问题,确定算法 将要解决的问题进行分析,提取操作的对象,并找出操作对象之间的关系。在此基础上确定具体解决问题的方法和步骤,设计出一种优化算法。选择程序设计语言进行程序设计 选择适当的程序设计语言,将算法转换成程序代码。人们常把程序定义为:程序=算法+数据结构+程序设计语言+工具和环境 程序测试 设计一组足够的测试数据,使用这组测试数据来运行程序。分析问题、确定算法在整个解决问题过程中是非常重要的一步,决不可忽视。,1算法(1)什么是算法 算法是解题的步骤,是一组有穷的规则,它们规定了解决某一特定问题的一系列运算,是对解题方案的准确与完整的描述。制定一个算法,一般要经过设计算法、描述算法、分析算法和验证算法等阶段。,(2)算法的特性 一个算法具有下列五个重要的特性:确定性、有穷性、可行性、输入和输出。(3)算法的描述 算法的描述方法可以归纳为以下几种:自然语言。图形,如N-S图、流程图,图的描述与算法语 言的描述对应。算法语言,即:程序设计语言、伪代码。,(4)衡量算法优劣的方法 选用的算法首先应该是“正确的”。此外,主要考虑如下3点:执行算法所耗费的时间,即时间特性。执行算法所耗费的存储空间,即空间特性。算法应易于理解、易于编码、易于调试。当然,我们希望选用一个所占存储空间小、运算时间短、其它性能也好的算法。然而,实际上很难做到十全十美。原因是上述要求有时相互抵触,要节约算法的执行时间往往要以牺牲更多的空间为代价;而为了节省空间可能要耗费更多的计算时间。因此我们只能根据具体情况有所侧重。,2程序逻辑的实现 所有的程序都是为了解决现实生活中的问题而开发的,在开始编写程序之前,必须根据一系列的逻辑步骤来分析要解决的问题。这些步骤包括:识别输出和输入要求 确定相关的处理方法 实现逻辑:用流程图或者伪代码表示出程序逻辑 流程图用一系列符号来表示程序的逻辑,它包含有一个符号集,每个符号表示指定类型的操作。这些符号通常有:接收输入、处理、显示输出和作判断等。,常用流程图符号意义,【例1-1】某工厂工资以计件形式发放,每月月末根据工人生产的产品个数来计算其月薪:月薪=每生产一个产品的酬金该月生产产品的个数,求工人的月薪。该问题可以用以下步骤来规划解决方案。1、识别输出和输入元素。输出:(1)工人编号(2)月薪输入:(1)工人编号(2)产品个数2、确定相关的处理。处理:(1)接收工人编号(2)接收产品个数(3)查看产品个数(4)计算得出月薪(5)显示工人编号和月薪3、实现逻辑(画流程图),流程图如下所示。,【例1-2】某软件公司欲招聘一位资深系统分析员,很多人前来应征。经过笔试,需要向所有笔试成绩在60分以下的应聘者发出拒绝信,同时通知有资格者前来面试。可以用以下步骤来规划解决方案。1、识别输出和输入元素。输出:(1)应聘者编号、姓名。(2)发送信件类型输入:(1)应聘者编号、姓名。(2)面试分数2、确定相关的处理。处理:(1)接收应聘者编号、姓名和分数(2)查看应聘者分数(3)根据分数判断是否合格(4)显示信件类型3、实现逻辑(画流程图),流程图如图下所示。,练习:计算运费场景描述铁路运输根据运送货物的路程来决定所收取的单位运费。100千米以内,每吨每千米1.00元;100千米以上,每吨每千米0.80元。要求:创建流程图以显示场景中描述的计算过程,按以下步骤来规划解决方案:1、确定场景中的输出和输入元素。2、确定相关的处理。3、画出流程图。,Java语言是由Sun公司于1995年5月23日正式推出的面向对象的程序设计语言,集安全性、简单性、易用性和平台无关性于一身,适合网络环境下编程使用。,1.4 Java的诞生,印度橡树,1991年 Sun 公司进军消费电子产品(IA)市场。,1991.4 Sun成立“Green”小组,以C+为基础开发新的程序语言,James Gosling取名时看到窗口橡树,即命名为Oak。,1992.10 Green小组组员在印尼爪哇岛度假喝咖啡时灵机一动,将这种技术转移到web上,并把Oak改名为Java。,19934 web 在 Internet上开始流行,Java一炮而红。1995.5 Sun公司正式发表Java与HotJava产品。1995.12 微软(MicroSoft)IE加入支持Java的行列。1996.2 Java Beta测试版结束,Java 1.0版正式诞生。1997.2 Java急速发展至1.1版,届时分为Personal Java和Embedded Java两大派。1999.7 升级至1.2版。2000.9 升级至1.3版。目前使用的是1.5版、1.6版,Java2 Software Development Kit,Enterprise Edition Java2 Software Development Kit,Standard Edition Java2 Software Development Kit,Micro Edition,Java语言的特点,简述Java历史Java的特点:简单性面向对象安全性平台无关多线程网络功能执行效率,Windows操作环境,Unix操作环境,Mac操作环境,Java与C/C+的主要区别,跨平台:C/C+语言编译为机器码;Java语言编译为字节码,通过JVM编译为机器码废除指针:C/C+语言有指针类型;Java语言没有指针类型继承:C+允许多继承;Java语言仅允许单继承速度:C/C+运行速度快;Java运行速度慢,Java的分类,J2SE(Standard Edition)J2的标准版,通常使用在PC上。J2EE(Enterprise Edition)企业级Java,扩展了给企业使用的EJB与Servlet等功能。J2ME(Micro Edition)从J2SE中取出适用于家电或嵌入式设备功能的版本,为在移动电话上所使用的Java版本。,Java语言的开发环境,从网站上免费下载J2SDK(Java2 Software Development Kit),并利用命令行方式操作javac(编译器);java(解释器)Java集成开发环境(IDE)有:Eclipse、JBuilder、JCreator、Visual Age for Jave、Visual J+、Visual Caf等,Java语言的开发环境,路径设置对Java SDK的设置主要是设置环境变量,以方便使用bin目录中的各种工具。假如你把JDK安装在目录下,如果你使用的是Windows9x操作系统,可以在C盘根目录的autoexec.bat文件中加入如下语句:set classpath=.;C:j2sdk1.4.2_03lib;path=C:j2sdk1.4.2_03bin;设置路径后,需要重新启动计算机。如果你使用的是Windows 2000和Window XP系统,可以选择【控制面板】|【系统】|【高级】|【环境变量】。在出现的环境变量窗口中包含【环境变量】和【系统变量】,在系统变量框中选择【path】,单击【编辑】按钮,在弹出的【编辑系统变量】窗口的【变量值】框最后加上;C:j2sdk1.4.2_03bin;。并点击【新建】按钮新建一个系统变量,变量名和变量值分别为classpath和.;C:j2sdk1.4.2_03lib;,Java SDK软件包中常用工具,Java SDK软件包中常用的工具包括:javac、java、appletviewer、javah、javap、javab、javadoc等,这里介绍最常用的三种。java编译器 javac.exe是Java语言的编译器,用来编译Java源程序(.java文件),并生成字节码文件(.class)文件。java解释器 java.exe文件是Java语言的解释器,用来解释执行Java字节码文件。appletviewer小程序浏览器 appletviewer.exe提供了一个Java小程序(Java Applet)的运行环境。appletviewer读取嵌入有小程序的HTML文件,并在一个窗口中运行。,运行Java程序的基本过程,利用编辑器编写 Java源程序 源文件名:主类名.java利用编译器(javac)将源程序编译成字节码 字节码文件名:源文件名.class利用虚拟机(解释器,java)运行 运行过程:载入、代码校验、解释执行 如:java 源程序名.class,创建第一个Java程序,1.用记事本编写源程序:,创建第一个Java程序,源程序:/*文件名:FirstApp.java*功 能:显示天天好心情!*编写:张三*编写时间*修改:李四*修改时间*/public class FirstApp public static void main(String args)/显示天天好心情!(天天好心情!);,创建第一个Java程序,英文字母的大小写问题Java语言区分大小写,录入时必须严格按这里给出的大小写特别容易弄错的是“”,只有System是大写,out和println都是小写例子对比:“FirstApp”和“firstapp”“”,“”和“”,创建第一个Java程序,中文标点符号问题中文的分号和英文的分号很相似,但中文的分号后面有空白,英文的分号后面没有中文的右引号特别容易在输入中文字符串时出现,往往是在输入中文后随手输入了引号的缘故例子对比:中文的分号“;”和英文的分号“;”中文右引号,如:天天好心情!”,创建第一个Java程序,2.保存源程序选定一个目录,如C:Java来保存文件在“文件名”一栏敲入“FirstApp.java”,“保存类型”一栏选“所有文件”需要注意的问题不要忘记了文件保存在什么位置文件类型要选“所有文件”,并敲入扩展名,否则可能保存为以txt为后缀的文本文件,创建第一个Java程序,3.编译源程序选“程序”“附件”“命令提示符”:闪烁的光标,表示在这里输入命令。光标前的 为当前路径。,创建第一个Java程序,编译源程序敲入:cd Java,进入 目录下敲入:dir,显示该目录下的所有文件其中“FirstApp.java”就是保存的Java源文件,创建第一个Java程序,编译源程序敲入:javac FirstApp.java 几秒钟后,如果提示符 重新出现,没有提示任何信息,说明编译成功了。编译成功之后,将产生一个字节码文件FirstApp.class,它的文件名与类名相同,相当于其它语言程序的可执行文件,创建第一个Java程序,再次敲入dir命令,可以看到多了一个文件:字节码文件:以.class作为文件后缀,创建第一个Java程序,4.执行Java程序敲入命令:java FirstApp运行结果显示如下:祝贺你,你的第一个程序运行成功了!,介绍 Eclipse,安装Eclipse 启动Eclipse 使用Eclipse运行java程序,作业一,1.下载Java SDK,并安装。2.使用记事本、写字板等编辑工具编辑下页的第一个 java应用程序,并在命令提示符方式下编译和运行它。3.编写一个应用程序,分行显示自己的姓名和专业。,第一个Java应用程序,1/FirstApplication.java 2/一个简单的Java应用程序,在屏幕上输出一行文本“Hello World!”3 4 public class FirstApplication/定义公共类FirstApplication5/FirstApplication类开始6 public static void main(String args)/main()方法定义7/main()方法开始8 System.out.println(Hello World!);/输出字符串Hello World!9/mai()方法结束10/FirstApplication类结束,