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

    题目:

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

    源程序:

    /*
     * 创建接口,声明求面积方法
     */
    package f;
    
    public interface Shape {
      double getmianji();
    
    	
    }
    

      

    /*
     * 创建一个矩形类,定义长和宽,求面积方法,返回面积
     */
    package f;
    
    public class Juxing implements Shape {
      double m;
      double n;
      
      public Juxing (double m,double n){
    	  this.m=m;
    	  this.n=n;
      }
      public double getmianji(){
    	  return m*n;
      }
    }
    

      

    /*
     * 创建一个三角形类,定义三角形的三边长,求面积的方法
     */
    package f;
    
    public class San implements Shape {
    
     double a;
     double b;
     double c;
     public San(double a,double b,double c){
    	 this.a=a;
    	 this.b=b;
    	 this.c=c;
     }
     public double getmianji(){
    	 double p=(a+b+c)/2;
    	 return Math.sqrt(p*(p-a)*(p-b)*(p-c));
    	 
     }
    }
    

      

    /*
     * 创建一个梯形类,定义上底下底和高,求面积的方法并返回面积值
     */
    package f;
    
    public class Tx implements Shape {
    double a;
    double b;
    double h;
    public Tx(double a,double b,double h){
    	this.a=a;
    	this.b=b;
    	this.h=h;
    }
    public double getmianji(){
    	return (a+b)*h/2;
    }
    
    }
    

      

    /*
     * 创建一个圆形类,定义圆形的半径,求面积的方法,返回面积值
     */
    package f;
    
    public class Yx implements Shape{
    double r;
    double p=3.14;
    public Yx(double r){
    	this.r=r;
    }
    public double getmianji(){
    	return p*r*r;
    }
    }
    

      

    /*
     * 创建一个正方形类定义边长,求面积的方法,返回面积值
     */
    package f;
    
    public class Zheng implements Shape {
    	double a;
     public Zheng(double a){
    	 super();
    	 
     }
      public double getmianji(){
    	 
    	return a*a;
    	 
     }
    }
    

      

    /*
     * 创建一个柱体类,定义图形的对象,定义柱体的高,求面积的方法
     */
    package f;
    
    public class Cone {
    Shape shape;
    double h;
    public Cone(Shape shape,double h){
    	this.shape=shape;
    	this.h=h;
    }
     public double getv(){
    	return shape.getmianji()*h;
    }
    
    }
    

      

    /*
     * 创建一个工厂类,一个方法t,输入字母判断那个图形,返回图形
     */
    package f;
    
    
    public class Factory {
    	static Shape shape=null;
    	public static Shape t(char c){
    		
    	switch(c){
    	case'J': shape=new Juxing(1,2);break;
    	case'Z': shape=new Zheng(2);break;
    	case'S': shape=new San(4,5,6);break;
    	case'Y': shape=new Yx(2);break;
    	case'T': shape=new Tx(2,4, 5);break;
    	}
     return shape;
    }
    }
    

      

    /*
     * 创建主方法,输入字母,创建柱体对象,通过调用方法输出体积
     */
    package f;
    import java.util.*;
    
    public class Test {
    
    	
    	public static void main(String[] args) {
    		
    		System.out.println("输入图形字母为:");
    		Scanner reader=new Scanner(System.in);
    		char c=reader.next().charAt(0);
    	    Factory factory=new Factory();
    		Cone cone=new Cone(Factory.t(c),5);
    		System.out.println("柱体的体积是:"+cone.getv());
    	}
    	
    
    }
    

      测试运行

  • 相关阅读:
    系统的访问
    tomcat 和 数据库的连接
    实体类编写规则
    webmagic 爬虫
    docker安装官方Redis镜像并启用密码认证
    解决Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. 问题
    Springboot配置druid报错Failed to bind properties under 'spring.datasource' to javax.sql.DataSource
    阿里云centos7.6搭建SVN远程仓库和Git远程仓库
    java 三大特性封装继承多态
    使用easyui tab需要注意的问题
  • 原文地址:https://www.cnblogs.com/lllm/p/11623326.html
Copyright © 2011-2022 走看看