面向对象程序设计实验指导书.docx

上传人:b****5 文档编号:12123377 上传时间:2023-04-17 格式:DOCX 页数:37 大小:28.41KB
下载 相关 举报
面向对象程序设计实验指导书.docx_第1页
第1页 / 共37页
面向对象程序设计实验指导书.docx_第2页
第2页 / 共37页
面向对象程序设计实验指导书.docx_第3页
第3页 / 共37页
面向对象程序设计实验指导书.docx_第4页
第4页 / 共37页
面向对象程序设计实验指导书.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

面向对象程序设计实验指导书.docx

《面向对象程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验指导书.docx(37页珍藏版)》请在冰豆网上搜索。

面向对象程序设计实验指导书.docx

面向对象程序设计实验指导书

《面向对象程序设计(Java)》实验指导书

实验名称:

面向对象程序设计

实验类型:

综合性

学  时:

20

适用对象:

实验一Java大、小程序的应用程序

一、实验目的

熟悉Java开发环境,并让学生掌握开发JAVA应用程序的三个步骤:

编写源文件、编译源文件和运行应用程序。

二、实验要求

分别编写一个Java应用程序和JavaApplet应用程序,输出两行文字:

“你好,很高兴学习Java”和“Wearestudents”。

三、实验模板

按模板要求,将代码1和代码2替换为程序代码。

模板1:

Hello.java

publicclassHello

{

publicstaticvoidmain(Stringargs[])

{

代码1//命令行窗口输出“你好,很高兴学习Java”

Aa=newA();

a.fA();

}

}

classA

{

voidfA()

{

代码2//命令行窗口输出“Wearestudents”

}

}

模板2:

FirstApplet.java

importjava.applet.*;

importjava.awt.*;

publicclassFirstAppletextendsApplet

{

publicvoidpaint(Graphicsg)

{

g.setColor(Color.blue);

代码1//在JavaApplet中绘制一行文字:

“你好,很高兴学习Java”

g.setColor(Color.red);

g.setFont(newFont("宋体",Font.BOLD,36);

代码2//绘制一行文字:

“Wearestudents”

}

}

四、实验环境

JDK和Eclipse软件开发环境。

五、实验步骤

1.打开一个文本编辑器。

如“记事本”。

2.按“程序模板”输入源程序。

3.保存源文件。

注意程序名要与程序中的主类名一致。

4.打开命令窗口编译源程序。

使用javac命令。

5.运行程序。

1)对于大程序的运行,直接使用java命令。

2)对于小程序的运行,则需编写一个html文件,如FirstApplet.html,内容如下:

用浏览器或appletviewer打开FirstApplet.html文件。

六、思考题

1.程序中的主类如果不用public修饰,编译能通过吗?

2.程序中的主类如果不用public修饰,程序能正确运行吗?

3.编译器怎样提示将String写成string这一错误?

4.程序将paint()方法误写成Paint(),编译能通过吗?

运行时能看到有关的输出信息吗?

5.程序中如果没有“importjava.awt.*”语句,编译时会出现哪些错误提示?

实验二从键盘输入数据

一、实验目的

让学生掌握从键盘输入基本类型的数据。

二、实验要求

分别编写一个Java应用程序,用户从键盘输入一个浮点数据,程序将输出这个数的平方和三次方。

三、实验模板

按模板要求,将代码1、代码2和代码3替换为程序代码。

InputFloat.java

importjava.util.*;

publicclassInputFloat

{

publicstaticvoidmain(Stringargs[])

{

doublea,b,c;

Scannerreader=newScanner(System.in);

System.out.println("从键盘输入一个浮点数");

【代码1】//reader调用方法读取用户从键盘输入的数据,并赋值给a

b=a*a;

c=a*a*a;

【代码2】//输出b

【代码3】//输出c

}

}

四、思考题

1.语句bytex=128;能通过编译吗?

2.intx=(byte)128;程序输出变量x的值是多少?

3.程序运行时,用户从键盘输入abc,程序提示怎样的错误?

实验三表达式与循环语句

(一)

一、实验目的

