设有图形,矩形,立方体,圆,圆柱,根据自己的理解,给出它们之间的关系。
要求:
1、每种图形都有计算面积、周长、显示信息、获取图形名称的方法。
2、设计一个主方法,其功能是求n个图形(是表中图形个数的任意组合)的面积之和,运行界面如图
3、设计程序时,可以设计接口,抽象类,子类,等有关的内容,并要体现使用抽象类或者接口有什么优点?
ChangFangTi:
package ch11_02;
public class ChangFangTi extends TuXing {
private double c;//长
private double k;//宽
private double g;//高
public ChangFangTi(double c, double k, double g) {
super("长方体");
this.c = c;
this.k = k;
this.g = g;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
public double getK() {
return k;
}
public void setK(double k) {
this.k = k;
}
public double getG() {
return g;
}
public void setG(double g) {
this.g = g;
}
@Override
public double mj() {
return (c*k+k*g+g*c)*2;
}
public void show() {
System.out.println("长方体信息:长="+c+" 宽="+k+" 高="+g+" 面积="+mj());
}
}
JvXing:
package ch11_02;
public class JvXing extends TuXing {
private double cd;//长度
private double kd;//宽度
public JvXing(double cd,double kd) {
super("矩形");
this.cd = cd;
this.kd = kd;
}
public double getCd() {
return cd;
}
public void setCd(double cd) {
this.cd = cd;
}
public double getKd() {
return kd;
}
public void setKd(double kd) {
this.kd = kd;
}
@Override
public double mj() {
return cd*kd;
}
public void show() {
System.out.println("矩形信息:长="+cd+" 宽="+kd+" 面积="+mj());
}
}
Test:
package ch11_02;
import java.util.Scanner;
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.mj();
y.show();
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.mj();
jx.show();
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.mj();
cft.show();
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.mj();
yzt.show();
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();
}
}
TuXing:
package ch11_02;
public abstract class TuXing {
private String mc;//名称
public abstract double mj();//面积
public TuXing(String mc) {
this.mc = mc;
}
public String getmc() {
return mc;
}
public void setmc(String x) {
mc = x;
}
}
Yuan:
package ch11_02;
public class Yuan extends TuXing {
private double r;
public Yuan( double r) {
super("圆");
this.r = r;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
@Override
public double mj() {
return Math.PI*r*r;
}
public void show() {
System.out.println("圆信息:半径="+r+" 面积="+mj());
}
}
YuanZhuTi:
package ch11_02;
public class YuanZhuTi extends TuXing {
private double r;
private double h;
public YuanZhuTi( double r, double h) {
super("圆柱体");
this.r = r;
this.h = h;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public double getH() {
return h;
}
public void setH(double h) {
this.h = h;
}
@Override
public double mj() {
return Math.PI*r*r*2+2*Math.PI*r*h;
}
public void show() {
System.out.println("圆柱体信息:半径="+r+" 高="+h+" 面积="+mj());
}
}