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

    题目:

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

    Shape.java

    1 package com;
    2 //接口
    3 public interface Shape {
    4     double getArea();
    5 
    6 }

    Rectangle.java

     1 package com;
     2 
     3 public class Rectangle implements Shape {
     4     double a;//矩形長
     5     double b;//矩形寬
     6 
     7     public Rectangle(double a, double b) {
     8         this.a = a;
     9         this.b = b;
    10     }
    11 
    12     @Override
    13     public double getArea() {
    14 
    15         return a * b;//返回面積
    16     }
    17 
    18 }

    Squera.java

    
    
     1 package com;
     2 
     3 public class Squera extends Rectangle {
     4     public Squera(double a) {//正方形的邊
     5         super(a, a);
     6 
     7     }
     8 
     9     public double getArea() {
    10         return a * a;
    11     }
    12 
    13 }
     
     1 package com;
     2 
     3 public class Triangle implements Shape {
     4 
     5     double a;//三角形三邊長
     6     double b;
     7     double c;
     8 
     9     public Triangle(double a, double b, double c) {
    10         this.a = a;
    11         this.b = b;
    12         this.c = c;
    13     }
    14 
    15     public double getArea() {
    16         double p = (a + b + c) / 2;
    17         return Math.sqrt(p * (p - a) * (p - b) * (p - c));//三角形面積
    18     }
    19 
    20 }

    Cricle.java

     1 package com;
     2 
     3 public class Cricle implements Shape {
     4 
     5     double r;//半径
     6     double PI = 3.14;
     7 
     8     public Cricle(double r) {
     9         this.r = r;
    10     }
    11 
    12     public double getArea() {
    13 
    14         return r * r * PI;//
    15     }
    16 
    17 }

    Trapezoid.java

     1 package com;
     2 
     3 public class Trapezoid implements Shape {
     4 
     5     double a;//梯形的两边及高
     6     double b;//
     7     double h;//
     8     public Trapezoid(double a,double b,double h) {
     9         this.a=a;
    10         this.b=b;
    11         this.h=h;
    12         // TODO Auto-generated constructor stub
    13     }
    14     public double getArea() {
    15         
    16         return (a+b)*h/2;//梯形面积
    17     }
    18 
    19 }

    Cone.java

    package com;
    
    public class Cone {
        Shape shape;//定義接口變量
        double h;//
    
        public Cone(Shape shape, double h) {
            this.shape = shape;
            this.h = h;
    
        }
    
        public double getV() {//球體積
            return shape.getArea() * h;
        }
    
        public void changeD() {//換底
            this.shape = shape;
        }
    }

    Factory.java

     1 package com;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Factory {
     6 
     7     Shape getShape(char c) {
     8         Scanner reader = new Scanner(System.in);
     9         Shape shape = null;
    10         switch (c) {//根据字符判断形状
    11         case 'R':
    12             System.out.println("请输入矩形的长和宽
    ");
    13             shape = new Rectangle(reader.nextInt(), reader.nextDouble());
    14             break;
    15         case 'Z':
    16             System.out.println("请输入正方形的边长,柱体的高
    ");
    17             shape = new Squera(reader.nextDouble());
    18             break;
    19         case 'C':
    20             System.out.println("请输入圆的半径
    ");
    21             shape = new Cricle(reader.nextDouble());
    22             break;
    23         case 't':
    24             System.out.println("请输入三角形的三条边
    ");
    25             shape = new Triangle(reader.nextDouble(), reader.nextDouble(),
    26                     reader.nextDouble());
    27             break;
    28 
    29         case 'T':
    30             System.out.println("请输入梯形的上底下底和高
    ");
    31             shape = new Trapezoid(reader.nextDouble(), reader.nextDouble(),
    32                     reader.nextDouble());
    33             break;
    34 
    35         }
    36         return shape;//
    37     }
    38 }

    Test.java

     1 package com;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Test {
     6     public static void main(String[] args) {
     7 
     8         Scanner reader = new Scanner(System.in);
     9         System.out.print("请输入你选择的形状:矩形R,正方形Z,三角形t,圆C,梯形T:
    ");
    10         char c = reader.next().charAt(0);
    11         Factory factory = new Factory();
    12         Cone cone = new Cone(factory.getShape(c), reader.nextDouble());//获取底面积,高
    13         System.out.print(cone.getV());
    14 
    15     }
    16 }
  • 相关阅读:
    BERT 简介 P1_李宏毅
    GAN_P4 Learning from Unpaired Data_李宏毅
    GAN_P3_李宏毅
    Generation P1_李宏毅
    GAN_P2_Theory behind GAN_李宏毅
    李宏毅_Transformer p2
    李宏毅_Transformer p1
    强类型数据集 官方教程
    网页管理系统一
    读张子阳的用户验证自定义IPrincipal和IIdentity有感
  • 原文地址:https://www.cnblogs.com/hzcxwz/p/11617220.html
Copyright © 2011-2022 走看看