• 第九次作业


    一题目

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

     二 代码

    /**创建接口,并创建求面积的方法*/

    package act;
    
     interface Shape {
         double getArea();
    
    }

    /**创建圆形类,计算圆的面积*/

    package act;
    
    public class yuan implements Shape {
        double r;
        public yuan(double r){
            this.r=r;
        }
        public double getArea(){
            return Math.PI*r*r;
        }
        
    
    }

    /**创建正方形类,求正方形为底的面积*/

    package act;
    
    public class ZFX implements Shape{
        double bian;
        ZFX(double bian){
            this.bian=bian;
            }
        public double getArea(){
            return bian*bian;
        }
    }

    /**创建柱体类,获得柱体体积和换底的方法*/

    package act;
    
    public class Zhu  {
        Shape shape;
        double gao;
        public Zhu(Shape shape,double gao){
            this.shape=shape;
            this.gao=gao;
        }
        public double getVolume(){
            return shape.getArea()*gao;
        }
        public void setShape(Shape shape){
            this.shape=shape;
        }
    
    }

    /**创建三角形类,求三角形的面积*/

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

    /**创建梯形类,求以梯形为底的面积*/

    package act;
    
    public class Ti implements Shape{
        double a,b,c;
        public Ti(double a,double b,double c){
            this.a=a;
            this.b=b;
            this.c=c;
        }
        public double getArea(){
            return (a+b)*c/2;
        }
    
    }

    /**创建矩形类,实现求矩形面积*/

    package act;
    
    public class Re implements Shape{
        protected double c,k;
        public Re(double c,double k){
                this.c=c;
                this.k=k;
                }
            public double getArea(){
                return c*k;
            }
            }

    /**创建工厂类,实现输入一个相应的字符,输出相应图形的体积*/

    package act;
    import java.util.*;
    import java.io.InputStreamReader;
    public class G {
            Shape shape;
            Scanner s=new Scanner(System.in);
            char c=s.next().charAt(0);
            public Shape getShape(){
                switch(c){
                case 's':shape=new Tri(3,4,5);break;
                case 'r':shape=new Re(5,6);break;
                case 't':shape=new Ti(3,4,6);break;
                case 'z':shape=new ZFX(9);break;
                case 'c':shape=new yuan(4);break;
                }
                return shape;
            }
            public char getC(){
                return c;
                }
            public void setShape(Shape shape){
                this.shape=shape;
                }
            public void setC(char c){
                this.c=c;
            }
    }

    /**在主类中输出以各种其他图形为底的体积*/

    package act;
    
    import java.util.*;
    public class ZL {
        public static void main(String[] args) {
            for(int j=0;j<5;j++){
            System.out.println("输入的形状为:");
            G m=new G();
            Zhu cone1=new Zhu(m.getShape(),6);
            cone1.setShape(m.getShape());
            double i=cone1.getVolume();
            System.out.println(i);
                    }
        }
    }

    运行结果

  • 相关阅读:
    如何在 Linux 中更改 swappiness
    logrotate机制&原理
    Linux命令 – ln 软连接与硬链接区别介绍
    Python实现目录文件的全量和增量备份
    tr -d命令删除与字符无关的符号
    CentOS7搭建时间服务器-chrony
    linux(centos7.0以上版本)安装 mysql-5.7.24-linux-glibc2.12-x86_64.tar 版本的mysql
    运维相关指标数据采集并ES入仓
    Kubernetes容器集群管理环境
    C++调用IDL程序的做法(三)
  • 原文地址:https://www.cnblogs.com/shuang123/p/11657540.html
Copyright © 2020-2023  润新知