java 实训指导书3.docx
《java 实训指导书3.docx》由会员分享,可在线阅读,更多相关《java 实训指导书3.docx(15页珍藏版)》请在冰点文库上搜索。
java实训指导书3
实训项目名称:
类、接口和包的使用
1、实训目的
1)掌握类的创建及其成员的定义。
2)对象的创建和使用。
3)掌握方法的定义和使用。
4)掌握接口的定义。
2、学时
12学时
3、实训条件
硬件:
计算机
软件:
WINXP操作系统,Eclipse开发平台。
地点:
计算机软件实验室
4、实训内容
1)设计银行账户类及存取款操作方法。
其中银行账户类account中包括:
账户信息:
账号、姓名、开户时间、身份证号码等
存款方法:
put()。
取款方法:
get()。
查看账户现金余额方法:
howmatch()。
要求,银行账户类声明为public,其中成员变量声明为private,方法声明为public。
2)阅读下面的程序,对程序运行结果分析。
下面的程序文件名为School.java,存放在目录D:
\myjava\school中,程序中把类School添加到相应的包中,在编译运行后分析结果。
importschool.Person_i;
importschool.student.*;
publicclassSchool
{
publicstaticvoidmain(Stringargs[])
{
Islee=newIs(“Philip”,18);
lee.work();
((Student_i)lee).work();
((Person_i)lee).work();
}
}
3)编写一个接口定义,产生一年的12个月的一组常量为:
1,2,3,4,5,6,7,8,9,10,11,12。
4)扩展练习。
5、实训步骤
任务一
第一题:
设计银行账户类及存取款操作方法。
其中银行账户类account中包括:
账户信息:
账号、姓名、开户时间、身份证号码等
存款方法:
put()。
取款方法:
get()。
查看账户现金余额方法:
howmatch()。
要求,银行账户类声明为public,其中成员变量声明为private,方法声明为public。
步骤如下:
1)编写程序,参考程序如下:
publicclassAccount
{
privateStringid,id_name,id_time,id_card;
privateintvalue;
Account(Stringa,Stringb,Stringc,Stringd,inte)
{
id=a;
id_name=b;
id_time=c;
id_card=d;
value=e;
}
publicvoidget(intv)
{
if(value>=v)
{value=value-v;
System.out.println("已取出"+v+"元。
");
}
else
{
System.out.println("余额不足,已取出"+value+"元。
");
value=0;
}
}
publicvoidput(intv)
{
value=value+v;
System.out.println("已存入"+v+"元。
");
}
publicvoidhowmatch()
{
System.out.println("该帐户余额为:
"+value);
}
publicstaticvoidmain(Stringargs[])
{
Accounta1=newAccount("123","张平","2006-10-23","789654",500);
a1.howmatch();
a1.put(600);
a1.howmatch();
a1.get(1300);
a1.howmatch();
}
}
2)运行程序,运行结果如下:
第二题:
阅读下面的程序,对程序运行结果分析。
下面的程序文件名为School.java,存放在目录D:
\myjava\school中,程序中把类School添加到相应的包中,在编译运行后分析结果。
importschool.Person_i;
importschool.student.*;
publicclassSchool
{
publicstaticvoidmain(Stringargs[])
{
Islee=newIs(“Philip”,18);
lee.work();
((Student_i)lee).work();
((Person_i)lee).work();
}
步骤如下:
1)编译、运行以上程序。
2)程序运行结果为:
Programming…
Programming…
Programming…
3)分析为什么结果不是:
Programming…
Havingclasses
Working…
分析情况如下:
因为Islee=newIs("Philip",18)语句创建了信息系学生类Is的对象lee,类Is的work()方法中只有输出字符串“Programming...”的功能,所以lee.work()语句输出了该字符串;(Student_i)lee是将lee强制转换类型为Student_i类型,但是无论类型转换为何种类型,lee依然还是类Is的对象,所以仍旧执行类Is的work()方法,故此仍然输出字符串“Programming...”,而不是执行Student_i类的work()方法(输出字符串“Havingclasses”);同样的道理,((Person_i)lee).work()仍然输出字符串“Programming...”,而不是执行Person_i类的work()方法(输出字符串“Working...”)。
第三题:
编写一个接口定义,产生一年的12个月的一组常量为:
1,2,3,4,5,6,7,8,9,10,11,12。
参考的接口定义如下:
publicinterfaceMonths
{
intJANUARY=1,FEBRUARY=2,MARCH=3,APRIL=4;
intMAY=5,JUNE=6,JULY=7,AUGEST=8;
intSEPTEMBER=9,OCTOBER=10,NOVEMBER=11,DECEMBER=12;
}
任务二:
扩展练习,练习内容如下:
第一题:
编写一个判断素数的方法,以整数作为参数,当该参数为素数时,输出TRUE,否则输出FALSE。
步骤如下:
1)编写程序
Publicclassprime{
Publicstaticvoidtestprime(intm){
Booleanisprime=true;
For(inti=2;iIf(m%i==0){Isprime=false;
Break;}
If(isprime){
System.out.println(“true”);
ElseSystem.out.println(“false”);}
Publicstaticvoidmain(Stringargs[])
{if(args.length!
=1)
{system.out.println(“输入格式错误!
请按照此格式输入:
javaprimem”);
System.exit(0);
}
Intnumber=Integer.parseInt(args[0]);
Testprime(number);}}
2)调试程序查看程序异常并处理异常。
第二题:
编写一个方法,用来计算并输出1-1/2+1/3-1/4+1/5-1/6+…-1/50。
步骤如下:
1)编写程序,参考程序如下:
Publicclassseries
{
Publicstaticdoublecalculatenum()
{intsign=-1;
Doubleunder=1.0,sum=1.0,term;
For(inti=2;i<=50;i++)
{
under=I;
term=sign/under;
sum=sum+term;
sign=-sign;
}
Returnsum;
}
Publicstaticvoidmain(Stringargs[]){
System.out.println(“计算结果是:
”+calculatenum());
}}
2)调试程序查看程序异常并处理异常。
第三题:
编写方法判断一个三位数是否是水仙花数。
步骤如下:
1)编写程序,参考程序如下:
Publicclassasphodelnum
{
PublicstaticBooleanisasphodelnum(intm)
{
IntI,j,k;
I=m/100;
J=m/10%10;
K=m%10;
If(m==i*i*i+j*j*j+k*k*k)
Returntrue;
Else
Returnfalse}
Publicstaticvoidmain(Stringargs[]){
Intnum=Integer.parseInt(args[0]);
If(isasphodelnum(m))
System.out.println(“是”);
Else
System.out.println(“否”)}
2)调试程序查看程序异常并处理异常。
任务三:
扩展练习,练习内容如下:
第一题:
设计一个交通工具类Vehicle,其中的属性包括:
速度speed、类别kind、颜色color;方法包括设置速度、设置颜色、取得类别、取得颜色。
创建vehicle的对象,为其设置新速度和颜色,并显示其状态(所有属性)。
步骤如下:
1)编写程序,参考程序如下:
PublicclassVehicle
{
Stringcolor;
Stringkind;
intspeed;
Vehicle()
{
Color=”Red”;
Kind=”卡车”;
Speed=0;
}
Publicvoidsetcolor(Stringcolor1)
{
Color=color1;
}
PublicvoidsetSpeed(intspeed1)
{
Speed=speed1;
}
Publicvoidsetkind(Stringkind1)
{
Kind=kind1;
}
PublicStringgetcolor()
{
Returncolor;
}
Publicstringgetkind()
{
Returnkind;
}
Publicintgetspeed()
{
Returnspeed;
}
Publicstaticvoidmain(String[]args)
{
VehicleBMW=newVehicle();
BMW.setcolor(“Black”);
BMW.setspeed(150);
BMW.setkind(“跑车”);
System.out.println(“有一辆”+BMW.getcolor()+”的”+BMW.getkind()+”行驶在高速公路上。
”);
System.out.println(“时速”+BMW.getspeed()=“km/h”);
}
}
2)调试程序查看程序异常并处理异常。
第二题:
设计一立方体类Cube,只有边长属性,具有设置边长、取得边长、计算表面积、计算体积的方法。
创建Cube对象,为其设置新边长,显示其边长,计算并显示其表面积和体积。
步骤如下:
1)编写程序,参考程序如下:
Publicclasscube
{
doubleside;
publiccube()
{
Side=0;
}
Publicvoidsetside(doubleside1)
{
Side=side1;
}
Publicdoublegetside()
{
Returnside;
}
Publicdoublearea()
{
Return6*side*side;
}
Publicdoublevolume()
{
Returnside*side*side;
}
Publicstaticvoidmain(Stringargs[])
{
Cubecube1=newcube();
Cube1.setside(2.0);
System.out.println(“side=”+cube1.getside());
System.out.println(“Area=”+cube1.area());
System.out.println(“Volume=”+cube1.volume());
}
}
2)调试程序查看程序异常并处理异常。
第三题:
设计一个圆类circle,具有属性:
圆心坐标x和y及半径r,除具有设置及获取属性的方法外,还有计算周长的方法perimeter()和计算面积的方法area()。
再设计一个圆柱体类cylinder,cylinder继承自circle,增加了属性:
高度h,增加了设置和获取h的方法,计算表面积的方法area()和计算体积的方法volume()。
穿件cylinder对象,显示其所有的属性,并计算起面积和体积。
解析:
cylinder类的构造方法中,通super()方法调用父类的构造方法。
方法中的局域变量与成员变量同名,缺省引用的是局域变量,如果要引用成员变量必须用this修饰。
Cylinder类中的area()方法覆盖了circle中的area()方法,同时cylinder类中的area()方法还通过super.area()调用circle类中的area()方法计算上、下底的面积。
步骤如下:
1)编写程序,参考程序如下:
Classcircle{
Doublex,y,r;
Circle(doublex,doubley,doubler){
This.x=x;
This.y=y;
This.r=r;}
Publicvoidsetx(doublex){
This.x=x;}
Publicvoidsety(doubley){
This.y=y;}
Publicvoidsetr(doubler){
This.r=r;}
Publicdoublegetx(){
Returnx;}
Publicdoublegety(){
Returny;}
Publicdoublegetr(){
Returnr;}
Publicdoublearea(){
Returnr*r*3.14159;}
Publicdoubleperimeter(){
Return2*r*3.14159;}
Publicvoidshow(){
System.out.println(x+y+r);}
}
Publicclasscylinderextendscircle{
Doubleh;
Cylinder(doublex,doubley,doubler,doubleh){
Super(x,y,r);
This.h=h;}
Publicvoidseth(doubleh){
This.h=h;}
Publicdoublegeth(){
Returnh;}
Publicdoublearea(){
Returnperimeter()*h+super.area()*2;}
Publicdoublevolume(){
Returnsuper.area()*h;}
Publicstaticvoidmain(Stringargs[]){
Cylindercylinder=newcylinder(1,1,4,8);
Cylinder.show();
System.out.println(„height=“+cylinder.geth());
System.out.println(“area=”cylinder.area());
System.out.println(„volume=“cylinder.volume());}}
2)调试程序查看程序异常并处理异常。
6、考核方式、成绩评定标准
共10分,顺利完成Java程序的编写、编译占70%;正确执行相应的程序占30%。