1、一副扑克由 52张牌组成(不含王),对一张牌Card进行抽象,每张Card有自己的花色suit和点数rank两个属性根据程序的运行结果补充完整 Card类的定义:class Cardin t rank= new ran k13;char suit;suit=红桃,草花,方片,黑桃class CardTestpublic static void main( Stri ng args)Card c1 = new Card( 红桃” ,13)Card c2 = new Card( 草花”,1);请写出程序代码:public class CardTest public static void main
2、(String args) 现交通工具 Vehicle类版本一:(1)没有数据隐藏的类Vehicle: doubleK+niaxkaai(l : v/eightin kilograms+Uehicle fniiax Load.+2etLoail() : weightin kiiogramsl+号o 诅皙ad灯 ;QaWLe创建一个Vehicle 类实现上面的 UML类图。A)含有两个public属性:load “车辆当前的载货量”maxLoad “车辆的最大载货量”。B)含有一个公有的构造函数用于初始化最大载货量属性 maxLoad。C)含有两个公有的函数:public double getL
3、oad();box #1500kgbox #2250kgbox #35000kgbox #44000kgbox #5300kgbox #1500kgbox#2250kgbox #35000kgbox #44000kgbox #5300kg10050.0 kg-Load ;double-maLoad+破Ehiu总 loNd: duubLm、+ getLoa.d() :+ ge tMa?cLoad () :+ ad(IB ox (weight : double) : booleanweightin hlogramslxweightin kilograms#2250kgbox #35000kgbox
4、 #44000kgbox #5300kg9750.0V&lucle a-lead : douJtile -msxLasid : Jkweight iri newtons+Vehicles (max Load : dLordble)+gpetLoad() : douLLe getMaXLoaciO : Couto 1&(weight : baolesjft-ifiewtsTaiKila idovile) : double kiLoToHew 七空(dovble) : kweightir kilograms.private double n ewtsToKilo(double weight) 注意
5、vehicle 对象的内部数据是以牛顿为单位的,而外部数据(在方法中传递 的参数)还是以千克为单位 。请写出第三版Vehicle类的实现代码:class Vehicleprivate double load;private double maxLoadpublic Vehicle( double ma=maxpublic double getLoad()return load;public double getMaxLoad()retur n maxLoadpublic boolean addBox( double weight)if (load =maxLoa(&(1 oad +weight
6、 )maxLoad load +=weight ;return true ;elsereturn false ;private double kiloToNewts( double weight)return weight *;private double newtsToKilo( double newts) return n ewts/;(2)编写下面的程序对新版本的 Vehicle3类进行测试,注意它和版本2中的测试代码是相同的,代码如下:public class TestVehicle3Vehicle3 vehicle=new Vehicle3;Add box #1 (500kg):+
7、);Add box #2 (250kg):Add box #3 (5000kg):Add box #4 (4000kg):Add box #5 (300kg): Vehicle load is +()+ kg);应该得到以下的结果:Creat ing a vehicle with a 10,000kg maximum load.Add box #1 (500kg) : trueAdd box #2 (250kg) :Add box #3 (5000kg) :Add box #4 (4000kg) :Add box #5 (300kg) : falseVehicle load is 9750.0
8、 kg对Vehicle类的第二个和第三个版本采用相同的测试代码, 输出的结果有没有发生变化从代码可维护性的角度谈谈封装的好处。第一 安全.被封装的类一般包含私有属性 如果要使用 实例化它 可安全调用无其他访问方法.3.如果已知一个日期为 2007/3/8,求10天后是哪一天,367天后呢设计思路:(1)定义一个 MyDate类(版本一),成员有: class MyDate(2)/数据成员private int year;/方法成员(3)对MyDate类进行测试,测试代码如下:public class TestDateMyDate d1 = new MyDate(2007,3,8);MyDate
9、 d2;d2 = (10);();d2 = (367);要求:将MyDate类中的方法代码编写完整,以实现程序所要求的功能。如果将main方法中的语句MyDate di = new MyDate(2007,3,8);改为:MyDate di = new MyDate(2007,33,58); 其它语句不变,程序运行结果是什么运行结果:(3)修改MyDate类(版本二)必须对生成的日期做合法性验证,设定如下规则A) year :大于或等于1900年,合法,否则则将 year置为1900。B) Mon th :在1,12范围内合法,否则将 mo nth置1。C) Day: 与mon th有关,应
10、mo nth所在月有效,否则置 1。(设计参考:在 MyDate类中增加两个方法:) / 设置日期 /对日期的有效性检查public void SetDate(i nt d,i nt m,i nt y) private void CheckDate(i nt y,i nt m,i nt d)进一步,求两个日期之间的相差的天数,MyDate类又如何改进在 MyDate类中增加 公有的方法:public int daysBetwee nTowDate(MyDate otherDate) 请将MyDate类编写完整:请写出程序代码:实 验 拓 展自己动手编程练习设计一个数学中的分数类(Fractio
11、n ),并测试结果是否正确。(1) 一个分数由分子和分母构成,用两个整型成贝变量 up和down表示(2)生成的分数对象的分子和分母必须满足的条件:A、 分母不为零B、 分子和分母最简(化简后最大公约数只能为 1)C、 分子和分母异号时分子为负因此在构造分数时要做合法性检查,且分子、分母改变时亦如此(3)分类的值可以通过分子改变,相应的方法为setUp,也可以通过分母改 变,相应方法为setDown,也可以同时修改分子和分母来改变分数的值, 相应的改变方法为重载的两个方法:void setFract ion (i nt up,i nt dow n);void setFract ion(Frac
12、tion f);(4)获取分子、分母和分数值的方法如下:in t getUp();int getDow n();double getValue();(5)分数对象之间能够完成 +、-、*、/四则运算。Fract ion add(Fracti on other);Fract ion minu s(Fract ion other);Fract ion multiply(Fract ion other);Fract ion devide(Fract ion other);(6)提供a/b的形式打印分数,即重写toString() 方法。用下面的代码进行测试,得下如下图的结果:class Fract ion Test Fracti on a = new Fracti on(7, 32);Fraction b = new Fractio n(13, 32);Fracti on r1 = (b);Fractio n r2 = (b);Fractio n r3 = (b);Fractio n r4 = (b);+ + + b + = +r1 ); - +r2 ); * +r3 ); / +r4 );=+();请将Fraction 类编写完整心 得 体 会 成绩指导教师: (签署)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1