JAVA------第九次作业 接口及接口回调

题目

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

代码

shape.java

/*
 * 创建图形接口,声明求面积方法
 */
package cn;

public interface shape {
    public double getArea();

}

Rectangle.Java

/*
 * 矩形类,包含两个成员变量一个构造方法,并重写了getArea方法;
 */
package cn;

public class Rectangle implements shape{
    double width;
    double length;
    


    public Rectangle(double width, double length){
        this.width=width;
        this.length=length;
    }
    public double getArea(){
        return width*length;
    }
        
    }

zheng.java

/*
 * 正方形类继承矩形类,创建有参、无参构造方法和求面积方法
 */
package cn;

public class zheng extends Rectangle {
    public zheng(double side){
         super(side,side);
    }
    public zheng(){
        super(0,0);
    }
   public  double getArea(){
        return width*width;
    }
}

Triangle.java

/*
 * 三角形类,定义成员变量和构造方法和求面积方法
 */
package cn;

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

}

TX.java

/*
 * 梯形类,包含三个成员变量,两个方法;构造方法和求面积方法
 */
package cn;

public class Tx implements shape {
        double a;
        double b;
        double h;
        public Tx(double a,double b,double h){
            this.a=a;
            this.b=b;
            this.h=h;
        }
        public double getArea(){
            return (a+b)*h/2;
        }

    
}

Circle.java

/*定义两个成员变量r,PI
创建有参构造方法
重写实现求面积方法*/
package cn;

public class Circle implements shape{
    double r;
    double PI=3.14;
    public Circle(double r){
        this.r=r;
    }
    public double getArea() {
        double area=PI*r*r;
        return area;
    }

}

Factory.java

/*
 * 工厂类,定义图形对象,创建getShape()方法,方法中写一个开关方法,返回图形对象
 */
package cn;

public class Factory {
    shape shape=null;
       shape getShape(char c){
           switch(c){
           case'w':shape=new Rectangle(6,5);break;
           case'j':shape=new zheng(5);break;
           case'q':shape=new Triangle(9,4,5);break;
           case's':shape=new Tx(3,5,9);break;
           case'l':shape=new Circle(8);break;
           default:System.out.println("error");  
           }
           return shape;
       }

}

Test.java

/*进行输入操作
创建f和cone对象
判断程序是否退出
cone对象调用求体积方法,输出其返回值*/
package cn;
import java.util.Scanner;
public class Test {
     public static void main(String[] args) {
            System.out.println("请输入底面形状对应字母:");
            while(true){
            Scanner reader=new Scanner(System.in);//进行键盘输入
            char c=reader.next().charAt(0);//接收字符
            if(c=='T'){
                System.out.println("退出");
                return;
            }
            Factory f=new Factory();
            Cone cone=new Cone(f.getShape(c),9);
            System.out.println(cone.getVolume());//输出体积
            
            }
        }
}

测试运行结果:

猜你喜欢

转载自www.cnblogs.com/wjq98/p/11640459.html