8.7设计一个名为Account类,它包括:一个名为id的int类型私有帐户数据域(默认值0)。一个名为balance的double类型私有帐户数据域(默认值0)。一个名为annualInterestRate的double类型私有数据域存储当前利率(默认值0)。假设所以的帐户都有相同的利率。一个名为dateCreated的Date类型私有数据域存储帐户的开户日期。一个能创建默认帐户的无参构造方法。一个能创建带特定id和初始余额的帐户的构造方法。IdbalanceannualInterstRate的访问器和修改器。dateCreated的访问器。一个名为getMonthlyInterestRate()的方法返回月利率。一个名为withDraw的方法从帐户提取特定数额。一个名deposit的方法向帐户存储特定的数额。画出该类的UML图。实现这个类。编写一个测试程序,创建一个帐户ID为1122,余额为20000美元,年利率为4.5%的Account对象。使用withdraw方法取款2500美元,使用deposit方法存款3000美元,然后打印余额,月利息以及这个帐户的开户日期。源程序:publicclassAccount{privateintid;//账户号码privatedoublebalance;//账户余额privatedoubleannualInterestRate;//当前利率privatejava.util.DatedateCreated=newjava.util.Date();//开户日期publicAccount(){this.id=0;this.balance=0;this.annualInterestRate=0;}publicAccount(intid,intbalance){this.id=id;this.balance=balance;}publicintgetId(){returnthis.id;}publicvoidsteId(intid){this.id=id;}publicdoublegetBalance(){returnthis.balance;}publicvoidsetBalance(doublebalance){this.balance=balance;}publicdoublegetannualInterestRate(){returnthis.annualInterestRate;}publicvoidsetAnnualInterestRate(doubleannualInterestRate){this.annualInterestRate=annualInterestRate;}publicjava.util.DategetDateCreated(){returnthis.dateCreated;}publicdoublegetMonthlyInterestRate(){returnthis.annualInterestRate/12;}publicdoublewithDraw(doublecount){this.balance-=count;returnthis.balance;}publicdoubledeposit(doublecount){this.balance+=count;returnthis.balance;}publicstaticvoidmain(String[]args){Accountaccount=newAccount(1122,20000);account.setAnnualInterestRate(0.045);account.withDraw(2500);account.deposit(3000);System.out.println(余额:+account.getBalance());System.out.println(月利息:+account.getMonthlyInterestRate()*account.getBalance());System.out.println(开户日期:+account.getDateCreated().toString());}}运行结果:余额:20500.0月利息:76.875开户日期:MonApr1620:54:13CST20128.8设计一个名为Fan的类来表示一个风扇。这个类包括:三个名为SLOW、MEDIUM和FAST而值是1、2和3的常量表示风扇的速度。一个名为speed的int类型私有数据域表示风扇的速度(默认值SLOW)。一个人名为on的boolean类型私有数据域表示风扇是否打开(默认值为false)。一个名为radius的double类型私有数据域表示风扇的半径(默认值5)。一个名为color的string类型数据域表示风扇的颜色(默认值为blue)。这四个数据域的访问器和修改器。一个创建默认风扇的无参构造方法。一个名为toString()方法返回描述风扇的字符串。如果风扇是打开的,那么该方法在一个组合的字符串中返回风扇的速度、颜色和半径。如果风扇没有打开,该方法就会返回一个由“fanisoff”和风扇颜色及半径组合成的字符串。画出该类的UML图。实现这个类。编写一个测试程序,创建两个Fan对象。将第一个对象设置为最大速度、半径10、颜色为yellow、状态为打开。将第二个对象设置为中等速度、半径为5、颜色为blue、状态为关闭。通过调用它们的toSrting方法显示这些对象。源程序:publicclassFan{finalstaticintSLOW=1;finalstaticintMEDIUM=2;finalstaticintFAST=3;privateintspeed=SLOW;privatebooleanon=false;privatedoubleradius=5;privateStringcolor=blue;publicintgetSpeed(){returnspeed;}publicvoidsetSpeed(intspeed){this.speed=speed;}publicbooleanisOn(){returnon;}publicvoidsetOn(booleanon){this.on=on;}publicdoublegetRadius(){returnradius;}publicvoidsetRadius(doubleradius){this.radius=radius;}publicStringgetColor(){returncolor;}publicvoidsetColor(Stringcolor){this.color=color;}publicFan(){}publicStringtoString(){if(on==true)return风扇速度:+this.getSpeed()+\n+风扇半径:+this.getRadius()+\n+风扇颜色:+this.getColor()+\n;elsereturnfanisoff+\n+风扇半径:+this.getRadius()+\n+风扇颜色:+this.getColor()+\n;}publicstaticvoidmain(String[]args){Fanfan=newFan();fan.setColor(yello);fan.setRadius(10.0);fan.setSpeed(FAST);fan.setOn(true);Fanfan1=newFan();fan1.setColor(bule);fan1.setOn(false);fan1.setRadius(5.0);System.out.println(fan.toString());System.out.println(fan1.toString());}}运行结果:风扇速度:3风扇半径:10.0风扇颜色:yellofanisoff风扇半径:5.0风扇颜色:bule8.9在一个正n边形中,所以边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。设计一个名为RegularPolygon的类,该类包括:一个名为int型的私有数据域定义多边形的边数,默认值3。一个名为side的double型私有数据域存储边的长度,默认值1。一个名为x的double型私有数据域,它定义多边形中点的x坐标,默认值0。一个名为y的double型私有数据域,它定义多边形中点的y坐标,默认值0。一个创建带默认值的正多边形的无参构造方法。一个能创建带指定边数和边长度、中心在(0,0)的正多边形的构造方法。一个能创建带指定边数和边长度、中心在(x,y)的正多边形的构造方法。所有数据域的访问器和修改器。一个返回多边形周长的方法getPerimeter()。一个返回多边形面积的方法getArea().计算多边形面积的公式是:面积=(n*s*s)/(4*tan(p/n))画出该类的UML图。实现这个类。编写一个测试程序,分别使用无参构造方法、RegularPolygon(6,4)和RegularPolygon(10,4,5.6,7.8)创建三个RegularPolygon对象。显示每个对象的周长和面积。源程序:publicclassRegularPolygon{privateintn=3;privatedoubleside=1;privatedoublex=0;privatedoubley=0;publicRegularPolygon(){}publicRegularPolygon(intn,doubleside){this.n=n;this.side=side;}publicRegularPolygon(intn,doubleside,doublex,doubley){this(n,side);this.x=x;this.y=y;}publicintgetN(){returnn;}publicvoidsetN(intn){this.n=n;}publicdoublegetSide(){returnside;}publicvoidsetSide(doubleside){this.side=side;}publicdoublegetX(){returnx;}publicvoidsetX(doublex){this.x=x;}publicdoublegetY(){returny;}publicvoidsetY(doubley){this.y=y;}publicdoublegetPerimeter(){returnn*side;}publicdoublegetArea(){return((n*side*side)/(4*Math.tan(Math.PI/n)));}publicstaticvoidmain(String[]args){RegularPolygonreg1=newRegularPolygon();System.out.println(reg1的周长为:+reg1.getPerimeter()++reg1的面积为:+reg1.getArea());RegularPolygonreg2=newRegularPolygon(6,4);System.out.println(reg1的周长为:+reg2.getPerimeter()++reg2的面积为:+reg2.getArea());RegularPolygonreg3=newRegularPolygon(10,4,5.6,7.8);System.out.println(reg3的周长为:+reg3.getPerimeter()++reg3的面积为:+reg3.getArea());}}运行结果:reg1的周长为:3.0reg1的面积为:0.43301270189221946reg1的周长为:24.0reg2的面积为:41.569219381653056reg3的周长为:40.0reg3的面积为:123.10734