java实验4.docx

上传人:b****8 文档编号:11250489 上传时间:2023-02-26 格式:DOCX 页数:10 大小:42.21KB
下载 相关 举报
java实验4.docx_第1页
第1页 / 共10页
java实验4.docx_第2页
第2页 / 共10页
java实验4.docx_第3页
第3页 / 共10页
java实验4.docx_第4页
第4页 / 共10页
java实验4.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

java实验4.docx

《java实验4.docx》由会员分享,可在线阅读,更多相关《java实验4.docx(10页珍藏版)》请在冰豆网上搜索。

java实验4.docx

java实验4

实验报告

课程名称:

JAVA程序设计

实验名称:

实验四

实验地点:

N6-103

实验日期:

2018/11/10

常熟理工学院

实验目的

1.掌握Java中类的定义、对象的创建方法;

2.理解封装性及其意义;

3.掌握构造函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。

4.能够根据给定的要求定义类并实现类的成员函数;

5.理解类的成员的访问控制的含义,公有、私有和保护成员的区别

实验环境

Windows操作系统

JavaSDK

Eclipse

实验内容

1.理解抽象:

一副扑克由52张牌组成(不含王),对一张牌Card进行抽象,

每张Card有自己的花色suit和点数rank两个属性

根据程序的运行结果补充完整Card类的定义:

classCard{

int[]rank=newrank[13];

char[]suit;

suit=’红桃,草花,方片,黑桃’

 

}

classCardTest{

publicstaticvoidmain(String[]args){

Cardc1=newCard(“红桃”,13)

Cardc2=newCard(“草花”,1);

请写出程序代码:

publicclassCardTest{

publicstaticvoidmain(String[]args){

现交通工具Vehicle类

版本一:

(1)没有数据隐藏的类

创建一个Vehicle类实现上面的UML类图。

A)含有两个public属性:

load—“车辆当前的载货量”

maxLoad—“车辆的最大载货量”。

B)含有一个公有的构造函数用于初始化最大载货量属性maxLoad。

C)含有两个公有的函数:

publicdoublegetLoad();

box#1500kgbox#2250kgbox#35000kgbox#44000kgbox#5300kgbox#1500kgbox#2250kgbox#35000kgbox#44000kgbox#5300kg10050.0kg

box#1500kgbox#2250kgbox#35000kgbox#44000kgbox#5300kgbox#1500kgbox#2250kgbox#35000kgbox#44000kgbox#5300kg9750.0kg

....}

privatedoublenewtsToKilo(doubleweight){......}

注意vehicle对象的内部数据是以牛顿为单位的,而外部数据(在方法中传递的参数)还是以千克为单位。

请写出第三版Vehicle类的实现代码:

classVehicle{

privatedoubleload;

privatedoublemaxLoad;

publicVehicle(doublemax){

=max;

}

publicdoublegetLoad(){

returnload;

}

publicdoublegetMaxLoad(){

returnmaxLoad;

}

publicbooleanaddBox(doubleweight){

if(load<=maxLoad&&(load+weight)

load+=weight;

returntrue;

}

else

returnfalse;

}

privatedoublekiloToNewts(doubleweight){

returnweight*;

}

privatedoublenewtsToKilo(doublenewts){

returnnewts/;

}

}

(2)编写下面的程序对新版本的Vehicle3类进行测试,注意它和版本2中的测试代码是相同的,代码如下:

publicclassTestVehicle3{

publicstaticvoidmain(String[]args){

Vehicle3vehicle=newVehicle3;

"Addbox#1(500kg):

"+);

"Addbox#2(250kg):

"+);

"Addbox#3(5000kg):

"+);

"Addbox#4(4000kg):

"+);

"Addbox#5(300kg):

"+);

"Vehicleloadis"+()+"kg");

}

}

应该得到以下的结果:

Creatingavehiclewitha10,000kgmaximumload.

Addbox#1(500kg):

true

Addbox#2(250kg):

true

Addbox#3(5000kg):

true

Addbox#4(4000kg):

