第九次作业 接口和接口回调

一 需求分析

     利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积。

二 代码

//工厂模式创建
package com.ccut.www;
public interface factory_interface { double change_bottom(char c); }
//调用工厂
public
class factory_implement implements factory_interface{ public double change_bottom_long; public double change_bottom_wide; public double change_bottom_up; public double change_bottom_down; public double change_bottom_high; public double change_bottom_radim; public double bottom_area=0.0; Scanner sc=new Scanner(System.in); @Override public double change_bottom(char c) {
//使用switch语句选择
public
double change_bottom(char c) { switch(c){
//三角形
    case 'a':
        System.out.println("请输入换底后三角形 的底:");
        change_bottom_down=sc.nextDouble();
        System.out.println("请输入换底后三角形 的高:");
        change_bottom_high=sc.nextDouble();         
        bottom_area=change_bottom_down*change_bottom_high*0.5;
        break;
//矩形
    case 'b':
        System.out.println("请输入换底后矩形的长:");
        change_bottom_long=sc.nextDouble();
        System.out.println("请输入换底后矩形 的宽:");
        change_bottom_wide=sc.nextDouble();
        bottom_area=change_bottom_long*change_bottom_wide;
        break;        

  

//正方形
       case 'c':
          System.out.println("请输入换底后正方形的边长:");
          change_bottom_long=sc.nextDouble();
          bottom_area=Math.pow(change_bottom_long, 2);
          System.out.println("换底之后正方形柱体的体积是:"+bottom_area);
       break;
    //梯形
        case 'd':
            System.out.println("请输入换底后梯形的上底:");
            change_bottom_up=sc.nextDouble();
            System.out.println("请输入换底后梯形的下底:");
            change_bottom_down=sc.nextDouble();
            System.out.println("请输入换底后梯形 的高:");
            change_bottom_high=sc.nextDouble();
            bottom_area=(change_bottom_up+change_bottom_down)*change_bottom_high*0.5;
            break;

 

//圆形
		case 'e':
		System.out.println("请输入换底后圆形的半径:");
		change_bottom_radim=sc.nextDouble();
		bottom_area=change_bottom_radim*change_bottom_radim*3.14;
		break;
		
		default: System.out.println("请输入正确字符");break;
		}
		
		return bottom_area;
	}
	

  

 

package com.ccut.www;

import java.util.Scanner;
class tri {
    double longth;
    double width;
    double area;
    double circum;

public tri(double longth, double width) {
    this.longth = longth;
    this.width = width;
    }
    public double getArea() {
    area = longth * width;
    return area;
    }
}


public  class sileng extends factory_implement{
     private tri juxing;
     private double high;
     private double vol;
     public sileng(tri juxing, double high) {
            this.juxing = juxing;
            this.high = high;

            }
     public double  volCalc(double bottom_area){
         double voli=bottom_area*high;
         return voli;
         }
     public double  volCalc(){
         double voli=juxing.longth*juxing.width*high;
         return voli;
         }
public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入长:");
            float longth = sc.nextFloat();
            System.out.println("请输入宽:");
            float width = sc.nextFloat();
            tri juxing = new tri(longth, width);
            System.out.println("请输入高:");
            double high = sc.nextFloat();
            sileng zt=new sileng(juxing, high);
            System.out.println("柱体的面积是:"+zt.volCalc());
            System.out.println("请输入一个字符 代表换底相应的图形 :a.三角形, b.矩形 ,c.正方形  d.梯形e.圆形:  ");
            char s=sc.next().charAt(0);
            factory_interface fc=new factory_implement();
            
            if(!(s>='a'&&s<='e')){
            System.out.println("输入字符有误 ,请重新输入!!!!(请确保输入是个a-e 这个范围!!!)");
                
            }
            double  fa= fc.change_bottom(s);
             System.out.println("该新柱体的体积是"+zt.volCalc(fa));
            }

    }

三测试

猜你喜欢

转载自www.cnblogs.com/wusi1/p/11667751.html