让学生使用if-else分支和while循环语句解决问题。

二、实验要求

分别编写一个Java应用程序,实现如下功能:

随机分配一个1~100之间的整数;用户从键盘输入自己的猜测;程序返回信息分别是“猜大了”、“猜小了”和“猜对了”;根据提示再次输入数据,直到信息为“猜对了”为止。

三、实验模板

按模板要求,将【代码1】~【代码6】替换为Java程序代码。

importjava.util.*;

publicclassGuessNumber

{

publicstaticvoidmain(Stringargs[])

{

System.out.println("给你一个1至100之间的整数,请猜测这个数");

intrealNumber=(int)(Math.random()*100)+1;

intyourGuess=0;

Scannerreader=newScanner(System.in);

System.out.println("输入您的猜测:

");

【代码1】//reader调用方法获取用户从键盘键入的整数,并赋值给yourGuess

while(【代码2】)//循环条件。

{

if(【代码3】)//条件代码。

{

System.out.println("猜大了,请再猜:

");

【代码4】//reader调用方法获取用户从键盘键入的整数,并赋值给yourGuess

}

elseif(【代码5】)//条件代码

{

System.out.println("猜小了,请再猜:

");

【代码6】//reader调用方法获取用户从键盘键入的整数,并赋值给yourGuess

}

}

System.out.println("猜对了!

");

}

}

四、思考题

1.用“yourGuess>realNumber”替换代码2可以吗?

2.省略代码4或代码6,程序运行会出现怎样的结果?

3.语句System.out.println("猜对了!

");为何要放在while循环语句之后,放在while语句的循环体中合理吗?

实验三表达式与循环语句

(二)

一、实验目的

让学生使用if-elseif多分支语句。

二、实验要求

分别编写一个Java应用程序,输入一个1~99999之间的整数;程序判断这是个几位数;并判断这个数是否是回文数(将该数含有的数字逆序排列后得到的数和原数相同,如12121和3223都是回文数)。

三、实验模板

按模板要求,将【代码1】~【代码9】替换为Java程序代码。

Number.java

importjava.util.*;

publicclassNumber

{

publicstaticvoidmain(Stringargs[])

{

intnumber=0,d5,d4,d3,d2,d1;

Scannerreader=newScanner(System.in);

System.out.println("从键盘输入一个1至99999之间的数");

while(reader.hasNextInt())

{

number=reader.nextInt();

if(【代码1】)//判断number在1至99999之间的条件

{

【代码1】//计算number的最高位(万位)d5

【代码2】//计算number的千位d4

【代码3】//计算number的百位d3

d2=number%100/10;

d1=number%10;

if(【代码4】)//判断number是5位数的条件

{

System.out.printf("\n%d是5位数",number);

If(【代码5】)//判断number是回文数的条件

{

System.out.printf("\t%d是回文数",number);

}

else

{

System.out.printf("\t%d不是回文数",number);

}

}

elseif(【代码6】)//判断number是4位数的条件

{

System.out.printf("\n%d是4位数",number);

If(【代码7】)//判断number是回文数的条件码

{

System.out.printf("\t%d是回文数",number);

}

else

{

System.out.printf("\t%d不是回文数",number);

}

}

elseif(【代码8】)//判断number是3位数的条件

{

System.out.printf("\n%d是3位数",number);

If(【代码9】)//判断number是回文数的条件

{

System.out.printf("\t%d是回文数",number);

}

else

{

System.out.printf("\t%d不是回文数",number);

}

}

elseif(d2!

=0)

{

System.out.printf("\n%d是2位数",number);

if(d1==d2)

{

System.out.printf("\t%d是回文数",number);

}

else

{

System.out.printf("\t%d不是回文数",number);

}

}

elseif(d1!

=0)

{

System.out.printf("\n%d是1位数",number);

System.out.printf("\t%d是回文数",number);

}

}

else

{

System.out.printf("\n%d不在1至99999之间",number);

}

System.out.printf("%n可继续输入整数,或输入非整数结束程序%n");

}

System.out.println("你输出的数据不是整数");

}

}

四、问答题

1.运行时输入23.89,程序提示怎样的信息?

2.运行时输入1221,程序提示怎样的信息?

3.运行时输入123456,程序提示怎样的信息?

4.运行时输入32567,程序提示怎样的信息?

实验四类与对象

(一)

一、实验目的

让学生学习使用类来封装对象的属性和功能。

二、实验要求

编写一个Java应用程序,该程序有3个类:

Trangle,Lader和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。

具体要求:

(1)Trangle类具有类型为double的三个边以及周长、面积属性,Trangle类具有返回周长、面积以及修改三条边的功能。

另外,Trangle类还具有一个boolean类型的属性,该属性用于判断三个数能否构成一个三角形。

(2)Lader类具有类型为double的上底、下底、高、面积属性,具有返回面积的功能。

(3)Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。

三、实验模板

按模板要求,将【代码1】~【代码25】替换为Java程序代码。

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】//方法体

}

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.创建一个对象时,成员变量被分配内存空间,这些内存空间称为该对象的实体或变量,而对象中存放着引用,以确保这些变量由该对象操作使用。

2.空对象不能使用,即不能让一个空对象去调用方法产生行为。

由于对象动态地分配实体,所以Java的编译器对空对象不做检查。

因此,在编写程序时要避免使用空对象。

五、实验内容

1.程序中仅省略代码15,编译能通过吗?

2.程序中仅省略代码16,编译能通过吗?

3.给Trangle类增加3个方法,分别用来返回3个边:

sideA,sideB和sideC。

4.让AreaAndLength类中的circle对象调用方法修改半径,然后输出修改后的半径以及修改半径后的圆的面积和周长。

实验四类与对象

(二)

一、实验目的

让学生掌握类变量与实例变量,以及类方法与实例方法的区别。

二、实验要求

按程序模板的要求编写源文件,特别注意程序的输出结果,并能正确地解释输出的结果。

三、实验模板

按模板要求,将【代码1】~【代码14】替换为Java程序代码。

Example.java

classA

{

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

a

【代码2】//声明一个float型类变量:

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的值设置为200

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

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

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

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

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

}

}

四、实验内容

1.将inputA()方法中的System.out.println(a);改写为System.out.println(a+b);编译是否出错?

为什么?

2.将inputB()方法中的System.out.println(b);改写为System.out.println(a+b);编译是否出错?

为什么?

实验四类与对象(三)

一、实验目的

让学生掌握package和import语句。

二、实验要求

1.按实验要求使用package语句,并用import语句使用Java平台提供的包中的类以及自定义包中的类。

2.掌握一些重要的操作步骤。

三、实验模板

1)模板1

将模板1给出的Java源文件命名为Trangle.java,将编译后得到的字节码文件复制到C:

/1000/tom/jiafei目录中。

Trangle.java

packagetom.jiafei;

publicclassTrangle

{

doublesideA,sideB,sideC;

booleanboo;

publicTrangle(doublea,doubleb,doublec)

{

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

if(a+b>c&&a+c>b&&c+b>a)

{

System.out.println("我是一个三角形");

boo=true;

}

else

{

System.out.println("我不是一个三角形");

boo=false;

}

}

publicvoid计算面积()

{

if(boo)

{

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

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

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

System.out.println("面积是:

"+area);

}

else

{

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

}

}

publicvoid修改三边(doublea,doubleb,doublec)

{

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

if(a+b>c&&a+c>b&&c+b>a)

{

boo=true;

}

else

{

boo=false;

}

}

}

2)模板2

将模板2的Java源程序保存到D:

\2000中。

在编译模板2之前,要重新设置classpath.。

假设本地机SDK的安装目录是E:

\jdk1.5,在命令行执行如下命令:

setclasspath=E:

\jdk1.5\jre\lib\rt.jar;.;c:

\1000

接下来编译模板2源程序。

SunRise.java:

importtom.jiafei.Trangle;

importjava.util.Date;

classSunRise

{

publicstaticvoidmain(Stringargs[])

{

Trangletrangle=newTrangle(12

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

当前位置:首页 > 考试认证 > 公务员考试

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

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