第九次作业
利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积。
通过各个不同的字符:j,z,s,y,t进入不同的类从而来计算不同的图形的面积
class juxing implements Shape{
double longnumber;
double weadenumber;
double area;
juxing(double longnumber,double weadenumber){
this.longnumber=longnumber;
this.weadenumber=weadenumber;
}
public double getmianji() {
return area=longnumber*weadenumber;
}
}
class gc {
Shape shape=null;
Scanner reader =new Scanner(System.in);
public Shape shape(){
char q=reader.next().charAt(0);
switch(q){
case 's': System.out.println("三角形的面积是:");shape =new sjx(1,4,2); break;
case 't': System.out.println("梯形的面积是:");shape = new tixing(1,2,5); break;
case 'j': System.out.println("矩形的面积是:");shape = new juxing(5,2); break;
case 'z': System.out.println("正方形的面积是:");shape = new zfx(6); break;
case 'y': System.out.println("圆形的面积是:");shape = new yuanxing(2); break;
}
return shape;
}
}
class zhuti{
Shape shape;
double gao;
zhuti(Shape shape,double gao){
this.shape=shape;
this.gao=gao;
}
void huandi(Shape shape) {
this.shape=shape;
}
double tiji() {
return shape.getmianji()*gao;
}
}
interface Shape{
abstract double getmianji();
}
class tixing implements Shape{//定义梯形类并实现接口,求面积
double sd;
double xd;
double gao;
tixing(double sd,double xd,double gao){
this.gao=gao;
this.sd=sd;
this.xd=xd;
}
public double getmianji() {
return (sd+xd)*gao/2;
}
}
class yuanxing implements Shape{
double r;
yuanxing(double r){
this.r=r;
}
public double getmianji() {
return Math.PI*r*r;
}
}
class sjx implements Shape{
double a;
double b;
double c;
sjx(double a,double b,double c){
this.a=a;
this.b=b;
this.c=c;
}
public double getmianji() {
double d= (a+b+c)/2;
return Math.sqrt(d*(d-a)*(d-b)*(d-c));
}
}
class zfx implements Shape{ double bian;
zfx(double bian){
this.bian=bian;
}
public double getmianji(){
return bian*bian;
}
}
public class zz {private static boolean ture;
public static void main(String[] args) {
double gao=2;
gc gc1=new gc();
for(;;){
zhuti zhuti1=new zhuti(gc1.shape(), gao);
System.out.println(zhuti1.tiji());
}
}
}

浙公网安备 33010602011771号