类的设计与封装实验报告Word格式文档下载.docx
《类的设计与封装实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《类的设计与封装实验报告Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
![类的设计与封装实验报告Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/8/4d27cd57-6f2b-4676-b747-ffc01a80024b/4d27cd57-6f2b-4676-b747-ffc01a80024b1.gif)
privateintsecond;
Time(){hour=0;
minute=0;
second=0;
}
Time(inth){hour=h;
Time(inth,intm){hour=h;
minute=m;
Time(inth,intm,ints){hour=h;
second=s;
Time(Timetime){
this.hour=time.getHour();
this.minute=time.getMinute();
this.second=time.getSecond();
publicintgetHour(){returnhour;
publicintgetMinute(){returnminute;
publicintgetSecond(){returnsecond;
publicStringtoUniversalString(){
DecimalFormattwoDigits=newDecimalFormat("
00"
);
returntwoDigits.format(getHour())+"
:
"
+
twoDigits.format(getMinute())+"
twoDigits.format(getSecond());
publicStringtoStandardString(){
return((getHour()==12||getHour()==0)?
12:
getHour()%12)+"
+、twoDigits.format(getMinute())+"
+twoDigits.format(getSecond())+(getHour()<
12?
AM"
PM"
(1)Time类共有几个构造器(即构造方法),作用有什么不同?
5种
无参数构造,初始化hour,minute,second;
定义参数h,将其赋值给hour;
定义参数h和m,将其赋值给hour,minute;
定义参数h,m和s,将其赋值给hour,minute,second;
(2)getTime(),getMinute(),getSecond()方法的作用是什么?
如果去掉这些方法,程序可以完成同样的功能吗?
如何修改?
以实例的方法,在Time(Timetime)为hour,minute,second赋值,
去掉后改为Time(Timetime){
this.hour=hour;
this.minute=minute;
this.second=second;
(3)如果以下代码段出现在Time类的测试程序的main方法中,输出结果是什么?
Timet1=newTime(5);
System.out.println("
Thetimeis"
+t1.toStandardString());
输出“The
time
is
4AM”
(4)如果以下代码段出现在Time类的测试程序的main方法中,输出结果是什么?
Timet2=newTime(13,59,60);
Thetimeis"
+t2.toStandardString());
1:
59:
60PM”
(5)如果以下代码段出现在Time类的测试程序的main方法中,输出结果是什么?
Timet3=newTime(13,30,0);
Timet4=newTime(t3);
+t4.toUniversalString());
“The
30:
00PM”
2.确定以下代码段中是否存在错误,如果有错误,指出是逻辑错误还是语法错误,请在程序中用“~~~~~”标出错误的地方,并在第个练习的空白处写下正确的代码。
如果代码中没有错误,则在答案中写上“没有错误”。
注意:
在每个程序段中可能包含多处错误。
(1)以下代码定义了Product类,它有一个不带参数的构造器,将产品的名称设置为一个空的String,将price设置为0.00;
该类还有一个toProductString方法,它返回一个包含产品的name和price的String
importjava.text.*;
publicclassProduct{
privateStringname;
privatedoubleprice;
privatestaticDecimalFormatmoney=newDecimalFormat("
$0.00"
publicProduct(){
name="
"
;
price=0.00;
publicStringtoProductString(){
returnname+"
costs"
+money.format(price);
}//endclassProduct
答案:
没有错误。
(2)如下代码定义了Product类的另一个构造器,它有2个参数,并将这些参数赋给相应的实例变量
publicProduct(Stringname,doubleprice){
name=name;
price=price;
this.name=name;
this.price=price;
(3)如下代码定义了两个set方法,用于设置Product类的name和price
publicsetName(){
this.name=name;
publicsetPrice(){
this.price=price;
publicStringsetName(){
returnname;
publicdoublesetPrice(){
returnprice;
(4)如下代码位于测试Product类的应用程序的main方法中,创建一个Product对象,并显示一个包含对象的实例变量值的String
Productp1=newProduct("
Milk"
5.5);
System.out.println(p1.name+"
+p1.price);
(5)如下代码位于测试Product类的应用程序的main方法中,创建一个Product对象,设置其实例变量的值,并显示一个包含实例变量值的String
Productp1=newProduct();
p1.setName();
p1.setPrice();
System.out.println(p1.toProductString("
Eggs"
3));
3.补充以下代码,完成对一个分数类Fraction的定义,并测试这个类
publicclassFraction{
privateintnume;
//分子
privateintdeno;
//分母
//无参构造器
publicFraction(){
this.nume=0;
this.deno=1;
//初始化实例变量
//有参构造器
publicFraction(intn,intd){
//化简分数方法
voidFracSimp()
{
//求分数的分子和分母的最大公约数
//化简分数
/*欧几里德算法定理:
gcd(a,b)=gcd(b,amodb),以下是c语言的代码,可以参考
voidswap(int&
a,int&
b)
{
intc=a;
a=b;
b=c;
}
intgcd(inta,intb)
{
if(0==a)
returnb;
if(0==b)
returna;
if(a>
swap(a,b);
intc;
for(c=a%b;
c>
0
c=a%b)
a=b;
}*/
//分数输出方法
voidFracOutput(){
publicstaticvoidmain(Stringargs[]){
4.构造一个Rectangle类(矩形类),它有两个浮点型属性length(长)和width(宽)。
该类具有两个构造函数(无参和有参),perimeter()和area()方法分别返回矩形的周长和面积,编写相应的main方法测试Rectangle类。
程序结构如下:
publicclassRectangel{
//实例变量的声明
//构造器的定义
//perimeter方法定义
//area方法定义
publicstaticvoidmain(String[]args){
//定义Rectangle类的对象引用r
//调用perimeter方法,并显示周长
//调用area方法,并显示面积
5.设计一个学生类Student,程序框架如下:
publicclassStudent{
//设计一个类变量(静态变量)记录学生人数
private
//设计基本属性有“学号”、“班号”、“姓名”、“性别”、“年龄”、“成绩”(用数组表示6门课的成绩)
//设计构造器,传递学