java实验指导书.docx
《java实验指导书.docx》由会员分享,可在线阅读,更多相关《java实验指导书.docx(21页珍藏版)》请在冰豆网上搜索。
java实验指导书
实验指导书
实验项目:
实验三、类和对象
实验目的:
掌握类封装对象的属性和功能。
实验内容:
定义一个Triangle类,类中定义一个构造方法,构造方法中使用方法的参数来初始化成员变量,并判断是否能构成三角形,定义一个求周长的方法,定义一个求面积的方法。
定义一个TestTriangle类,用类创建对象,并调用这两个方法输出结果。
实验步骤:
1.安装JDK(查看机器是否已经安装)
2.查看并设置环境变量。
java_home
path(必须设置)
classpath
3.编写源程序TestTriangle.java
4.编译javacTestTriangle.java(在源程序所在目录下进行)
5.运行javaTestTriangle(在源程序所在目录下进行)
6.部分程序
classTriangle
{
doublesideA,sideB,sideC,area,length;
booleanboo;
/*在此处定义一个构造方法,在方法中将方法参数赋值给三个成员变量,并判断是否能构成三角形,给boo赋值*/
publicTriangle(doublea,doubleb,doublec)
{sideA=a;
sideB=b;
sideC=c;
if()boo=true;
elseboo=false;
}
doublegetLength()
{if(boo)
{//计算周长
}
length=sideA+sideB+sideC;
else
{//输出不是三角形,不能计算周长
}
}
publicdoublegetArea()
{
if(boo)
{//计算面积
}
else
{//输出不是三角形,不能计算面积
}
}
PublicclassTestTriangle
{
publicstaticvoidmain(String[]args)
{
Trianglet=newTriangle(3,4,5);//可改变参数的值
//输出周长
System.out.print(getLength());
//输出面积
}
}
/*计算面积方法,若三边是a,b,c,半周长是p
面积=Math.sqrt(p*(p-a)*(p-b)*(p-c));*/
实验指导书
实验项目:
实验三、类和对象
实验目的:
掌握类封装对象的属性和功能,掌握成员变量,成员方法的使用,static的用法,构造方法的使用,成员的访问权限。
//本次实验和上周实验写一个实验报告,不用写两个。
实验内容:
定义一个Person类,要求类在abc.def包中,类中定义成员num,类型是int,非private,用于计算成员方法getName的调用次数,另一成员name,类型String,private;定义一构造方法,构造方法将形参值赋给成员变量;定义getName成员方法,非private,用于读取name的值,另外将次数num加1。
TestPerson类中,用Person类创建两个对象,分别输出这两个对象的两个成员的值。
实验步骤:
1.安装JDK(查看机器是否已经安装)
2.查看并设置环境变量。
java_home
path(必须设置)
classpath
3.编写源程序TestPerson.java
4.编译javacTestPerson.java(在源程序所在目录下进行)
5.运行javaabc.def.TestPerson(在包的根目录下进行)
//package语句
classPerson
{
//此处定义num,类型是int,非private,用于计算成员方法getName的调用次数;
privateStringname;
//此处定义一构造方法,构造方法将形参值赋给成员变量。
//此处定义getName成员方法,非private,用于读取name的值,另外将次数num加1
}
publicclassTestPerson
{
publicstaticvoidmain(String[]args)
{
Personp1=newPerson("wang");
//输出p1的name及num成员(此时num应该为1)
Personp2=newPerson("zhao");
//输出p2的name及num成员(此时num应该为2)
}
}
注意事项:
2)在开发工具中,新建类时,指定包,可以不用自已创建包的文件夹,会自动生成。
实验指导书
实验项目:
实验四、接口
实验目的:
理解接口的功能,掌握接口的使用方法。
实验内容:
定义一个IShape接口,在接口中定义一个求面积抽象方法getArea,方法类型是double,无参。
定义Circle类实现该接口,类中定义一个成员变量(半径),定义一个构造方法,调用构造方法时可将参数值赋给成员变量。
定义Rectangle类实现该接口,类中定义两个成员变量(长,宽),定义一个构造方法,调用构造方法时可将参数值赋给成员变量。
定义TestInterface类,用IShape创建接口变量s1,s2,分别使用它们求圆的面积和矩形的面积。
半径,长,宽在参数中指定
实验步骤:
1.安装JDK(查看机器是否已经安装)
2.查看并设置环境变量。
java_home
path(必须设置)
classpath
3.编写源程序TestInterface.java
4.编译javacTestInterface.java
5.运行javaTestInterface
interfaceIShape
{
doublegetArea();
}
classCircleimplementsIShape
{
doubleradius;
Circle(doubler)
{radius=r;
}
publicdoublegetArea()
{
return3.14*radius*radius;
}
}
classRectangleimplementsIShape
{
doubleheight,width;
Rectangle(doubleh,doublew)
{
height=h;
width=w;
}
publicdoublegetArea()
{
returnheight*width;
}
}
publicclassTestInterface
{
publicstaticvoidmain(String[]a)
{
IShapes1,s2;
s1=newCircle
(2);
s2=newRectangle(4,5);
System.out.println(s1.getArea());
System.out.println(s2.getArea());
}
}
实验指导书
实验项目:
实验五、类的继承
实验目的:
理解继承机制,掌握继承的使用方法,掌握继承中构造函数的使用,掌握super关键字的用法。
实验内容:
程序包含三个类:
TestA,TestB,Test,其中已定义TestA类和Test类,要求不得改变TestA类和Test类中程序,并且定义TestB类完成以下功能,最后要求程序的输出结果是:
helloworld20132014
定义TestB类使得它继承TestA,在TestB中重写继承的fun1()方法,并且在重写的fun1()方法中调用从父类继承的fun1()方法;在TestB中定义新添加的fun2()方法;在TestB中定义一个无参的构造方法。
实验步骤:
1.安装JDK(查看机器是否已经安装)
2.查看并设置环境变量。
java_home
path(必须设置)
classpath
3.编写源程序Test.java
4.编译javacTest.java
5.运行javaTest
/*TestA类中程序不得改变*/
classTestA
{
inti;
TestA(inti)
{
this.i=i;
}
voidfun1()
{
System.out.print("hello");
}
}
/*按要求定义TestB类*/
classTestBextendsTestA
{
TestB()
{
super(2013);
}
voidfun1()
{
super.fun1();
System.out.print("world");
}
Stringfun2()
{
return"2014";
}
}
/*以下程序不得改变*/
publicclassTest
{
publicstaticvoidmain(String[]args)
{
Stringstr;
TestBtb=newTestB();
tb.fun1();
System.out.print(tb.i);
str=tb.fun2();
System.out.println(str);
}
}
//要求程序运行结果:
helloworld20132014
3)注意super的用法
实验指导书
实验项目:
实验六、多态
实验目的:
理解多态机制,掌握上转型对象的使用。
实验内容:
定义接口say,接口体中定义speak方法,无参,无返回值;
定义Person类,该类实现接口say,在实现的speak方法中输出speakedbyPerson;
定义Student类,该类也实现接口say,,在实现的speak方法中输出speakedbyPerson,并且Student类是Person类的直接子类;
定义Te类,该类中定义成员方法test,该方法已经给出(不用写),另外在main方法中,用Te创建对象t,要求使用t调用test方法使得输出结果是:
speakedbyPerson
speakedbyStudent
实验步骤:
1.安装JDK(查看机器是否已经安装)
2.查看并设置环境变量。
java_home
path(必须设置)
classpath
3.编写源程序Te.java
4.编译javacTe.java
5.运行javaTe
interfacesay
{
voidspeak();
}
classPersonimplementssay
{
publicvoidspeak()
{
System.out.println("speakedbyPerson");
}
}
classStudentextendsPersonimplementssay
{
publicvoidspeak()
{
System.out.println("speakedbyStudent");
}
}
classTe
{
voidtest(Personp)
{
p.speak();
}
publicstaticvoidmain(String[]args)
{
Tet=newTe();
t.test(newPerson());
t.test(newStudent());
}
}
/*
speakedbyPerson
speakedbyStudent
*/注意事项:
3)注意调用test方法时使用上转型对象。
实验指导书
实验项目:
实验七、抽象类
实验目的:
理解抽象类的定义,掌握抽象类的使用。
实验内容:
定义抽象类A,A中仅有一抽象方法f1,无参,无返回值。
定义类B,B中定义两个成员方法f2,f3。
定义类TestAbs,类中已定义了f4方法和main方法,完成main方法,要求在main方法中调用f2和f4方法,使得程序输出结果是:
helloworld
实验步骤:
1.安装JDK(查看机器是否已经安装)
2.查看并设置环境变量。
java_home
path(必须设置)
classpath
3.编写源程序TestAbs.java
4.编译javacTestAbs.java
5.运行javaTestAbs
abstractclassA
{
abstractvoidf1();
}
classB
{
voidf2(Aa)
{
a.f1();
}
voidf3()
{System.out.println("world");
}
}
publicclassTestAbs
{
staticvoidf4(Bb)
{b.f3();
}
publicstaticvoidmain(String[]args)
{
//注意调用f2方法时参数可使用匿名类。
Bb1=newB();
b1.f2(newA()
{voidf1()
{System.out.print("hello");
}
}
);
f4(newB());
}
}
注意事项:
1)调试成功后保存相关程序,回去完成实验报告。
2)可用Eclipse或记事本完成。
3)注意调用f2方法时参数可使用匿名类。
实验指导书
实验项目:
实验八、异常处理
实验目的:
理解异常机制,理解try、catch、finally、throws、throw的使用,掌握自定义异常类的使用。
实验内容:
定义异常类Nopos,在类中写构造方法,构造方法中确定异常信息“m或n不是正整数”,m和n在输出时要用具体值。
定义Computer类,类中定义成员方法intf(intm,intn),方法中若m<0或n<0则抛出自定义的异常,否则求m和n最大公约数。
定义TestException类,在main方法中,用Computer创建对象,用对象调用f方法,若参数正确则求出公约数,否则输出异常信息。
实验步骤:
1.安装JDK(查看机器是否已经安装)
2.查看并设置环境变量。
java_home
path(必须设置)
classpath
3.编写源程序TestException.java
4.编译javacTestException.java
5.运行javaTestException
classNoposextendsException
{Nopos(intm,intn)
{super(m+"或"+n+"不是整数");
}
}
classComputer
{//f求最大公约数
publicintf(intm,intn)throwsNopos
{if(n<=0||m<=0)
{Nopose1=newNopos(m,n);
throwe1;
}
if(m{inttemp=0;
temp=m;
m=n;
n=temp;
}
intr=m%n;
while(r!
=0)
{m=n;
n=r;
r=m%n;
}
returnn;
}
}
publicclassTestException
{publicstaticvoidmain(Stringargs[])
{intm=24,n=36,result=0;
Computera=newComputer();
try
{result=a.f(m,n);
System.out.println(m+"和"+n+"的最大公约数"+result);
m=-12;
n=22;
result=a.f(m,n);
System.out.println(m+"和"+n+"的最大公约数"+result);
}
catch(Nopose)
{System.out.println(e.getMessage());
}
}
}
注意事项:
3)注意五个关键字的用法。
实验指导书
实验项目:
实验九、输入流和输出流
实验目的:
理解输入流和输出流,掌握利用文件输入流和文件输出流进行读写。
实验内容:
已有一段文本存储在1.txt中,要求:
编写程序利用输入流和输出流将该文件中的所有内容复制到另外一个文件2.txt中,并且将其内容也在屏幕上显示出来。
实验步骤:
1.创建FileReader输入流对象(利用1.txt),FileWriter输出流对象(利用2.txt)
2.调用输入流对象的read方法,注意使用循环,若返回值为-1表示读取结束,在循环体中将读取的文本写入输出流和屏幕。
3.编译
4.运行
importjava.io.*;
publicclassTestCopy{
publicstaticvoidmain(String[]args){
try{
FileReaderinput=newFileReader("1.txt");
BufferedReaderbr=newBufferedReader(input);
FileWriteroutput=newFileWriter("2.txt");
BufferedWriterbw=newBufferedWriter(output);
Strings=br.readLine();
while(s!
=null){
bw.write(s);
bw.newLine();
System.out.println(s);
s=br.readLine();
}
br.close();
bw.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
3)注意试着用两种方法编写,如可利用BufferedReader的readLine()方法。
面向对象软件开发方法是吸收了软件工程领域有益的概念和有效的方法而发展起来的一种软件开发方法。
它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化、数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性的程序。
实验指导书
实验项目:
实验十、JavaSwing
实验目的:
掌握使用JavaSwing设计图形界面。
实验内容:
设计一个简单计算器。
界面如下图
1)设计一窗口,其标题显示“简单计算器”,窗口位置100,100,窗口大小300,300
2)用于计算的两个操作数及其计算结果(最底部)使用JTextField创建。
3)四个运算符号使用JComboBox创建
4)“计算结果”使用JButton创建
5)将需输入的两个数和操作符可放在一个面板上JPanel,其布局使用默认布局FlowLayout
6)对窗口使用布局管理器BorderLayout,其EASE和WEST可以不设置。
7)要求窗口能够关闭。
实验步骤:
1.安装JDK(查看机器是否已经安装)
2.查看并设置环境变量。
java_home
path(必须设置)
classpath
3.编写源程序SimpleCa.java
4.编译javacSimpleCa.java
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassSimpleCaextendsJFrame{
SimpleCa(Strings)
{super(s);
}
publicstaticvoidmain(String[]args){
SimpleCas=newSimpleCa("简单计算器");
s.setLayout(newBorderLayout());
finalJTextFieldt1=newJTextField(10);
finalJTextFieldt2=newJTextField(10);
finalJTextFieldt3=newJTextField();
JButtonb=newJButton("计算结果");
JPanelp=newJPanel();
s.setBounds(100,100,300,300);
String[]str={"+","-","*","/"};
finalJComboBoxjcb=newJComboBox(str);
p.add(t1);
p.add(jcb);
p.add(t2);
s.add(p,BorderLayout.NORTH);
s.add(t3,BorderLayout.SOUTH);
s.add(b,BorderLayout.CENTER);
s.setVisible(true);
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
//简单计算器
5.运行javaSimpleCa
注意事项:
3)关闭窗口setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
实验指导书
实验项目:
实验十一、事件处理
实验目的:
理解监听事件原理,掌握javaswing中事件处理的方法。
实验内容:
在前一次实验设计的简单计算器界面基础上,实现计算机功能。
输入两个操作数,选择操作符,点击“计算结果”,显示结果。
如下图
1)编写事件处理器,其实现ActionListener接口,将处理程序写在以下方法中:
publicvoidactionPerformed(ActionEvente)
{
//处理程序
}
2)处理程序中,先获取JTextField中操作数,使用getText()方法(返回值是String类型),但计算前将String转换成基本类型如double
比如可以写成以下形式:
doublea=Double.valueOf(t1.getText()).doubleValue();
3)处理程序中接着获取操作符,如可使用intc=jcb.getSelectedIndex();
根据获取的值进行相应的运算。
4)将计算结果显示在最底部的JTextField,调用setText方法。
5)给“计算结果”按钮注册监听器,使用创建的事件处理器对象。
实验步骤:
1.安装JDK(查看机器是否已经安装)
2.查看并设置环境变量。
java_home
path(必须设置)
classpath
3.编写源程序SimpleCa.java
importjava.sql.*;
publicclassExample15_1
{publicstaticvoidmain(Stringargs[])
{Connectioncon;
Statementsql;
ResultSetrs;