• 胡昊—第9次作业--接口及接口回调


    一、题目:

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

    二、代码:

    定义接口  Shape

    package tiji;
    
    public interface Shape {
    	public double getArea();
    }
    

      

    定义 矩形类,调用Shape接口  

    package tiji;
    
    public class JvXing implements Shape {
    	public double width;
    	public double length;
    	
    	public JvXing(double width,double length){
    		this.width=width;
    		this.length=length;
    	}
    	
    	public double getArea(){
    		return width*length;
    	}
    }
    

    定义三角类,调用Shape接口  

    package tiji;
    
    public class SanJiao implements Shape{
    	double a,b,c;
    	
    	public SanJiao(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));
    	}
    	
    }
    

    定义梯形类,调用Shape接口

    package tiji;
    
    public class TiXing implements Shape {
    	double a,b,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;
    	}
    }
    

    定义圆形类,调用Shape接口  

    package tiji;
    
    public class Yuan implements Shape{
    	double r;
    	
    	public Yuan(double r){
    		this.r=r;
    	}
    	
    	public double getArea() {
    		return 3.14*r*r;
    	}
    	
    }
    

      

     定义正方形类,继承矩形类

    package tiji;
    
    public class ZhengFang extends JvXing{
    	
    	public ZhengFang(double a) {
    		super(a, a);
    	}
    	
    	public double getArea(){
    		return width*width;
    	}
    }
    

    定义柱体类,实现求体积和换底求体积的功能  

    package tiji;
    
    public class ZhuTi  {
    	Shape shape;
    	double height;
    	
    	public ZhuTi(Shape shape,double height){
    		this.shape=shape;
    		this.height=height;
    	}
    	
    	public double getV(){
    		return shape.getArea()*height;
    	}
    	
    	public void changeShape(Shape shape){
    		this.shape=shape;
    	}
    }
    

    定义工厂类,实现通过输入的字符,自动创建对应类型的对象  

    package tiji;
    
    public class factory {
    	//Scanner r=new Scanner(System.in);
    	Shape getShape(char c){
    		Shape shape=null;
    		
    		switch(c){
    			case 'j':shape=new JvXing(5,6);break;
    			case 's':shape=new SanJiao(5,6,7);break;
    			case 't':shape=new TiXing(4,5,6);break;
    			case 'y':shape=new Yuan(5);break;
    			case 'z':shape=new ZhengFang(5);break;
    		}
    		return shape;
    	}
    	
    }
    

    主类,程序的 入口  

    package tiji;
    import java.util.*;
    import tiji.ZhuTi;
    import tiji.factory;
    
    public class test {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Scanner r=new Scanner(System.in);
    		char c=r.next().charAt(0);
    		factory f=new factory();
    		f.getShape(c);
    		ZhuTi z=new ZhuTi(f.getShape(c),5);
    		System.out.println("体积是:"+z.getV());
    		System.out.print("请输入柱体新底的类型:");
    		c=r.next().charAt(0);
    		z.changeShape(f.getShape(c));
    		System.out.println("换底后的体积:"+z.getV());
    	}
    
    }  


    三、实现

      

  • 相关阅读:
    跨域问题
    Django缓存机制
    Django Reat Framework --- 版本控制
    Hellow!
    回忆
    突然看见新评论通知
    [退役前的小声bbbbbbbbbbbbbbbbbbbbbb]
    【题解】【CQOI2018】解锁屏幕(玄学优化)
    solution
    1009-自闭++
  • 原文地址:https://www.cnblogs.com/whohow/p/11607262.html
Copyright © 2020-2023  润新知