类的设计与封装一实验报告.doc

上传人:b****2 文档编号:337710 上传时间:2022-10-09 格式:DOC 页数:10 大小:100.50KB
下载 相关 举报
类的设计与封装一实验报告.doc_第1页
第1页 / 共10页
类的设计与封装一实验报告.doc_第2页
第2页 / 共10页
类的设计与封装一实验报告.doc_第3页
第3页 / 共10页
类的设计与封装一实验报告.doc_第4页
第4页 / 共10页
类的设计与封装一实验报告.doc_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

类的设计与封装一实验报告.doc

《类的设计与封装一实验报告.doc》由会员分享,可在线阅读,更多相关《类的设计与封装一实验报告.doc(10页珍藏版)》请在冰豆网上搜索。

类的设计与封装一实验报告.doc

浙江大学城市学院实验报告

课程名称面向对象程序设计

实验项目名称类的设计与封装实验

(一)

学生姓名高宁雯专业班级计算1005学号31001221

一.实验目的和要求

1.掌握使用类将对象的属性与功能封装在类中的特点

2.掌握实例方法与构造方法

二.实验内容

1.分析Time类的设计

2.分析并设计Product类

3.分析并设计Fraction类

4.设计Rectangle类

5.设计Student类及其测试类School类

三.实验结果与分析(可将程序运行结果截屏,也可分析运行结果)

1.阅读以下关于Time类的代码,分析程序并回答相关的问题

importjava.text.DecimalFormat;

publicclassTime{

privateinthour;

privateintminute;

privateintsecond;

Time(){hour=0;minute=0;second=0;}

Time(inth){hour=h;minute=0;second=0;}

Time(inth,intm){hour=h;minute=m;second=0;}

Time(inth,intm,ints){hour=h;minute=m;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(){

DecimalFormattwoDigits=newDecimalFormat("00");

return((getHour()==12||getHour()==0)?

12:

getHour()%12)+":

"+、twoDigits.format(getMinute())+":

"+twoDigits.format(getSecond())+(getHour()<12?

"AM":

"PM");

}

}

(1)Time类共有几个构造器(即构造方法),作用有什么不同?

5种

Time(){hour=0;minute=0;second=0;}

无参数构造,初始化hour,minute,second;

Time(inth){hour=h;minute=0;second=0;}

定义参数h,将其赋值给hour;

Time(inth,intm){hour=h;minute=m;second=0;}

定义参数h和m,将其赋值给hour,minute;

Time(inth,intm,ints){hour=h;minute=m;second=s;}

定义参数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);

System.out.println("Thetimeis"+t2.toStandardString());

输出“The time is 1:

59:

60PM”

(5)如果以下代码段出现在Time类的测试程序的main方法中,输出结果是什么?

Timet3=newTime(13,30,0);

Timet4=newTime(t3);

System.out.println("Thetimeis"+t4.toUniversalString());

“The time is 1:

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>b)       {           swap(a,b);       }

       intc;

       for(c=a%b;c>0 ;c=a%b)       {           a=b;           b=c;       }

       returnb;

   }*/

//分数输出方法

voidFracOutput(){

}

publicstaticvoidmain(Stringargs[]){

}

4.构造一个Rectangle类(矩形类),它有两个浮点型属性length(长)和width(宽)。

该类具有两个构造函数(无参和有参),perimeter()和area()方法分别返回矩形的周长和面积,编写相应的main方法测试Rectangle类。

程序结构如下:

publicclassRectangel{

//实例变量的声明

//构造器的定义

//perimeter方法定义

//area方法定义

publicstaticvoidmain(String[]args){

//定义Rectangle类的对象引用r

//调用perimeter方法,并显示周长

//调用area方

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

当前位置:首页 > 考试认证 > IT认证

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

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