分数 10
全屏浏览题目
切换布局
作者 yl
单位 西南石油大学
由于各种图形 求面积的方式不一样,为了使编写的程序能够适应求不同形状的面积和,当新增加一个图形的时候,不需要修改其他类,采用面向接口的编程,其类图如下图所示:
根据以上类图,你需要设计和编写如下类:
######1.IGeometry接口类 ,里面有double getArea()接口方法
2.Rect类实现接口,有属性 a,b,有参构造方法及对接口方法的实现
######3.Circle类实现接口,有属性r,有参构造方法及对接口方法的实现,其中PI=3.14
4.TotalArea类完成对不同形状图形面积求和,有属性IGeometry[] tuxing 数组用来存储 不同形状图形对象,SetTuxing(IGeometry[] t) 给属性tuxing赋值,double computeTotalArea()方法用来计算tuxing数组中存放的图形的面积和,并返回面积和。
主类已经给出,请结合主类完成上面类的编写
裁判测试程序主类:
public class Main { public static void main(String[] args) { IGeometry [] tuxing=new IGeometry[29]; //有29个Geometry对象 for(int i=0;i<tuxing.length;i++) { //29个Geometry对象分成两类 if(i%2==0) tuxing[i]=new Rect(16+i,68); else if(i%2==1) tuxing[i]=new Circle(10+i); } TotalArea computer=new TotalArea(); computer.setTuxing(tuxing); System.out.printf("各种图形的面积之和:\n%.2f",computer.computerTotalArea()); } } /* 请在这里填写答案 请结合主类代码,在代码框完成IGeometry接口类,Rect类,Circle类和TotalArea类*/
输入样例:
在这里给出一组输入。例如:
无
输出样例:
在这里给出相应的输出。例如:
各种图形的面积之和:
58778.36
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码
class Circle implements IGeometry{
double r;
Circle(double r){
this.r = r;
}
public double getArea(){
return r*r*3.14;
}
}
class Rect implements IGeometry{
double a,b;
Rect(double a,double b){
this.a = a;
this.b = b;
}
public double getArea(){
return a*b;
}
}
class TotalArea {
IGeometry[] tuxing;
void setTuxing(IGeometry[] t){
tuxing = t;
}
double computerTotalArea() {
double sum = 0;
for (int i = 0; i < tuxing.length; i++) {
sum = sum + tuxing[i].getArea();
}
return sum;
}
}
interface IGeometry {
double getArea();
}