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

    一、题目

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

    /**创界接口Shape 储存一个计算面积对的方法**/
    package com;
    public interface Shape {
    double getArea();
    }
    /**创建矩形类,实现图形接口的实现,重写计算面积的方法,和构造方法,成员变量长宽**/
    
    package com;
    public class Rect implements Shape{
        double wid,len;
        public Rect(double len,double wid){
            this.wid=wid;
            this.len=len;
        }
        
        public double getArea(){
            return wid*len;
        }
    
    }
    /**创界圆类,实现图形接口的实现,重写计算面积的方法,和构造方法,成员变量半径**/
    package com;
    public class Circle implements Shape{
        double r;
        public Circle(double r){
            this.r=r;
        }
    
        public double getArea(){
            return Math.PI*r*r;
        }
    
    }
    /**创建正方形类,实现图形接口的实现,重写计算面积的方法,和构造方法,成员变量边**/
    package com;
    public class Squre implements Shape{
        double bian;
         Squre(double bian) {
           this.bian=bian;    }
        public double getArea(){
            return bian*bian;
        }
    }
    /**创建梯形类,实现图形接口的实现,重写计算面积的方法,和构造方法,成员变量上底,下底,高**/
    
    package com;
    public class Tixing implements Shape{
        double top,high,di;
        public Tixing(double top,double high,double di){
            this.top=top;
            this.di=di;
            this.high=high;
        }
        public double getArea(){
            return (top+high)*high/2;
        }
    }
    /**创建三角形类,实现图形接口的实现,重写计算面积的方法,和构造方法,成员变量三边长**/
    
    package com;
    public class Trangle implements Shape {
        double a,b,c;
        Trangle(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));
        }
    
    }
    /**创建工厂类,实现输入一个字符,并实现相应的体积**/
    package com;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    public class Fac {
        Shape shape;
        Scanner rea=new Scanner(System.in);
        
        char ch=rea.next().charAt(0);
        
        public Shape getShape(){
            switch(ch){
            case 's': shape =new Trangle(3,4,5); break;    
            case 'c': shape = new Circle(3); break;
            case 'r': shape = new Rect(3,4); break;
            case 'z': shape = new Squre(4); break;
            case 't': shape = new Tixing(3,4,4); break;
            
            }
            return shape;
        }
    
        public char getCh() {
            return ch;
        }
    
        public void setShape(Shape shape) {
            this.shape = shape;
        }
    
        public void setCh(char ch) {
            this.ch = ch;
        }
    
    
    
    }
    /**创建柱体类,和柱体类得构造方法,写一个计算体积的方法,调图形类的求面积的方法,和换底的方法**/
    package com;
    public class Cone {
         Shape shape;
         double high;
         Cone(Shape shape ,double high){
             this.shape=shape;
             this.high=high;
         }
        public double getVolume() {
            return shape.getArea()*high;
        }
    
    
    void  changeDi(Shape shape){
    this.shape =shape;       
       }
    }
    
    
    
    
    
    /**创建主方法,实例化工厂类和柱体类,输出体积**/
    package com;
    import java.util.Scanner;
    public class Text {
        public static void main(String[] args) {
            for(int i=0;i<5;i++){
            System.out.print("请输入形状");
            Fac fac1=new Fac();
            Cone cone1=new Cone(fac1.getShape(),5);
            cone1.changeDi(fac1.getShape());
            double vol1=cone1.getVolume();
            System.out.println("体积"+vol1);
            }
        }
    }

  • 相关阅读:
    2017.8.15
    2017.8.14
    2017.8.12
    2017.8.11
    2017.8.10
    IE9下透明度设置无效
    IE7不支持Z-index问题
    IE9下支持jQuery
    IE9下支持css3的方法
    oninput、onpropertychange和onchange
  • 原文地址:https://www.cnblogs.com/chenxiangyuu/p/11612087.html
Copyright © 2011-2022 走看看