面向对象程序设计及WINDOWS编程实验指导书.docx
《面向对象程序设计及WINDOWS编程实验指导书.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计及WINDOWS编程实验指导书.docx(65页珍藏版)》请在冰豆网上搜索。
![面向对象程序设计及WINDOWS编程实验指导书.docx](https://file1.bdocx.com/fileroot1/2023-1/24/e1e60fed-b71e-421b-ab2b-03dd40a53b30/e1e60fed-b71e-421b-ab2b-03dd40a53b301.gif)
面向对象程序设计及WINDOWS编程实验指导书
面向对象程序设计及WINDOWS编程
实验指导书
(java程序设计)
2012.2
注:
带*为选做实验
第一部分JAVA集成开发环境
Java不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的Java开发工具集(JavaDevelopersKits,简称JDK)。
编程人员和最终用户可以利用这些工具来开发java程序或调用Java内容。
通常我们以JDK(Sun所开发的一套Java开发工具)的版本来定义Java的版本。
JDK1.0版于1996年初公开,JDK1.1版于1997年初公开,JDK1.2版于1998年底公开。
基于市场行销的考量,Sun在JDK1.2版公开后旋即将Java改名为「Java2」,将JDK改名为「Java2SoftwareDevelopmentKit(以下简称J2SDK)」。
J2SDK(原称JDK)1.3于2000年4月公开,此版本仍称做「Java2」。
目前J2SDK1.4.2版已经发布并投入使用中,目前Java1.5测试版已发布。
Java2出现后,将分成Java2PlatformEnterpriseEdition(简称J2EE)、Java2PlatformStandardEdition(简称J2SE)、Java2PlatformMicroEdition(简称J2ME)。
J2EE适用于服务器,目前已经成为企业运算、电子商务等领域中相当热门的技术;J2SE适用于一般的计算机;J2ME适用于消费性电子产品。
除了这三者之外,JavaCard依然是独立的一套标准。
随着应用领域的不同,Java有许多API(ApplicationProgrammingInterface),这些API分成三大类:
JavaCoreAPI:
由Sun制定的基本API,任何Java平台都必须提供。
JavaStandardExtensionAPI(javax):
由Sun制定的扩充API,Java平台可以选择性地提供或加装。
厂商或组织所提供的API:
由各家公司或组织所提供。
其中CoreAPI和StandardExtensionAPI已经逐渐涵盖了大部份的信息应用领域,例如多媒体、数据库、Web、企业运算、语音、实时系统、网络、电话、影像处理、加解密、GUI、分布式运算......。
如果你有某项需求尚未有标准的JavaAPI可遵循,你可以向Sun提出制定新API的请求。
经过审核之后,你的要求可能会通过、驳回......等。
如果通过,就会开始进入制定API的程序。
JavaAPI的制定过程因为公开,
J2EE、J2SE、J2ME及CoreAPI的关系见下图
图1.1J2EE、J2SE、J2ME及CoreAPI的关系
且经过许多业界技术领先公司的共同参与,所以相当完善而优异。
和Java标准相关的任何第一手资料,你都可以在取得。
1.1DOS环境Java2SDK
SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK)。
开发人员和最终用户可以利用这个工具来开发java程序。
JDK简单易学,可以通过任何文本编辑器(如:
Windows记事本、UltrEdit、Editplus、FrontPage以及dreamweaver等)编写Java源文件,然后在DOS状况下利通过javac命令将Java源程序编译成字节码,通过Java命令来执行编译后的Java文件,这能带给DOS时代程序员美好的回忆。
Java初学者一般都采用这种开发工具。
从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。
JDK的另一个显著特点是随着Java(J2EE、J2SE以及J2ME)版本的升级而升级。
但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。
1.1.1建立Java开发环境
(1) 下载JavaJDK.
本书将使用目前最新的版本J2SE的Java2J2SE5.0(1.5.0)。
可以通过IE或NetScape浏览器浏览网址:
http:
//J
安装JavaJDK.
J2SE1.5.0安装界面
从硬盘中或从光盘(如JAVAII光盘)中运行jdk-1_5_0-windows-i586.exe,根据提示可以选择安装文件夹如D:
\jdk1.6.0,然后根据提示进行安装,如上图。
安装完成后得到如下的文件和目录结构。
(图1.3)jdk1.6.0的目录结构
图1.3是J2sdk1.6.0的目录结构。
配置JavaSDK.
Windows98/ME/XP:
简单的方法就是选择[开始][运行]sysedit,这会显示一个实用程序的界面。
图1.4系统配置编辑器
在这里可以设置环境变量.
设置项目如下:
修改autocexe.bat就是修改自动批处理文件。
添加:
setPATH=jdk安装目录\bin;%path%
setCLASSPATH=.;jdk安装目录\lib
如
setPATH=D:
\jdk1.6.0\bin;%path%;
setCLASSPATH=.;D:
\jdk1.6.0\jre\lib;
setJAVA_HOME=D:
\jdk1.6.0//你安装J2SE的目录
Windows2000操作系统:
打开系统设置,按Winkey+Break或右击“我的电脑”,选属性,选择高级->系统环境。
同样设置以上的系统环境变量.设置完JDK路径后,任何地方皆可执行Java原始程序代码。
其他操作系统的安装和配置可以参考以上的系统环境变量进行配置。
1.1.2JDK开发环境中常用工具介绍
下面将介绍一些主要Java工具的使用,在Java环境中的Java工具列表如下所示:
*appletviewer小应用程序浏览器
*java解释器
*javac编译器
*javah头文件生成器
*javadocAPI文档生成器
*javap类文件反汇编器
*jdbJava语言调试器
这些文件包括在d:
\jdk1.6.0\bin目录中,并可以在任何目录中运行,前提是你在设置运行程序的系统中设置了路径。
1.javac编译器
Javac编译器读取Java源代码,并将其编译成字节代码,调用Javac的命令行如下:
d:
\user>javac[options]filename.java
表1.1部分选项
选项
功能
-classpathpath
此选项用于设定路径,在该路径上Javac寻找需被 调用的类。
该路径是一个用分号分开的目录列表。
-ddirectory
此选项指定一个根目录。
该目录用来创建反映软件 包继承关系的目录数。
-g
此选项在代码产生器中打开调试表,以后可凭此调 试产生字节代码。
-O
此选项告诉javac优化由内联的static、final以及 privite成员函数所产生的代码。
-verbose
此选项告知Java显示出有关被编译的源文件和任何 被调用类库的信息。
例如d:
\user>javac–verboseJPrg.java
将生产字节文件JPrg.class。
值得注意的是,和Java解释器不同,Javac编译器期望它正在编译的文件具有扩展名.java。
2.java解释器
Java解释器可用来直接解释执行Java字节代码,具体命令行格式如下:
C:
\>javaoptionsclassNamearguments
className必须包括所有软件包信息。
不仅有类名本身,还有Java解释器所期望的类名(不是Java字节代码的文件名),所有在解释器环境下运行的类都必须包括解释器第一次调用时所需的main成员函数,用以传递命令所带的变量。
options包括了Java解释器的所有选项,如:
-classpathpath此选项重写CLASSPATH环境变量,告诉Java在哪里能找到类库。
如果其中用冒号分开,则可能包含多个目录等。
3.appletviewer小应用程序浏览器
appletviewer提供了一个Java运行环境,在其中可测试小应用程Applet。
appletviewer读取包含小应用程序的HTML文件并在一个窗口中运行它们。
其他工具详见参考资料。
1.2小型集成视窗环境JCreator介绍
JCreator是一个Java程序开发工具,也是一个Java集成开发环境(IDE)。
无论你是要开发Java应用程序或者网页上的Applet元件都难不倒它。
在功能上与Sun公司所公布的JDK等文字模式开发工具相较之下来得容易,还允许使用者自订义操作窗口界面及无限Undo/Redo等功能。
JCreator为用户提供了相当强大的功能,例如项目管理功能,项目模板功能,可个性化设置语法高亮属性、行数、类浏览器、标签文档、多功能编绎器,向导功能以及完全可自定义的用户界面。
通过JCreator,我们不用激活主文档而直接编绎或运行我们的JAVA程序。
JCreator能自动找到包含主函数的文件或包含Applet的Html文件,然后它会运行适当的工具。
在JCreator中,我们可以通过一个批处理同时编绎多个项目。
JCreator的设计接近Windows界面风格,用户对它的界面比较熟悉。
其最大特点是与我们机器中所装的JDK完美结合,是其它任何一款IDE所不能比拟的。
它是一种初学者很容易上手的Java开发工具,缺点是只能进行简单的程序开发,不能进行企业J2EE的开发应用。
图1.5集成的、可视化环境JCreator
JCreator依赖JDK,它与JDK完美结合,是其它任何一款IDE所不能比拟的。
他只有1.9M左右,由于依赖JDK.须进行配置才能运行。
该软件在这里只做简单介绍。
下面一节介绍的Eclipse是我们实验使用的软件平台,也是我们所推荐使用的。
1.3大型集成开发环境Eclipse
Eclipse是替代IBMVisualAgeforJava(以下简称IVJ)的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。
目前,Eclipse已经开始提供C语言开发的功能插件。
更难能可贵的是,Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。
也就是说未来只要有人需要,就会有建立在Eclipse之上的COBOL,Perl,Python等语言的开发插件出现。
同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加入Tomcat服务器插件。
可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在。
可以这样讲Eclipse是目前用过的最好的,最智能化的Java开发软件。
它是IBM websphere的基础.Eclipse的最新版本是3.x .附带有各种语言包.中国的用户可以从www.eclipse.org上面下载eclipse的SdK,和中文语言包,解压缩的同一个目录下,就可以了。
例如把它们解压缩到d:
\Eclipse3目录下。
该软件是一个绿色软件,如果日后象删除,就直接删除这个目录就可以了。
在d:
\eclipse3目录下,运行eclipse.exe文件就可以启动。
进去后就是主界面,如图1.6。
图1.6Eclipse界面
虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的目标不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL和Eiffel等编程语言的插件已经可用,或预计会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
下面举一个简单的例子,我们将创建并运行一个“Hello,world”应用程序。
使用Java透视图,右键单击“Hello”项目,选择New=>Class,如下图1.7所示。
在随后出现的对话框中,键入“Hello”作为类名称。
在“Whichmethodstubswouldyouliketocreate?
”下面,选中“publicstaticvoidmain(String[]args)”复选框,然后按Finish
图1.7NewClass定义
这样将在编辑器区域创建一个包含Hello类和空的main()方法的.java文件,如下图所示。
然后向该方法添加如下代码(注意其中i的声明是有意省略了的):
图1.8编辑HelloWorld.java
您会在键入时注意到Eclipse编辑器的一些特性,包括语法检查和代码自动完成。
当您键入开括号或双引号时,Eclipse会自动提供配对的符号,并将光标置于符号对之内。
在其他情况下,您可以通过按Ctrl-Space来调用代码自动完成功能。
代码自动完成提供了上下文敏感的建议列表,您可通过键盘或鼠标来从列表中选择。
这些建议可以是针对某个特定对象的方法列表,也可以是基于不同的关键字(比如for或while)来展开的代码片断。
语法检查依赖增量编译。
每当您保存代码,它就在后台接受编译和语法检查。
默认情况下,语法错误将以红色下划线显示,一个带白“X”的红点将出现在左边沿。
其他错误在编辑器的左边沿通过灯泡状的图标来指示;这些就是编辑器或许能为您修复的问题——即所谓的QuickFix(快速修复)特性。
上面的代码例子在for语句后面有一个灯泡状图标,因为i的声明被省略了。
双击该图标将调出建议的修复列表。
在此例中,它将提供创建一个类字段i、一个局部变量i或一个方法参数i的建议;单击其中的每一个建议都会显示将要生成的代码。
图4显示了该建议列表和建议创建一个局部变量之后生成的代码。
图1.9编辑HelloWorld.java
双击该建议就会把建议代码插入到代码中的恰当位置。
一旦代码无错误地编译完成,您就能够从Eclipse菜单上选择Run来执行该程序(注意这里不存在单独的编译步骤,因为编译是在您保存代码时进行的。
如果代码没有语法错误,它就可以运行了)。
这时会出现一个具有适当默认设置的LaunchConfigurations对话框;请按右上角的Run按钮。
一个新的选项卡式窗格将出现在下面的窗格(控制台)中,其中显示了程序的输出,如图1.10所示。
图1.10运行HelloWorld
也可以在Java调试器中运行程序。
首先双击编辑器视图左端的灰色边沿,从而在调用System.out.println()之后的main()System.out.println()中设置一个断点。
一个蓝色的点将会出现在那里。
然后从Run菜单上选择Debug。
正如上面描述的,这时会出现一个LaunchConfigurations对话框。
请选择Run。
透视图将自动切换到Debug透视图,其中具有许多有趣的新视图,如图1.11所示:
图1.11运行Debug
首先,请注意该透视图左上角的Debug视图。
这个视图显示调用堆栈,并且标题栏中有一个工具栏,它允许您控制程序的执行,包括继续、挂起或终止程序、跟踪下一个语句、单步执行下一个语句,或者从方法返回。
右上角的窗格包含许多选项卡式的视图,包括Variables、Breakpoints、Expressions和Display。
这里我单击了Variables视图,以便我们能够看到i的当前值。
可以通过上下文敏感的帮助,获得关于这些视图的更多信息:
单击视图的标题,然后按F1
1.4Java程序举例
Java程序分成两类,即Application(应用程序)和Applet(小程序)。
应用程序在计算机中单独运行,而小程序只能嵌在HTML网页中运行。
这需要一些网页知识。
1.4.1简单的Java应用程序
下面我们先介绍简单的Java程序,并对其进行分析。
例1-1文件HelloWorldApp.java如下:
//HelloWorldApp.java
publicclassHelloWorldApp{//anapplication
publicstaticvoidmain(Stringargs[]){
System.out.println(″HelloWorld!
″);
}
}
本程序的作用是输出下面一行信息:
HelloWorld!
程序中,首先用保留字class来声明一个新的类,其类名为HelloWorldApp,它是一个公共类(public)。
整个类定义由大括号{}括起来。
在该类中定义了一个main()方法,其中public表示访问权限,指明所有的类都可以使用这一方法;static指明该方法是一个类方法,它可以通过类名直接调用;void则指明main()方法不返回任何值。
对于一个应用程序来说,main()方法是必需的,而且必须按照如上的格式来定义。
Java解释器在没有生成任何实例的情况下,以main()作为入口来执行程序。
Java程序中可以定义多个类,每个类中可以定义多个方法,但是最多只有有一个公共类,main()方法也只能有一个,作为程序的入口。
main()方法定义中的,括号()中的Stringargs[]是传递给main()方法的参数,参数名为args,它是类String的一个实例,参数可以为0个或多个,每个参数用“类名参数名”来指定,多个参数间用逗号分隔。
在main()方法的实现(大括号中),只有一条语句:
System.out.println(″HelloWorld!
″);
它用来实现字符串的输出,这条语句实现与C语言中的printf语句和C++中cout<<语句相同的功能。
另外,//后的内容为注释。
现在我们可以运行该程序。
首先把它放到一个名为HelloWorldApp.java的文件中,这里,这文件名应和类名相同,因为Java解释器要求公共类必须放在与其同名的文件中。
然后对它进行编译:
d:
\user\chap01>javacHelloWorldApp.java
编译的结果是生成字节码文件HelloWorldApp.class。
最后用java解释器来运行该字节码文件:
d:
\user\chap01>javaHelloWorldApp
结果在屏幕上显示HelloWorld!
Java程序中有三种插入注释的允许风格:
//commentononeline
/*commentononeormoreline*/
/**documentingcomment*/
紧放在声明(变量、方法或类的声明)之前的文档注释表明,注释应该被放在自动生成的文档中(由javadoc命令生成的HTML文件)以当作对声明项的描述。
1.4.2简单的Applet小程序
例1-2//HelloWorldApplet.java
importjava.awt.*;
importjava.applet.*;
publicclassHelloWorldAppletextendsApplet{//anapplet
publicvoidpaint(Graphicsg){
g.drawString(″HelloWorldinApplet!
″,20,20);
}
}
这是一个简单的Applet(小应用程序)。
程序中,首先用import语句输入java.awt和java.applet下所有的包,使得该程序可能使用这些包中所定义的类,它类似于C中的#include语句。
然后声明一个公共类HelloWorldApplet,用extends指明它是Applet的子类。
在类中,我们重写父类Applet的paint()方法,其中参数g为Graphics类,它表明当前作画的上下文。
在paint()方法中,调用g的方法drawString(),在坐标(20,20)处输出字符串“HelloWorld!
”,其中坐标是用象素点来表示的。
这个程序中没有实现main()方法,这是Applet与应用程序Application(如上例)的区别之一。
为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后对它进行编译:
d:
\user\chap01>javacHelloWorldApplet.java
得到字节码文件HelloWorldApplet.class。
由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。
它的文件如下:
AnApplet
其中用
d:
\user\chap01>appletviewerExample.html
这时屏幕上弹出一个窗口,其中显示HelloWorldinApplet!
。
或在IE浏览器中运行(FileOpenBrowseExample.htmlOk)。
从上述例子中可以看出,Java程序是由类构成的,对于一个应用程序来说,必须有一个类中定义main()方法,而对applet来说,它必须作为Applet的一个子类。
在类的定义中,应包含类变量的声明和类中方法的实现。
Java在基本数据类型、运算符、表达式、控制语句等方面与C、C++基本上是相同的,但它同时也增加了一些新的内容,在以后的各章中,我们会详细介绍。
本节中,只是使大家对Java程序有一个初步的了解。
第二部分Java程序设计实验项目
实验一熟悉Ja