面向对象编程实验报告.docx

上传人:b****5 文档编号:4293863 上传时间:2022-11-28 格式:DOCX 页数:38 大小:1.07MB
下载 相关 举报
面向对象编程实验报告.docx_第1页
第1页 / 共38页
面向对象编程实验报告.docx_第2页
第2页 / 共38页
面向对象编程实验报告.docx_第3页
第3页 / 共38页
面向对象编程实验报告.docx_第4页
第4页 / 共38页
面向对象编程实验报告.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

面向对象编程实验报告.docx

《面向对象编程实验报告.docx》由会员分享,可在线阅读,更多相关《面向对象编程实验报告.docx(38页珍藏版)》请在冰豆网上搜索。

面向对象编程实验报告.docx

面向对象编程实验报告

甘肃政法学院

 

本科学生实验报告

(一)

姓名:

学院:

计算机科学学院

专业:

计算机科学与技术

班级:

实验课程名称:

JAVA开发与语言基础

试验时间2011年9月28日

指导教师及职称

实验成绩:

开课时间2011学年第一学期

 

甘肃政法学院实验管理中心印制

实验题目

面向对象编程

小组合作

姓名

唐晓梅

班级

2011级专升本班

学号

201181210126

一、实验目的:

1、熟悉Java面向对象程序设计的基本思想。

2、掌握类与对象的定义及使用方法。

3、掌握package语句与import语句的用法。

4、掌握java继承中父类及其子类的定义方法。

5、掌握子类重写父类同名方法的方法。

6、掌握用法。

二、实验环境:

装有JDK1.6,Eclipse的的计算机一台

三、实验内容与步骤:

(1)Java程序开发环境配置:

1、下载并安装JDK1.6,过程可参考教材P4-6。

2、

配置环境变量:

SDK平台提供的Java编译器(javac.exe)和Java解释器(java.exe)位于Java安装目录的bin文件夹中,为了能在任何目录中使用编译器和解释器,应在系统特性中设置Path。

对于Windows2000、Windows2003、WindowsXP,用鼠标右键点击“我的电脑”,弹出菜单,然后选择属性,弹出“系统特性”对话框,再单击该对话框中的高级选项,然后点击按钮“环境变量”,添加如下图所示的系统环境变量:

J2SDK的安装目录的jre文件夹中包含着Java应用程序运行时所需要的Java类库,这些类库被包含在jre\lib目录下的压缩文件rt.jar中。

因此,再添加如下图所示环境变量。

3、下载Eclipse3.4或以上版本,将其解压到某一目录下。

使用时只需双击eclipse图标即可。

4、在记事本中编写简单的Application程序,运用JDK命令方式在屏幕上打印输出“你好,很高兴学习Java”。

5、在记事本中编写简单的Applet程序,运用JDK命令方式在JavaApplet中绘制一行文字:

“这是一个JavaApplet程序”。

6、在Eclipse环境下完成3,4所要求的任务,可参考教材P416实验1的步骤。

(2)Java程序:

实验3类与对象

1、三角形、梯形和圆形的类封装:

分别定义三角形、梯形和圆形类,要求每个类中包含构造方法、求周长及面积的方法。

最后在主方法中为三角形、梯形和圆形类创建对象并打印输出各种图形的周长及面积。

该程序的模板代码如下:

请将其补充完整并调试运行。

AreaAndLength.java

classTrangle

{

doublesideA,sideB,sideC,area,length;

booleanboo;

publicTrangle(doublea,doubleb,doublec)

{

【代码1】//参数a,b,c分别赋值给sideA,sideB,sideC

if(【代码2】)//a,b,c构成三角形的条件表达式

{

【代码3】//给boo赋值。

}

else

{

【代码4】//给boo赋值。

}

}

doublegetLength()

{

【代码5】//方法体,要求计算出length的值并返回

}

publicdoublegetArea()

{

if(boo)

{

doublep=(sideA+sideB+sideC)/2.0;

area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));

returnarea;

}

