面向对象程序设计类与对象实验报告.docx
《面向对象程序设计类与对象实验报告.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计类与对象实验报告.docx(10页珍藏版)》请在冰点文库上搜索。
面向对象程序设计类与对象实验报告
实验报告
课程名称面向对象程序设计
实验项目名称类与对象
班级与班级代码
实验室名称(或课室)
专业
任课教师
学号:
姓名:
实验日期:
年月日
广东商学院教务处制
姓名实验报告成绩
完成情况
项目
很好
好
一般
及格
差
实验目的实现
实验内容完成
实验步骤和操作
是否符合要求
分析与思考
总成绩
指导教师(签名)
年月日
1,实验目的:
(1)掌握类的定义和使用;
(2)掌握对象的声明和使用;
(3)掌握构造函数的概念和使用;
(4)掌握类及其成员的访问控制符。
2.实验器材和实验环境:
计算机,网络环境,投影设备。
实验相关软件:
Windowxp、Java软件开发工具包(JSDK)。
3.实验内容和步骤;
1)阅读下面的程序,在main()方法里添加语句完成如下的功能:
创建一个MyValue类的对象myValue.
为myValue对象中的Value域赋值10。
使用getValue()方法获得myValue对象中的数据并将他打印在屏幕上。
解:
编程分析:
a,创立一个公有的主类UseValue;
b,调用setValue()方法为myValue赋值;
c,使用getValue()方法返回myValue的值。
补写程序如下:
publicclassUseValue
{
publicstaticvoidmain(Stringargs[])
{MyValuexx=newMyValue();
xx.setValue();
Syetem.out.println(xx.getValue0);
}
编写源程序和输出结果如图1。
调试分析:
本程序主要考察了类的定义和方法的定义,通过调用setValue方法和getvalue方法实现对value的赋值。
11
图1
2)试编写Java代码实现一个计算器类counter,其中包含:
域counterValue用来保存计算器的当前数值;
方法increment()计算器加一;
方法decrement()计算器减一;
方法reset()计算器清零。
对于这个类,你计划定义几个构造函数?
解:
编程分析:
a,本题有三个方法,分别是increament()方法,decrement()方法,reset()方法;
b,increament()实现对counterValue的加一,decrement()方法实现对counterValue的减一,reset()方法将counterValue清零;
c,一个域为counterValue。
编写源程序如下:
调试分析:
本题使用了多个方法,但并不十分复杂。
构造函数没有返回值,它的主要作用就是完成对类对象的初始化工作,,一般不能由编程人员显式的使用。
3)使用计算器类,编程管理会议室投影仪的出借情况。
每新购一台投影仪或收回一台投影仪,计算器加一;每淘汰一台投影仪或借出一台投影仪,计算器减一。
解:
编程分析:
a,用域LoanNumber来表示收回或借出的投影仪数;用域Loan表示投影仪的总个数;用域connect判断投影仪是借出还是收回;
b,建立方法performConnection(intcn)来判断connect是正确还是错误,建立方法getBalance(),如果connect是正确的,Loan则加一,如果connect是错误的,则Loan减一,最后返回Loan的数量。
编写源程序如下:
classMyLoan
{privateintLoan=0;
booleanconnected;
privateintLoanNumber;
booleanperformConnection(intcn)
{LoanNumber=cn;
if(cn==1)
{connected=true;
returnconnected;
}
else
{connected=false;
returnconnected;
}
}
doublegetBalance()
{if(connected)
{Loan++;
returnLoan;
}
else
{Loan--;
returnLoan;
}
}
}
publicclassLoan{
publicstaticvoidmain(Stringargs[])
{MyLoanhh=newMyLoan();
System.out.println(hh.getBalance());
}
}
调试分析:
MyLoan类内定义了三个域,,它们在类定义中被声明但在创建对象时才分配空间,并保存一个对象的数据。
创建了两个方法,目的是定义具有相对独立和常用功能的模块,使程序结构清晰,也利于模块在不同场合的重复利用。
4)编程实现矩形类,其中应包括计算矩形周长和面积的方法。
如何使你的定义更好的满足面向对象程序设计中信息隐藏和封装的原则?
对于这个类,你计划定义几个构造函数?
解:
编程分析:
a,建立一个对象MyJuxing;
b,创建两个对象cn,pw来表示周长和面积,由所获得的x,y来计算cn和pw的值。
C,构建方法Addiction()计算周长和面积的大小,并赋值给cn和pw。
d,运用Addiction1()和Addiction2()返回cn和pw的值。
源程序和输出结果如下:
调试分析:
封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统地其他部分只有通过包裹在数据外面的被授权的操作,才能够与这个这个抽象数据类型交流和互换。
5)使用矩形类,编程统计若干土地的相关信息。
由用户输入每块土地的长和宽,程序将计算器面积并显示出来。
解:
编程分析:
a,本题应用了上一题中的一些相似的方法;
b,在程序中还使用了InputStream的基本输入流的抽象类,并不能直接对他进行实例化,但可以通过其子类构造方法来生成一个输入流的对象。
importjava.io.*;
classUseRectangle
{
publicstaticvoidmain(String[]args)throwsIOException
{
System.out.println("请输入两个整数:
");
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
BufferedReaderba=newBufferedReader(newInputStreamReader(System.in));
Stringstr1=br.readLine();
Stringstr2=ba.readLine();
inta=Integer.parseInt(str1);
intb=Integer.parseInt(str2);
Rectanglenewone=newRectangle(a,b);
System.out.println(newone.area(a,b));
}
}
classRectangle
{
publicinta,b;
publicintgirth(inta,intb){
return2*(a+b);
}
publicintarea(inta,intb){
returna*b;
}
Rectangle(intchang,intkuan){
inta=chang;
intb=kuan;
}
}
调试分析:
这一题除了构造方法外,还定义了完成基本操作的抽象方法。