true

Addbox#5(300kg):

false

Vehicleloadis9750.0kg

对Vehicle类的第二个和第三个版本采用相同的测试代码,输出的结果有没有发生变化从代码可维护性的角度谈谈封装的好处。

第一安全.被封装的类一般包含私有属性.如果要使用实例化它可安全调用无其他访问方法.

3.如果已知一个日期为2007/3/8,求10天后是哪一天,367天后呢

设计思路:

(1)定义一个MyDate类(版本一),成员有:

classMyDate

{

//数据成员

privateintday;

private  intmonth;

    privateintyear;

    //方法成员

public  MyDate(inty,intm,intd){…}//构造一个日期

publicMyDatenext(){…}//返回下一天的日期

publicMyDatenext(intx){…}//返回x天后的日期

publicvoiddisplay(){…} //显示当前日期信息

}

(2)对MyDate类进行测试,测试代码如下:

publicclassTestDate{

publicstaticvoidmain(String[]args){

MyDated1=newMyDate(2007,3,8);

MyDated2;

d2=(10);

();

d2=(367);

();

}

}

要求:

将MyDate类中的方法代码编写完整,以实现程序所要求的功能。

 

如果将main方法中的语句

MyDated1=newMyDate(2007,3,8);

改为:

MyDated1=newMyDate(2007,33,58);其它语句不变,程序运行结果是什么

运行结果:

 

(3)修改MyDate类(版本二)

要求:

必须对生成的日期做合法性验证,设定如下规则

A)year:

大于或等于1900年,合法,否则则将year置为1900。

B)Month:

在[1,12]范围内合法,否则将month置1。

C)Day:

与month有关,应month所在月有效,否则置1。

(设计参考:

在MyDate类中增加两个方法:

publicvoidSetDate(intd,intm,inty){…}//设置日期

privatevoidCheckDate(inty,intm,intd){…}//对日期的有效性检查

进一步,求两个日期之间的相差的天数,MyDate类又如何改进

(设计参考:

在MyDate类中增加 公有的方法:

publicintdaysBetweenTowDate(MyDateotherDate){…}

请将MyDate类编写完整:

 

请写出程序代码:

 

实验拓展

自己动手编程练习

设计一个数学中的分数类(Fraction),并测试结果是否正确。

要求:

(1)一个分数由分子和分母构成,用两个整型成员变量up和down表示

(2)生成的分数对象的分子和分母必须满足的条件:

A、分母不为零

 B、分子和分母最简(化简后最大公约数只能为1)

  C、分子和分母异号时分子为负

因此在构造分数时要做合法性检查,且分子、分母改变时亦如此

(3)分类的值可以通过分子改变,相应的方法为setUp,也可以通过分母改变,相应方法为setDown,也可以同时修改分子和分母来改变分数的值,相应的改变方法为重载的两个方法:

voidsetFraction(intup,intdown);

voidsetFraction(Fractionf);

(4)获取分子、分母和分数值的方法如下:

intgetUp();

intgetDown();

doublegetValue();

(5)分数对象之间能够完成+、-、*、/四则运算。

Fractionadd(Fractionother);

Fractionminus(Fractionother);

Fractionmultiply(Fractionother);

Fractiondevide(Fractionother);

(6)提供a/b的形式打印分数,即重写toString()方法。

用下面的代码进行测试,得下如下图的结果:

classFractionTest{

publicstaticvoidmain(String[]args){

Fractiona=newFraction(7,32);

Fractionb=newFraction(13,32);

Fractionr1=(b);

Fractionr2=(b);

Fractionr3=(b);

Fractionr4=(b);

+"+"+b+"="+r1);

+"-"+b+"="+r2);

+"*"+b+"="+r3);

+"/"+b+"="+r4);

"-----------------------------");

"="+());

"="+());

"="+());

"="+());

}

}

请将Fraction类编写完整:

 

心得体会

成绩

 

指导教师:

(签署)

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

当前位置:首页 > 幼儿教育 > 少儿英语

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

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