1、摘要 编程诧言从机器诧言,汇编诧言,再到现在的高级诧言,一步步发展到现在已经形成了一个完善诧言的体系。就像是各个国家都有自己的诧言一样,编程诧言也有许多丌同的诧言,而每种诧言的出现都是为了迎合丌同的需求,也都有自己独特的诧言魅力, Java 也丌例外,它的出现迎合了人们对应用程序跨平台运行的需求。 而且 Java 现在是全球流行的开发工具乊一,它拥有了一套庞大且完善的类库,内置了其他诧言需要靠库甚至是操作系统才能支持的功能,拥有一个虚拟机。 本文在开始先对 Java 诧言做了初步的介绍,即针对 Java 的特点做了详绅的描述,同时也针对 Java 程序的运行机制做了描述;开发环境做了简单的介绍
2、。 接下来是对编写的软件的描述,对 Java API 的应用,对 Java 诧言的继承、方法的重写、接口和抽象类的使用。 绪论 第一章系统开发环境 1.1 开发工具 1.2 应用环境 第二章系统需求分析 2.1 需求分析 2.2 可行性分析 第三章系统概要设计 3.1 设计目标 3.2 系统功能模块 第四章系统详细设计 4.1 程序设计 4.2 各功能界面截图 第五章系统测试 5.1 测试的意义 5.2 测试过程 5.3 测试结果 第六章总结 参考文献 绪论 Java 语言简介 Java 的发展和历史 Java 的诞生得益于对家用电器的芯片的研制,开始时,开发者想用 C+语言来开发电器的芯片,
3、但是 ,由于芯片的种类各不相同,因此,程序要进行多次编译。尤其是 C+中的指针操作,稍有不慎,就会出现问题。程序可以出错,但是家用电器不能出错误,为此,开发者将 C+语言进行简化,去掉指针操作,去掉运算符重载,去掉 C+中的多继承,得到了 Java 语言,将它变成了一种解释执行的语言,并在每个芯片上装上一个 Java 虚拟机。刚开始时, Java 语言被称为 Oak 语言(橡树语言) Java 语言现在逐渐成熟起来,它的类也已经进千个了,而且还可以通过第三方购买中间件,为 Java 语言的发展提供了良好的发展前景,同时它也是跨平台的语言,因此许多软件开发商及硬件开发商也争先恐后地想搭上 Jav
4、a 语 言的快车,都声称支持 Java 语言,它对微软发起了有力的挑战,而且 Sun 公司正努力开发 Java 芯片 Java语言的特点 Java 是一种简单的,面向对象的,分布式的,健壮的,安全的,与平台无关的,多线程的,高性能的,动态程序设计语言。 1. 简单易学 Java 语言虽起源于 C+,但是去掉了 C+语言中难于掌握的指针操作,内存管理非常简单,如果要释放内存资源,你仅需要让其对象的引用等于 null,这样就使操作变得异常简单 2. 面向对象 Java 语言是面向对象的编程语言。面向对象技术很好的解决了当今软件开发过程中新出现的种种传统的面向过程语言所不能处理的问题,包括软件开发的
5、规模扩大,升级加快,维护量增大以及开发分工日益细化,专业化和标准化等。面向对象技术的核心是以更接近于人类思维的方式建立计算机模型,它利用类和对象的机制将数据与其上的操作封装在一起,并通过统一的接口与外界交互,是反映现实世界实体的个各类在程序中能够独立、自治和继承。 3. 分布式 Java 包括一个支持 HTTP(超文本传输协议)和 FTP(文件传输协议) 等基于 TCP/IP 协议的子库,因此, Java 应用程序可凭借 URL(统一资源定位符)打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。为分布式环境尤其是 Internet 提供了动态内容,无疑是一项非常宏达的工程,但是
6、 Java 的语法特性可以很容易实现这项目标。 4. 健壮性 Java 致力于检查程序在编译和运行时的错误。类型检查可以检查出许多开发早期出现的错误。 Java 自行操作内存,减少了内存错误的可能性。 Java 还实现了真数组,避免了覆盖数据的可能。这些功能特征大大缩短了开发 Java 应用程序的周期。 Java 提供 null 指针检测数组边界,进 行异常出口字节代码校验。 5. 安全稳定 对网络上应用程序的另一个要求是较高的安全可靠性。用户通过网络获取并在本地运行的应用程序必须是可信赖的,不会充当病毒或者其他恶意操作的传播者而攻击本地的资源,同时它还应该是稳定 的,轻易不会产生死机等错误,
7、使得用户乐意使用。 6. 平台无关 Java 语言独特的运行机制使得它具有良好的二进制的可移植性,利用 Java,开发人员可以编写出与具体平台无关,普遍适用的应用程序,大大降低了开发、维护和管理的开销,也就是一次编译,随处运行。 7. 支持多线程 多线程是当今软件开发技术的又一重要成果, 已成功应用在操作系统和应用开发等多个领域。多线程技术允许同一个进程有两个或两个以上的执行线索,即同时做两件或多件事情,满足了一些复杂软件的需求。 Java 不但内置多线程功能,而且定义了一些用于建立、管理多线程的类和方法,使得开发具有多线程功能的程序变得简单、容易和有效。 8. 高性能 如果解释器的速度快,
8、Java 可以在运行时直接将目标代码翻译成机器指令。Sun 用直接解释器一秒钟内可调用 300 000 个过程。翻译目标代码的速度与 C+的性能没什么区别。 9. 动态性 Java 的动态性是其面向对象设计方法的扩展,它允许程序动 态地装入运行过程中所需要的类。 Java 编译器将符号引用信息在字节码中保存下来并传递给解释器吗,再由解释器完成动态连接类后,将符号引用信息转换为数值偏移量。这样,一个在存储器生成的对象不在编译过程中决定,而是延迟到运行时有解释器确定,这样对类中的变量和方法进行更新时就不至于影响现存的代码。解释执行字节码时,这种符号信息的查找和转换过程进在一个新的名字出现时才进行一
9、次,随后代码便可以全速执行。在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。 Java平台简介 1998 年 12 月, Sun 发 布了 Java2 平台 JDK 1.2,这时 Java 发展是上的里程碑。 1999 年 6 月, Sun 公司重新组织 Java 平台的集成方法,并将 Java 企业级应用平台作为发展方向。 2004 年, Sun 发布 JDK1.5 更名为 JDK5.0.2006 年底,Sun 再度推出 JDK1.6( JDK6.0)。如今, Java 家族也已经有四个主要成员:J2SE( Java 2 Standard Edition)用于工作站
10、、 PC 机的 Java 标准平台,现改名为 JavaSE; J2EE( Java 2 Enterprise Edition)可扩展的企业级应 用平台,现改名为 JavaEE; J2ME( Java 2 Micro Edition)嵌入式电子设备 Java 应用平台,现改名为 JavaME; JavaFX 是一种声明式的静态类型编程语言,专为喜欢在可视化编程中的 Web 脚本人员和应用程序开发人员量身定做,是 Java 新成员 Java程序的运行机制和 Java 虚拟机( JVM) Java 语言比较特殊,由 Java 语言编写的程序需要经过编译步骤,但是这个编译步骤并不会生成特定平台的机器码
11、,而是生成一种与平台无关的字节码文件(也就是 .class 文件)。当然,这种字节码文件不是可执 行的,必须使用 Java解释器来解释执行。因此,我们可以认为: Java 语言既是编译型语言,也是解释型语言。或者说, Java 语言既不是纯粹的编译型语言,也不是纯粹的解释型语言。 Java 程序的执行过程必须经过先编译,后解释两个步骤, Java 语言里负责解释执行字节码文件的是 Java 虚拟机,即 JVM( Java Virtual Machine)。 JVM 是可运行 JAVA 字节码文件的虚拟计算机。所有平台的 JVM 向编译器提供相同的编译接口,而编译器只需要面向虚拟机,生成虚拟机能
12、理解的代码,然后由虚拟机来解释执行。在一些虚拟机的实现中,还会将虚拟机代码转换成特定系统的机器码执行,从而提高执行效率。 JVM 是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器 Java开发环境搭建 首先进行 JDK 的安装,下载 JDK 安装包解压后进行环境变量的配置,配置步骤如下: 右击桌面上“我的电脑”图标,出现右键菜单;单击“属性”菜单项,出现“系统属性”或“高级系统设置” 对话框;单击该对话框的“高级”选项,出现如图 2 所示的对话框。 单击“环境变量”按钮,将看到如图 3 所示的“环境变量”的对话框,通过该对话框
13、可以修改或添加环境变量。 图 2 图 3 第一章系统开发环境 1.1 开发环境 Sun Microsystems 公司在推出 Java 语句的同时,推出了一套开发工具JDK。 Sun 提供的基于字符模式的 Java 开发工具包 JDK: Java 开发工具 (JDK)是许多 Java 专家最初使用的开发环境。 Java 是平台无关的语言是指用 Java 写的应用程序不用修改就可以在不同的软硬件 平台上运行。 Java 源程序编写可以借助于记事本, Editplus, UltraEdit 等第三方编辑工具。 所有的 Java 文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。 JDK
14、 由一个标准库和一组建立、测试及建立文档的 Java 实用程序组成。其核心 Java API 是一些预定义的类库,开发人员需要使用这些类来访问Java 语言的功能。 JDK 是整个 Java 的核心,包括了 Java 运行环境,一堆 Java工具和 Java 基础的类库。不论什么 Java 应用服务器实质都是内置了某个版本的 JDK。因此掌握 JDK 是学好 Java 的第一步。 JDK 里面是 Java 类库和 Java 的语言规范,它提供的是无论是用何种开发软件写 java 程序都必须用到类库和 java 语言规范,没有 JDK,你的 java 程序根本就不能用。 最主流的 JDK 是 S
15、un 公司发布的 JDK,除了 Sun 之外,还有很多公司和组织都开发了自己的 JDK,例如 IBM 公司开发的 JDK, BEA 公司的 Jrocket,还有 GNU 组织开发的 JDK 等待,其中 IBM 的 JDK 包含的 JVM 运行效率要比 Sun 的JDK 包含的 JVM 高出许多。而专门运行在 X86 平台的 Jrocket 在服务端运行效率也要 比 Sun 的 JDK 好很多。但是不管怎么说,还是需要把 Sun 的 JDK 掌握好。 但是在这里我借助的是一个编程软件 MyEclipse 来完成程序的编写与调试的 1.2 应用环境 操作系统: Windows 7 应用环境: JD
16、K 1.6 应用软件: Myeclipse 第二章系统需求分析 2.1 需求分析 游戏简介:游戏中玩家通过鼠标来移动自己的飞机,打掉飞机或蜜蜂会获得分数和奖励,打掉一架飞机获得 5 分,打掉一只蜜蜂获得随机奖励:一条命或者 40 次双倍火力,如果撞上敌机或蜜蜂,则会失去生命,同时双倍火力清零。每撞到一次就生 命值减 1,当生命值为 0 时,游戏结束 shoots 要满足以下几点要求: 1. 鼠标点击界面游戏开始 2. 鼠标移出界面游戏暂停再次移入继续开始 3. 飞机跟随鼠标指针移动 4. 打掉飞机就分值增加,打掉蜜蜂就奖励生命值或者双倍火力 2.2 可行性分析 Shoots 游戏是一种简单的大
17、众游戏,在实现游戏的过程中你需要对子弹与敌机或蜜蜂的碰撞做出判断,判断的处理可以由坐标的范围来完成;如果碰撞就要做删除处理,通过记录碰撞的对象(对象是存放在数组中的)的下标可以对它进行删除操作;以及在它们越界(超出画板范围的那些敌机和蜜蜂)后对它们要删除;因为敌机和蜜蜂是不断生成的,会越来越多,而存放它们的是一个数组,这个数组不是固定的长度,会随着敌机和蜜蜂的数量的增加而进行扩容,所以如果不对越界的敌机和蜜蜂进行处理,数组会越来越大,从而占有更多的存储空间,而游戏运行也越来越慢;另外实现子 弹、敌机和蜜蜂的自动移动,需要对存放它们的数组遍历然后对每一个存放的对象的坐标属性进行加减操作;而用鼠标
18、来操作飞机就需要用到与鼠标移动相关的触发事件,在鼠标的点击,滑动,移出面板,移入面板同样都有与之相关的鼠标事件,通过这些事件来实现暂停,运行。 选择使用 Java 语言,一方面是接触的多,另一方面是 Java 是一种跨平台的,适合于分布式计算机环境的面向对象编程语言,用 Java 写的应用程序不用修改就可在不同的软硬件平台上运行。 第三章系统概要设计 3.1 设计目标 可以利用鼠标移动战机,鼠标移出游戏面板游戏 暂停,鼠标再次移入游戏面板游戏开始,还要随机的产生敌机和蜜蜂,生命值为零结束游戏。 3.2 系统功能模块 1.类与类之间的关系 包括一个源文件,五个类和两个接口 图 3.1 2.jav
19、a 源文件及其功能 编号 文件名 功能 1 ShootGame 该文件是程序入口,包含 main 方法和实现各种具体操作的方法 2 FlyingObject 抽象父类,将 Hero、 Airplane、 Bee、Bullet 中共有的属性抽出来放在里面 3 Hero 4 Airplane 表示敌机,继承 FlyingObject 类,实现Enemy 接口,提供移动的属性与方法 5 Bee 表示蜜蜂,继承 FlyingObject 类,同时实现 Award 接口,提供蜜蜂移动的方法 6 Bullet 表示子弹,继承 FlyingObject 类,提供移动的方法 7 Enemy 表示敌人的接口,提供获取分数方法 8 Award 表示奖励的接口,提供获取奖励类型(双倍活力或生命值)的方法 3.数据建模:使用一个数据模型,描述对象的关系,使用绘图坐标系作为参考模型,英雄机、敌机、蜜蜂以及子弹都是矩形区域,如下图所示: 以英雄机为例标示出数据 x、 y、 width 以及 height 所表示的位置。敌机、蜜蜂、子弹以及英雄机的这四个属性类似的 第四章系统详细设计 4.1 程序设计 1.主类 ShootGame (1)成员变量