JAVA上机实验报告Word文档下载推荐.docx
《JAVA上机实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JAVA上机实验报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
年级
2012
学号
312012*********
专业
数学
成绩
实验名称
类与对象、继承与接口
实验地点
6A418
实验类型
验证、设计
实验学时
2
实验日期
实验目的
1.掌握类的定义和使用方法。
2.掌握对象的声明和使用。
3.理解类和对象的区别,掌握构造函数的使用。
4.掌握类变量与实例变量,以及类方法与实例方法的区别。
5.理解方法中的形参和实参传递在传递基本类型和引用类型时的差异。
6.掌握包的概念和使用。
7.掌握类及其成员的访问权限控制符的使用。
8.掌握Java类的继承关系和派生方法。
9.理解继承中的变量隐藏和方法重写现象。
10.理解抽象类的概念,掌握定义抽象类的方法和应用。
11.理解多态现象。
12.掌握接口的定义和实现接口的方法。
实验环境(实验设备)
硬件:
微型计算机P4
软件:
WindowsXP+JDK+Eclipse
实验内容(包括题目和要求、源码、运行结果截图等)
一、按下面的要求编写一个JavaApplication程序。
(1)定义一个Java类Point,用来描述平面直角坐标系中点的坐标,该类应该能描述点的横、纵坐标信息及一些相关操作,包括获取点的横、纵坐标,修改点的坐标,显示点的当前位置等。
(2)定义一个测试类javaTest,创建Point类的对象并对其进行有关的操作。
程序代码:
publicclassPoint{
doublex,y;
publicPoint(doublex,doubley){
this.x=x;
this.y=y;
}
publicdoublegetX(){
returnx;
publicdoublegetY(){
returny;
publicvoidsetX(doublex){
this.x=x;
publicvoidsetY(doubley){
this.y=y;
}
publicclassjavaTest{
publicstaticvoidmain(String[]args){
Pointp=newPoint(-3,8);
x=p.getX();
y=p.getY();
System.out.println("
点("
+x+"
"
+y+"
)的横坐标为:
"
+x);
)的纵坐标为:
+y);
if(x==0&
&
y==0)
System.out.println("
)在原点"
);
elseif(x==0&
y!
=0)
)在Y轴"
elseif(x!
=0&
)在X轴"
else{
inta=1;
if(x<
0&
y>
0)
a=2;
y<
a=3;
elseif(x>
a=4;
)在第"
+a+"
象限"
运行结果:
2.二、一副牌Deck有52张扑克Card组成(不含王牌),每张牌有自己的牌型suit(用char类型)和点数rank(用String类型),补充完整下面的类的定义。
publicclassCard{
/*注1:
此处添加代码*/
publicCard(/*注2:
此处添加代码*/){
this.suit=suit;
this.rank=rank;
publicStringtoString(){
returnsuit+rank;
}
publicstaticvoidmain(String[]args){
Cardc=newCard('
红'
10"
System.out.println(c);
charsuit;
Stringrank;
publicCard(charsuit,Stringrank){
publicStringtoString(){
returnsuit+rank;
publicstaticvoidmain(String[]args){
Cardc=newCard('
System.out.println(c);
三、假定根据学生的三门学位课程的分数决定其是否可以拿到学位,对于本科生,如果三门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。
根据上述要求,请完成以下Java类的设计:
(1)设计一个基类Student描述学生的共同特征。
(2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。
(3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。
(4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。
(1)、publicclassStudent{
Stringname;
inta,b,c;
publicStudent(Stringname,inta,intb,intc){
this.name=name;
this.a=a;
this.b=b;
this.c=c;
publicStringgetName(){
returnname;
publicintgetA(){
returna;
publicintgetB(){
returnb;
publicintgetC(){
returnc;
(2)、publicclassUndergraduateextendsStudent{
publicUndergraduate(Stringname,inta,intb,intc){
super(name,a,b,c);
(3)、publicclassGraduateextendsStudent{
publicGraduate(Stringname,inta,intb,intc){
(4)、publicclassStudentDemo{
publicstaticvoidmain(Stringargs[]){
Undergraduatezhang=newUndergraduate("
张三"
56,80,78);
Stringnamez=zhang.getName();
inta=zhang.getA();
intb=zhang.getB();
intc=zhang.getC();
System.out.println(namez+"
的三门成绩分别是:
、"
+b+"
+c+"
+"
平均成绩为:
+(a+b+c)/3);
if((a+b+c)/3>
=60){
System.out.println(namez+"
可以拿到学位"
else{
不可以拿到学位"
Graduateli=newGraduate("
李四"
68,89,81);
Stringnamel=li.getName();
inti=li.getA();
intj=li.getB();
intk=li.getC();
System.out.println(namel+"
+i+"
+j+"
+k+"
+(i+j+k)/3);
if((i+j+k)/3>
=80){
System.out.println(namel+"
四、假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:
(1)经理(Manager)——每月获得一份固定的工资
(2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成。
(3)一般工人(Worker)——按他每月工作的天数计算工资。
要求:
设计一个雇员类(Employee)描述所有雇员的共同特性,这个类提供一个计算工资的抽象方法computeSalary()。
经理、销售人员和一般工人对应的类都继承这个类,并重写计算工资的方法以给出它的具体实现。
abstractclassEmployee{
abstractintcomputeSalary(intx,inty);
publicclassManagerextendsEmployee{
intcomputeSalary(intx,inty){
}publicclassSalesman{
returnx+10*y;
publicclassWorker{
returnx*y;
publicclassGongzi{
Managerzhang=newManager();
Salesmanli=newSalesman();
Workerwang=newWorker();
puteSalary(4000,0);
puteSalary(3000,20);
puteSalary(100,25);
经理zhang的工资为:
+puteSalary(4000,0));
销