zoukankan      html  css  js  c++  java
  • 第9次作业--接口及接口回调

    题目:

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

     一、代码

    1.Shape.Java

    /**
     * 创建Shape接口
     * @author Administrator
     *
     */
    public  interface Shape {
    	double funarea();
    }
    

    2.cone.java

    /**
     * 创建柱类
     * 定义Shape接口的对象shape
     * 定义柱体的高
     * 创建有参构造方法
     * 创建求体积方法
     * @author Administrator
     *
     */
    public class cone {
      Shape shape;
      double high;
      public cone(Shape shape,double high){
    	  this.shape=shape;
    	  this.high=high;
      }
      public double getVolume() {
    	  return shape.funarea()*high;
    }
    }
    

    3.rec.java

    /***
    	 * @author X1393
    	 * 创建rec类引用接口
    	 * 其中包含
    	 * 成员变量l为矩形的长
    	 * 成员变量h为矩形的宽
    	 * 成员变量area为矩形的面积
    	 */
    public class rec implements Shape{
    		double l;
    		double h;
    		
    		public rec(double l,double h) {
    			this.l=l;
    			this.h=h;
    		}
    		public double funarea() {
    			return l*h;
    		}
    		
    	}
    

    4.trapezium.java

    /**
     * 创建梯形类引用接口
     * 包含上底,下底,高三个成员变量
     * 有参构造方法
     * 求梯形面积方法
     * @author Administrator
     *
     */
    public class trapezium implements Shape{
    	double l1;
    	double l2;
    	double h;
    	trapezium(double l1, double l2, double h){
    		this.h=h;
    		this.l1=l1;
    		this.l2=l2;
    	}
    	public double funarea() {
    		// TODO Auto-generated method stub
    		return (l1+l2)*h/2;
    	}
    
    }
    

    5.squa.java

    /**
     * 创建矩形类rec的子类正方形类squ类中包含
     * 求正方形面积的方法
     * 重写矩形求周长方法求正方形的周长
     */
    public class squa extends rec {
    
    	public squa(double l) {
    		super(l,l);
    		// TODO Auto-generated constructor stub
    	}
    
    	public double funarea(){
    		return l*l;
    	}
    	}
    

    6.tri.java

    /**
     * 创建三角形类tri引用接口
     * 包含三边的成员变量
     * 有参构造方法
     * 求三角形面积方法
     * @author Administrator
     */
    public class tri implements Shape{
    	double a;
    	double b;
    	double c;
    	public tri (double a,double b,double c){
    		this.a=a;
    		this.b=b;
    		this.c=c;
    	}
    	public double funarea() {
    		double p=(a+b+c)/2;
    		return Math.sqrt(p*(p-a)*(p-b)*(p-c));
    	}
    
    }
    

    7.circle.java

    /**
     * 创建圆类引用接口
     * 包含有参构造方法
     * 求圆体积方法
     * @author Administrator
     */
    public class circle implements Shape{
    	double R;
    	circle (double R){
    		this.R=R;
    	}
    	public double funarea() {
    		// TODO Auto-generated method stub
    		return Math.PI*R*R;
    	}
    
    }
    

    8.foctory.java

    /**
     * 创建工厂类定义getShape方法
     * 调用接口获取圆柱的底
     */
    import java.util.Scanner;
    public class foctory {
    	    public static Shape getShape(char c){
    	        Scanner reader = new Scanner(System.in);
    	        Shape shape = null;
    	        switch(c){
    	        case 'R':System.out.println("请输入矩形的长和宽");shape = new rec(reader.nextDouble(),reader.nextDouble());break;
    	        case 'S':System.out.println("请输入正方形的边");shape = new squa(reader.nextDouble());break;
    	        case 't':System.out.println("请输入梯形的上下底");shape = new trapezium(reader.nextDouble(),reader.nextDouble(),reader.nextDouble());break;
    	        case 'T':System.out.println("请输入三角形的三边");shape = new tri(reader.nextDouble(),reader.nextDouble(),reader.nextDouble());break;
    	        case 'C':System.out.println("请输入圆形的半径");shape = new circle(reader.nextDouble());break;
    	        }
    	        return shape;  
    	    }
    }
    

    9.Tset

    /**
     * 创建主类中包含主方法
     * 调用工厂类接受用户选择的主体的底
     * 定义柱体对象调用求柱体体积方法
     */
    import java.util.Scanner;
    public class Tset {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Scanner reader = new Scanner(System.in);
    		System.out.println("请选择柱体的底:R-矩形,S-正方形,t-梯形,T-三角形,C-圆");
    		char C	=	reader.next().charAt(0);
    		System.out.println("请输入柱体的高");
    		double	H	=	reader.nextDouble();
    		cone D	= new cone(foctory.getShape(C), H);
    		System.out.println("柱体的体积是"+D.getVolume());
    		
    	}
    
    }
    

    二、运行结果

  • 相关阅读:
    修改redo log 的大小
    OGG官方文档
    linux关闭、重启服务器
    sqlplusl连接数据库时的几种连接方式
    cJSON
    TCHAR用法
    计算gdi 函数DrawString绘制的字符串象素长度和高度
    ImageAttributes 的一些方法
    给图片添加水印
    必须在构造函数基/成员初始值设定项列表中初始化
  • 原文地址:https://www.cnblogs.com/Xwwg/p/11621657.html
Copyright © 2011-2022 走看看