第9次作业--接口及接口回调

1.题目:

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

 2.TIXing.java

package com;
/*定义一个梯形类,并求梯形的面积
 * */
    public class TIXing implements Shape{
        double a;
        double b;
        double h;
        public TIXing(double a,double b,double h){
            this.a=a;
            this.b=b;
            this.h=h;
        }
        public double getArea(){
            return (a+b)*h/2;
        }
}

3.Sjx.java

package com;
/*定义一个三角形类,定义求三角形面积的方法
 * */

public class Sjx implements Shape{
    double a;
    double b;
    double c;
    public Sjx(double a,double b,double c){
        this.a=a;
        this.b=b;
        this.c=c;
    }
    public double getArea(){
        double d=(a+b+c)/2;
        return Math.sqrt(d*(d-a)*(d-b)*(d-c));
        
        }
    }

4.JuXing.java

package com;
/*创建一个矩形类,并创建方法求矩形的面积
 * */
public class JuXing implements Shape{
    double width;
    double length;
    public JuXing(double width,double length){
        this.width=width;
        this.length=length;
    }
     public double getArea(){
        return width*length;
    }
}

5.circle.java

package com;
/*
 * 定义一个圆类,求圆的面积
 * */
    public class Circle implements Shape{
        double r;
        public Circle(double r){
            this.r=r;
        }
        public double getArea(){
            return Math.PI*r*r;
        }

}

6.zfx.java

package com;
/*定义一个正方型类
 * */
public class zfx extends JuXing{
    
    public zfx(double side){
        super (side,side);
    }
    public zfx (){
        super(0,0);
        }
    public double getArea(){
        return width * width;
    
    }
}

7.Cone.java

package com;
/*定义一个柱体类,创建有参的构造方法,定义求体积的方法
 * 
 *  */
public class Cone {
    Shape shape;
    double h;
    public Cone (Shape shape,double h){
        this.shape=shape;
        this.h=h;
    }
    public double getV(){
        return shape.getArea()*h;
    }
    
    }

8.shape.java

package com;

public interface Shape{
     double getArea();
}

9.Factory.java

package com;
/*创建工厂,定义图形对象dx,创建dx的方法,方法中有一个开关方法,并返回图形的对象
 * */
public class Factory {
    
    static Shape shape=null;
    public static Shape dx(char r){
        switch(r){
        case 'z':System.out.println("用正方形为底的柱体体积为:"); shape=new zfx(8);break;
        case 's':System.out.println("用三角形为底的柱体体积为:"); shape=new Sjx(1,2,3);break;
        case 'j':System.out.println("用矩形为底的柱体体积为:"); shape=new JuXing(6,7);break;
        case 'c':System.out.println("用圆形为底的柱体体积为:"); shape=new Circle(15);break;
        case 't':System.out.println("用梯形为底的柱体体积为:"); shape=new TIXing(3,5,6);break;
        }
        return shape;
    }
}

10.Text.java

package com;
/*创建一个Text类,创建一个while循环,在循环中定义一个柱体对象,并调用求体积方法输出结果
 * 如果输入o则退出循环
 * */
import java.util.Scanner;

public class Text {

            public static void main(String[] args) {
                while(true){                    //创建while循环
                Scanner reader=new Scanner(System.in);
                System.out.println("请输入图形字母:");
                char c=reader.next().charAt(0);
                if(c=='o'){                    //判断是否退出循环
                    System.out.println("退出循环");
                    return;
                }
                Cone co=new Cone(Factory.dx(c),5);//创建柱体对象
                System.out.println(co.getV());     
                
                }
    }

}

11.程序运行

posted @ 2019-10-05 14:39  諪諪諪  阅读(99)  评论(0编辑  收藏  举报