java实验4文档格式.docx
《java实验4文档格式.docx》由会员分享,可在线阅读,更多相关《java实验4文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
![java实验4文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/30/056d2012-a84a-4ebc-805e-831acc298aa8/056d2012-a84a-4ebc-805e-831acc298aa81.gif)
一副扑克由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
:
double
K
+niaxkaai(l:
v/eightinkilograms
■+UehiclefniiaxLoad.
■+2[etLoail():
weightinkiiogramsl'
+号o诅皙ad灯;
QaWLe
创建一个Vehicle类实现上面的UML类图。
A)含有两个public属性:
load—“车辆当前的载货量”
maxLoad—“车辆的最大载货量”。
B)含有一个公有的构造函数用于初始化最大载货量属性maxLoad。
C)含有两个公有的函数:
publicdoublegetLoad();
box#1500kgbox#2250kgbox#35000kgbox#44000kgbox#5300kgbox#1500kgbox
#2250kgbox#35000kgbox#44000kgbox#5300kg10050.0kg
-Load;
double
-ma^Load
+破Ehiu]■总loNd:
duubLm、
+getLoa.d():
+getMa?
cLoad():
+ad(IBox(weight:
double):
boolean
weightinhlograms
~~lx
weightinkilograms
#2250kgbox#35000kgbox#44000kgbox#5300kg9750.0
V&
luclea
-lead:
douJtile-msxLasid:
J
k
weightirinewtons
+Vehicles(maxLoad:
dLordble)
+gpetLoad():
douLLe^getMaXLoaciO:
Couto1&
(weight:
baolesjft
-ifiewtsTaiKilaidovile):
double—kiLoToHew七空(dovble):
k
weightirkilograms
.}
privatedoublenewtsToKilo(doubleweight){}
注意vehicle对象的内部数据是以牛顿为单位的,而外部数据(在方法中传递的参数)还是以千克为单位。
请写出第三版Vehicle类的实现代码:
classVehicle{
privatedoubleload;
privatedoublemaxLoad
publicVehicle(doublema»
{
=max
publicdoublegetLoad(){
returnload;
publicdoublegetMaxLoad(){
returnmaxLoad
publicbooleanaddBox(doubleweight){
if(load<
=maxLoa(&
&
(1oad+weight)<
maxLoad{load+=weight;
returntrue;
else
returnfalse;
privatedoublekiloToNewts(doubleweight){
returnweight*;
privatedoublenewtsToKilo(doublenewts){returnnewts/;
(2)编写下面的程序对新版本的Vehicle3类进行测试,注意它和版本2中的测试代
码是相同的,代码如下:
publicclassTestVehicle3{
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):
Addbox#3(5000kg):
Addbox#4(4000kg):
Addbox#5(300kg):
false
Vehicleloadis9750.0kg
对Vehicle类的第二个和第三个版本采用相同的测试代码,输出的结果有没有发
生变化从代码可维护性的角度谈谈封装的好处。
第一安全.被封装的类一般包含私有属性•如果要使用实例化它可安
全调用无其他访问方法.
3.如果已知一个日期为2007/3/8,求10天后是哪一天,367天后呢
设计思路:
(1)定义一个MyDate类(版本一),成员有:
classMyDate
(2)
//数据成员
privateintyear;
//方法成员
(3)对MyDate类进行测试,测试代码如下:
publicclassTestDate{
MyDated1=newMyDate(2007,3,8);
MyDated2;
d2=(10);
();
d2=(367);
要求:
将MyDate类中的方法代码编写完整,以实现程序所要求的功能。
如果将main方法中的语句
MyDatedi=newMyDate(2007,3,8);
改为:
MyDatedi=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{
Fractiona=newFraction(7,32);
Fractionb=newFraction(13,32);
Fractionr1=(b);
Fractionr2=(b);
Fractionr3=(b);
Fractionr4=(b);
+"
+"
+b+"
="
+r1);
-"
+r2);
*"
+r3);
/"
+r4);
="
+());
请将Fraction类编写完整
心得体会成
绩
指导教师:
(签署)