滁州学院课程设计报告课程名称:Java面向对象程序设计设计题目:画随机圆系别:计算机信息与工程学院专业:计算机科学与技术组别:第五小组起止日期:2011年12月20日~2012年1月4日指导教师:马骏高超计算机与信息工程学院二○一一年制课程设计任务书课程设计题目画随机圆组长张侠学号2011220129班级11计专1班系别计算机与信息工程学院专业计算机科学与技术组员余静盛荣春汪道明张娟指导教师马骏高超课程设计目的进一步加深对Java语言的理解和掌握提供一个独立实践的机会培养我们在项目开发中的团队合作精神和创新意识及实践编程能力课程设计所需环境JCreatorproJdk1.6工具包课程设计任务要求功能要求:实现简单的动画具体要求:自动出现由小到大变换的圆,位置与颜色随机,变到150直径时擦除,重新再出现圆;变换速度由HTML文件传入的参数控制(控制sleep时间)界面要求:用JavaApplet实现课程设计工作进度计划序号起止日期工作内容分工情况012011-12-20~2011-12-23收集资料组员共同完成022011-12-24~2011-12-27编写代码组员共同完成032011-12-28~2011-12-28修改补充代码组员共同完成042012-1-1~2011-1-2编写课程设计报告组员共同完成052012-1-3~2012-12-22设计报告的完成组员共同完成教研室审核意见:教研室主任签字:年月日目录一.引言....................................................................1二.使用工具说明.............................................................12.1.总体目标...............................................................12.2.Applet的工作原理......................................................12.3.Applet的工作原理图如图2-1............................................12.4.多线程机制.............................................................22.5.多线程的优势...........................................................2三.分析与设计...............................................................33.1.题目及使用环境.........................................................33.2.功能概述...............................................................33.3.要实现的功能...........................................................33.4.实现方式...............................................................33.5.需用到的类和方法.......................................................3四.代码实现.................................................................4五.调试与操作说明...........................................................6六.课程设计总结与体会.......................................................6七.致谢.....................................................................6八.参考文献.................................................................61一.引言Applet是基于HTML的小程序。浏览器将其暂时下载到用户的硬盘上,并在Web页打开时在本地运行。一般的Applet只能通过appletviewer或者浏览器来运行,Java程序通过继承Applet类也可以嵌入网页运行。在JavaApplet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。Applet还提供了名为抽象窗口工具箱(AbstractWindowToolkit,AWT)的窗口环境开发工具。AWT利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等。目前,在网络上有非常多的Applet范例来生动地展现这些功能。多线程的目的是为了最大限度的利用CPU资源,以前所编写的程序,每个程序都有一个入口、一个出口以及一个顺序执行的序列,在程序执行过程中的任何指定时刻,都只有一个单独的执行点。事实上,在单个程序内部是可以在同一时刻进行多种运算的,这就是所谓的多线程。一个单独的线程和顺序程序相似,从概念上说,一个线程是一个程序内部的一个顺序控制流。线程并不是程序,它自己本身并不能运行,必须在程序中运行。在一个程序中可以实现多个线程,这些线程同时运行,完成不同的功能。二.使用工具说明2.1.总体目标设计一个自动出现由小到大变换的圆,位置与颜色随机,变到150直径时擦除,重新再出现圆;变换速度由HTML文件传入的参数控制。实现简单的动画功能。2.2.Applet的工作原理含有Applet的网页的HTML文件代码中部带有applet和/applet这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。JavaApplet是用Java语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE或遨游)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络浏览器。由于Applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果。含有。一个HTML文件增加Applet有关的内容只是使网页更加富有生气,如添加声音、动画等这些吸引人的特征,它并不会改变HTML文件中与Applet无关的元素。2.3.Applet的工作原理图如图2-1中,多线程的实现有两种方式:扩展java.lang.Thread类实现java.lang.Runnable接口每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个线程中运行的代码创建一个新Thread对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。当Java虚拟机启动时,通常都会有单个非守护线程(它通常会调用某个指定类的main方法)。Java虚拟机会继续执行线程,直到下列任意一个情况出现时为止:因此,不管是扩展Thread类还是实现Runnable接口来实现多线程,最终还是通过Thread的对象的API来控制线程的如图2-1,熟悉Thread类的API是进行多线程编程的基础。新建状态(New):新创建了一个线程对象。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。注意:start()方法的调用后并不是立即执行多线程代码,而是使得该线程变为可运行态(Runnable)什么时候运行是由操作系统决定的。从程序运行的结果可以发现,多线程程序是乱序执行。因此,只有乱序执行的代码才有必要设计为多线程。Thread.sleep()方法调用目的是不让当前线程独自霸占该进程所获取的CPU资源,以留出一定时间给其他线程执行的机会。实际上所有的多线程代码执行顺序都是不确定的,每次执行的结果都是随机的。newRunnableRunningDeadBlocked等待Blocked锁定Blocked获取CPUyield()start()sleep()结束join()中断IO完成wain()Sleep()join()run()运行结束synchronized或运行退出Notify()/notifyAll()Interrupt()同步锁被释放图2-1线程的状态与周期2.5.多线程的优势⑴减轻编写交互频繁、涉及面多的程序的困难,如监听网络端口。⑵程序的吞吐量会得到改善,同时可以监听多种设备,如网络端口、串口、并口以及其他外设。⑶有多个处理器的系统,可以并发运行不同的线程,否则,任何时刻只有一个线程在运行。Thread类本身只是线程的虚拟CPU,线程所执行的代码(或者说线程所要完成的功能)是通过方法run()包含在一个特定的对象中来完成的,方法run()称为线程体。实现线程体的特定对象是在初始化线程时传递给线程的。在一个线程被建立并初始化以后,Java的运行时系统就自动调用run()方法,正是通过run()方法才使得建立线程的目的得以实现。3⑷线程睡眠:Thread.sleep(longmillis)方法,使线程转到阻塞状态。millis参数设定睡眠的时间,以毫秒为单位。当睡眠结束后,就转为就绪Runnable状态。sleep()平台移植性好。三.分析与设计3.1.题目及使用环境课程设计题目:画随机圆开发环境:JCreatorproJdk1.6工具包编程语言:JavaHtml界面要求:用JavaApplet实现运行环境:Windows操作系统3.2.功能概述运行浏览器之后,会自动出现由小到大变换的圆,圆的位置与颜色随机,大小变到150直径时擦除,重新再出现圆,圆变换速度通过HTML文件传入的参数控制,实现简单的动画3.3.要实现的功能⑴此程序为实现这些功能模块,必须首先定义画图的对象,对所要画的圆的颜色及其位置进行设置。⑵此程序为实现简单的动画功能,必会使用到Therad线程机制。因此会用到实现接口Runable中的run()方法,及通过调用sleep()来显示圆的变化速度。⑶此程序中,必须用到的包如下:java.applet.Applet;java.awt.Color;java.awt.Graphics;java.util.*;3.4.实现方式在Circ.java中首先调用init()方法对线程和画图进行初始化并各自创建一个对象。Circ类通过实现Runnable接口,使得该类有了多线程类的特征run()方法是多线程程序的一个约定。所有的多线程代码都在run方法里面。Thread类实际上也是实现了Runnable接口的类。在启动的多线程的时候,需要先通过Thread类的构造方法Thread(Runnabletarget)构造出对象,然后调用Thread对象的start()方法来运行多线程代码。实际上所有的多线程代码都是通过运行Thread的start()方法来运行的。3.5.需用到的类和方法classCir