else

{

System.out.println("不是一个三角形,不能计算面积");

return0;

}

}

publicvoidsetABC(doublea,doubleb,doublec)

{

【代码6】//参数a,b,c分别赋值给sideA,sideB,sideC

if(【代码7】)//a,b,c构成三角形的条件表达式

{

【代码8】//给boo赋值。

}

else

{

【代码9】//给boo赋值。

}

}

}

classLader

{

doubleabove,bottom,height,area;

Lader(doublea,doubleb,doubleh)

{

【代码10】//方法体,将参数a,b,c分别赋值给above,bottom,height

}

doublegetArea()

{

【代码11】//方法体,,要求计算出area返回

}

}

classCircle

{

doubleradius,area;

Circle(doubler)

{

【代码12】//方法体

}

doublegetArea()

{

【代码13】//方法体,要求计算出area返回

}

doublegetLength()

{

【代码14】//getArea方法体的代码,要求计算出length返回

}

voidsetRadius(doublenewRadius)

{

radius=newRadius;

}

doublegetRadius()

{

returnradius;

}

}

publicclassAreaAndLength

{

publicstaticvoidmain(Stringargs[])

{

doublelength,area;

Circlecircle=null;

Trangletrangle;

Laderlader;

【代码15】//创建对象circle

【代码16】//创建对象trangle。

【代码17】//创建对象lader

【代码18】//circle调用方法返回周长并赋值给length

System.out.println("圆的周长:

"+length);

【代码19】//circle调用方法返回面积并赋值给area

System.out.println("圆的面积:

"+area);

【代码20】//trangle调用方法返回周长并赋值给length

System.out.println("三角形的周长:

"+length);

【代码21】//trangle调用方法返回面积并赋值给area

System.out.println("三角形的面积:

"+area);

【代码22】//lader调用方法返回面积并赋值给area

System.out.println("梯形的面积:

"+area);

【代码23】//trangle调用方法设置三个边,要求将三个边修改为12,34,1。

【代码24】//trangle调用方法返回面积并赋值给area

System.out.println("三角形的面积:

"+area);

【代码25】//trangle调用方法返回周长并赋值给length

System.out.println("三角形的周长:

"+length);

}

}

通过编译得出如下答案:

【代码1】:

sideA=a;

sideB=b;

sideC=c;

【代码2】:

a+b>c&&a+c>b&&c+b>a

【代码3】:

boo=true;

【代码4】:

boo=false;

【代码5】:

if(boo)

{

length=sideA+sideB+sideC;

returnlength;

}

else

{

System.out.println("不是一个三角形,不能计算周长");

return0;

}

【代码6】:

sideA=a;sideB=b;sideC=c;

【代码7】:

a+b>c&&a+c>b&&c+b>a

【代码8】:

boo=true;

【代码9】:

boo=false;

【代码10】:

above=a;

bottom=b;

height=h;

【代码11】:

area=(above+bottom)/2*height;

returnarea;

【代码12】:

radius=r;

【代码13】:

return3.14*radius*radius;

【代码14】:

return3.14*2*radius;

【代码15】:

circle=newCircle(10);

【代码16】:

trangle=newTrangle(3,4,5);

【代码17】:

lader=newLader(3,4,10);

【代码18】:

length=circle.getLength();

【代码19】:

area=circle.getArea();

【代码20】:

length=trangle.getLength();

【代码21】:

area=trangle.getArea();

【代码22】:

area=lader.getArea();

【代码23】:

trangle.setABC(12,34,1);

【代码24】:

area=trangle.getArea();

【代码25】:

length=trangle.getLength();

2、学习实例成员与类成员的区别:

按照下面模板代码中的注释信息将该程序补充完整并调试运行。

Example.java

classA

{

【代码1】//声明一个float型实例变量a

【代码2】//声明一个float型类变量b,即static变量b

voidsetA(floata)

{

【代码3】//将参数a的值赋值给成员变量a

}

voidsetB(floatb)

{

【代码4】//将参数b的值赋值给成员变量b

}

floatgetA()

{

returna;

}

floatgetB()

{

returnb;

}

voidinputA()

{

System.out.println(a);

}

staticvoidinputB()

{

System.out.println(b);

}

}

publicclassExample

{

publicstaticvoidmain(Stringargs[])

{

【代码5】//通过类名操作类变量b,并赋值100

【代码6】//通过类名调用方法inputB()

Acat=newA();

Adog=newA();

【代码7】//cat象调用方法setA(inta)将cat的成员a的值设置为200

【代码8】//cat调用方法setB(intb)将cat的成员b的值设置为400

【代码9】//dog象调用方法setA(inta)将dog的成员a的值设置为150

【代码10】//dog调用方法setB(intb)将dog的成员b的值设置为300

【代码11】//cat调用inputA()。

【代码12】//cat调用inputB()。

【代码13】//dog调用inputA()。

【代码14】//dog调用inputB()。

}

}

通过编译得出如下答案:

 

【代码1】:

floata;

【代码2】:

staticfloatb;

【代码3】:

this.a=a;

【代码4】:

this.b=b;

【代码5】:

A.b=100;

【代码6】:

A.inputB();

【代码7】:

cat.setA(200);

【代码8】:

cat.setB(400);

【代码9】:

dog.setA(150);

【代码10】:

dog.setB(300);

【代码11】:

cat.inputA();

【代码12】:

cat.inputB();

【代码13】:

dog.inputA();

【代码14】:

dog.inputB();

 

3、使用package语句与import语句:

上机调试下面程序,学会package与import语句的用法。

SquareEquation.java

packagetom.jiafei;

publicclassSquareEquation

{

doublea,b,c;

doubleroot1,root2;

booleanboo;

publicSquareEquation(doublea,doubleb,doublec)

{

this.a=a;

this.b=b;

this.c=c;

if(a!

=0)

{

boo=true;

}

else

{

boo=false;

}

}

publicvoidgetRoots()

{

if(boo)

{

System.out.println("是一元2次方程");

doubledisk=b*b-4*a*c;

if(disk>=0)

{

root1=(-b+Math.sqrt(disk))/(2*a);

root2=(-b-Math.sqrt(disk))/(2*a);

System.out.printf("方程的根:

%f,%f\n",root1,root2);

}

else

{

System.out.printf("方程没有实根\n");

}

}

else

{

System.out.println("不是一元2次方程");

}

}

publicvoidsetCoefficient(doublea,doubleb,doublec)

{

this.a=a;

this.b=b;

this.c=c;

if(a!

=0)

{

boo=true;

}

else

{

boo=false;

}

}

}

SunRise.java

importtom.jiafei.*;

classSunRise

{

publicstaticvoidmain(Stringargs[])

{

SquareEquationequation=newSquareEquation(4,5,1);

equation.getRoots();

equation.setCoefficient(-3,4,5);

equation.getRoots();

}

}

通过编译得出如下答案:

【这是在JDK下运行的错误,因为没有在JDK下建包】

如下图所示:

【这个是在eclipse下运行的,因为把包的名字建错了,所以出错。

 

【这个就把包的名字改过来了,改成tao.jiafei,这样就对了。

实验4继承与接口

1、定义父类People,分别定义People类的子类ChinaPeople,AmericanPeople和BeijingPeople并分别重写父类中的各个方法。

最后在主方法中分别创建各子类的对象并调用各自的方法打印输出信息。

该程序的模板代码如下:

请将其补充完整并调试运行。

classPeople

{

protecteddoubleweight,height;

publicvoidspeakHello()

{

System.out.println("yayawawa");

}

publicvoidaverageHeight()

{

height=173;

System.out.println("averageheight:

"+height);

}

publicvoidaverageWeight()

{

weight=70;

System.out.println("averageweight:

"+weight);

}

}

classChinaPeopleextendsPeople

{

【代码1】//重写publicvoidspeakHello()方法,要求输出类似“你好,吃了吗”这样的

//汉语信息

【代码2】//重写publicvoidaverageHeight()方法,要求输出类似

//“中国人的平均身高:

168.78厘米”这样的汉语信息

【代码3】//重写publicvoidaverageWeight()方法,

//要求输出类似“中国人的平均体重:

65公斤”这样的汉语信息

publicvoidchinaGongfu()

{

【代码4】//输出中国武术的信息,例如:

"坐如钟,站如松,睡如弓"等

}

}

classAmericanPeopleextendsPeople

{

【代码5】//重写publicvoidspeakHello()方法,要求输出类似

//“Howdoyoudo”这样的英语信息。

【代码6】//重写publicvoidaverageHeight()方法

【代码7】//重写publicvoidaverageWeight()方法

publicvoidamericanBoxing()

{

【代码8】//输出拳击的信息,例如,“直拳”、“钩拳”等

}

}

classBeijingPeopleextendsChinaPeople

{

【代码9】//重写publicvoidspeakHello()方法,要求输出类似“您好”这样的汉语信息

【代码10】//重写publicvoidaverageHeight()方法

【代码11】//重写publicvoidaverageWeight()方法

publicvoidbeijingOpera()

{

【代码12】//输出京剧的信息

}

}

publicclassExample

{

publicstaticvoidmain(Stringargs[])

{

ChinaPeoplechinaPeople=newChinaPeople();

AmericanPeopleamericanPeople=newAmericanPeople();

BeijingPeoplebeijingPeople=newBeijingPeople();

chinaPeople.speakHello();

americanPeople.speakHello();

beijingPeople.speakHello();

chinaPeople.averageHeight();

americanPeople.averageHeight();

beijingPeople.averageHeight();

chinaPeople.averageWeight();

americanPeople.averageWeight();

beijingPeople.averageWeight();

chinaPeople.chinaGongfu();

americanPeople.americanBoxing();

beijingPeople.beijingOpera();

beijingPeople.chinaGongfu();

}

}

通过编译得出如下答案:

【代码1】:

publicvoidspeakHello()

{

System.out.println("你好,吃饭了吗?

");

}

【代码2】:

publicvoidaverageHeight()

{

height=173;

System.out.println("中国人的平均身高:

"+height+"厘米");

}

【代码3】:

publicvoidaverageWeight()

{

weight=67.34;

System.out.println("中国人的平均体重:

"+weight+"公斤");

}

【代码4】:

System.out.println("坐如钟,站如松,睡如弓");

【代码5】:

publicvoidspeakHello()

{

System.out.println("HowdoYoudo");

}

【代码6】:

publicvoidaverageHeight()

{

height=188;

System.out.println("AmerianAverageheight:

"+height+"cm");

}

【代码7】:

publicvoidaverageWeight()

{

weight=80.23;

System.out.println("AmerianAverageweight:

"+weight+"kg");

}

【代码8】:

System.out.println("直拳、钩拳");

【代码9】:

publicvoidspeakHello()

{

System.out.println("您好");

}

【代码10】:

publicvoidaverageHeight()

{

height=16;

System.out.println("北京人的平均身高:

"+height+"厘米");

}

【代码11】:

publicvoidaverageWeight()

{

weight=6;

System.out.println("北京人的平均体重:

"+weight+"公斤");

}

【代码12】:

System.out.println("京剧术语");

2、读懂下面模板代码,按要求补充程序并调试运行。

掌握抽象类的定义及其实现方法,学习上转型对象的运用方法。

abstractclassEmployee

{

publicabstractdoubleearnings();

}

classYearWorkerextendsEmployee

{

【代码1】//重写earnings()方法

}

classMonthWorkerextendsEmployee

{

【代码2】//重写earnings()方法。

}

classWeekWorkerextendsEmployee

{

【代码3】//重写earnings()方法。

}

classCompany

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1