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

    题目:

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

    代码:

    Shape.java

    /*创建接口

    求面积方法*/

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

    JuXing.java

    /*定义成员变量 

       创建构造方法JuXing()

       重写接口中求面积方法。*/

    /*定义成员变量,创建构造方法JuXing()和重写接口中求面积方法。*/
    package com;
    public class JuXing implements Shape{
        double length;
        double width;
        public JuXing(double length,double width){
            this.length=length;
            this.width=width;
        }
        @Override
        public double getArea() {
            double area=length*width;
            return area;
        }
    
    }

    Zfx.java

    /* 继承矩形

    创建有参构造方法Zfx()

    重写求面积方法*/

    package com;
    
    public class Zfx extends JuXing {
        public Zfx(double side){
            super(side,side);
        }
        @Override
        public double getArea() {
            double area=width*width;
            return area;
        }
    
    }

    Triangle.java

    /*定义三个表示三边的成员变量

    创建有参构造方法

    重写实现求面积方法*/

    package com;
    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;
        }
        @Override
        public double getArea() {
            double C=(a+b+c)/2;
            double area=Math.sqrt(C*(C-a)*(C-b)*(C-c));//面积公式
            return area;
        }
    
    }

    TX.java

    /*定义三个成员变量表示上底下底和高
    创建有参构造方法
    重写实现求面积方法*/

    package com;
    public class TX implements Shape {
        double ShangD,XiaD,high;
        public TX(double ShangD,double XiaD,double high){
            this.ShangD=ShangD;
            this.XiaD=XiaD;
            this.high=high;
        }
        @Override
        public double getArea() {
            double area=(ShangD+XiaD)*high/2;
            return area;
        }
    
    }

    Circle.java

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

    package com;
    public class Circle implements Shape {
        double r;
        double PI=3.14;
        public Circle(double r){
            this.r=r;
        }
        @Override
        public double getArea() {
            double area=PI*r*r;
            return area;
        }
    
    }

    Factory.java

    /*创建Xz()方法

     运用switch()选择底面形状*/

    package com;
    public class Factory {
         static Shape shape=null;
         public static Shape Xz(char c){
             switch(c){ 
             case 'j':
                 System.out.println("长方形为底的体积:");
                 shape=new JuXing(6,1);break;
             case 'z':
                 System.out.println("正方形为底的体积:");
                 shape=new Zfx(6);break;
             case 's':
                 System.out.println("三角形为底的体积:");
                 shape=new Triangle(3,4,5);break;
             case 't':
                 System.out.println("梯形为底的体积:");
                 shape=new TX(6,1,3);break;
             case 'y':
                 System.out.println("圆为底的体积:");
                 shape=new Circle(6);break;
             }
            return shape;
         }
    }

    Test.java

    /*进行输入操作
    创建f和cone对象
    判断程序是否退出
    cone对象调用求体积方法,输出其返回值*/

    package com;
    import java.util.Scanner;
    public class Test {
        public static void main(String[] args) {
            System.out.println("请选择底面形状:");
            System.out.println("j:矩形;  z:正方形  ;s:三角形; t:梯形 ;y:圆形");
            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.Xz(c),9);
            System.out.println(cone.getV());//输出体积
            
            }
        }
    }

    测试运行结果:

  • 相关阅读:
    实验一、词法分析实验
    词法分析程序新
    词法分析程序
    我对编译原理的理解
    Unity3d数据存储 PlayerPrefs,XML,Json数据的存储与解析
    Unity3d网络总结(三) 封装Socket创建简单网络
    Unity3d网络总结(二)使用NetWorking代码搭建简单的网络模块
    Unity3d网络总结(一) NetWork组件使用
    Unity加载AB包
    unity编辑器拓展
  • 原文地址:https://www.cnblogs.com/leeyangtongxue/p/11630109.html
Copyright © 2011-2022 走看看