设有图形,矩形,立方体,圆,圆柱,根据自己的理解,给出它们之间的关系。
要求:
1、每种图形都有计算面积、周长、显示信息、获取图形名称的方法。
2、设计一个主方法,其功能是求n个图形(是表中图形个数的任意组合)的面积之和,运行界面如图
3、设计程序时,可以设计接口,抽象类,子类,等有关的内容,并要体现使用抽象类或者接口有什么优点?
ICalculate:
java">package ch11_03;
public interface ICalculate {
public double getArea();
public void javaOut();
}
ChangFangTi:
java">package ch11_03_02;
import ch11_03.ICalculate;
public class ChangFangTi implements ICalculate {
private double c;//长
private double k;//宽
private double g;//高
public ChangFangTi(double c, double k, double g) {
this.c = c;
this.k = k;
this.g = g;
}
@Override
public double getArea() {
return (c*k+k*g+g+c)*2;
}
@Override
public void javaOut() {
System.out.println("长方体信息:长="+c+" 宽="+k+" 高="+g+" 面积="+getArea());
}
}
JvXing:
java">package ch11_03_02;
import ch11_03.ICalculate;
public class JvXing implements ICalculate {
private double c;//长
private double k;//宽
public JvXing(double c, double k) {
this.c = c;
this.k = k;
}
@Override
public double getArea() {
return c*k;
}
@Override
public void javaOut() {
System.out.println("矩形信息:长="+c+" 宽="+k+" 面积="+getArea());
}
}
Test:
java">package ch11_03_02;
import java.util.Scanner;
//import ch11_03.ICalculate;
public class Test {
public static void show() {
System.out.println("1.创建一个圆");
System.out.println("2.创建一个矩形");
System.out.println("3.创建一个长方体");
System.out.println("4.创建一个圆柱体");
System.out.println("5.显示已经创建的图形");
System.out.println("6.求各图形的面积之和");
System.out.println("7.退出系统");
}
public static void main(String[] args) {
System.out.println("***图形类对象的管理***");
System.out.println("-----------------");
System.out.println("1.创建一个圆");
System.out.println("2.创建一个矩形");
System.out.println("3.创建一个长方体");
System.out.println("4.创建一个圆柱体");
System.out.println("5.显示已经创建的图形");
System.out.println("6.求各图形的面积之和");
System.out.println("7.退出系统");
Scanner cin = new Scanner(System.in);
double sum = 0;
int m1=0;
int a = 0;
int b = 0;
int d = 0;
int p = 0;
while(m1!=7) {
m1=cin.nextInt();
switch(m1) {
case 1:
double r;
System.out.println("请输入半径:");
r=cin.nextDouble();
Yuan y = new Yuan(r);
sum += y.getArea();
y.javaOut();
a += 1;
show();
break;
case 2:
double c,k;
System.out.println("请分别输入长和宽:");
c = cin.nextDouble();
k = cin.nextDouble();
JvXing jx = new JvXing(c, k);
sum += jx.getArea();
jx.javaOut();
b += 1;
show();
break;
case 3:
double c1,k1,g1;
System.out.println("请分别输入长宽高:");
c1 = cin.nextDouble();
k1 = cin.nextDouble();
g1 = cin.nextDouble();
ChangFangTi cft = new ChangFangTi(c1, k1, g1);
sum += cft.getArea();
cft.javaOut();
d += 1;
show();
break;
case 4:
double r1,h1;
System.out.println("请分别输入半径和高:");
r1 = cin.nextDouble();
h1 = cin.nextDouble();
YuanZhuTi yzt = new YuanZhuTi(r1, h1);
sum += yzt.getArea();
yzt.javaOut();
p += 1;
show();
break;
case 5:
System.out.println("创建了"+a+"个圆形");
System.out.println("创建了"+b+"个矩形");
System.out.println("创建了"+d+"个长方体");
System.out.println("创建了"+p+"个圆柱体");
show();
break;
case 6:
System.out.println("各图形面积之和="+sum);
show();
break;
case 7:
break;
}
}cin.close();
}
}
Yuan:
java">package ch11_03_02;
import ch11_03.ICalculate;
public class Yuan implements ICalculate {
private double r;
public Yuan(double r) {
this.r =r;
}
@Override
public double getArea() {
return Math.PI*r*r;
}
@Override
public void javaOut() {
System.out.println("圆信息:半径="+r+" 面积="+getArea());
}
}
YuanZhuTi:
java">package ch11_03_02;
import ch11_03.ICalculate;
public class YuanZhuTi implements ICalculate {
private double r;//半径
private double h;//高
public YuanZhuTi(double r, double h) {
this.r = r;
this.h = h;
}
@Override
public double getArea() {
return Math.PI*r*r*2+2*Math.PI*h;
}
@Override
public void javaOut() {
System.out.println("圆柱体信息:半径="+r+" 高="+h+" 面积="+getArea());
}
}