第九次作业-接口及接口回调

题目:

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

源程序:

/*
 * 创建接口,声明求面积方法
 */
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());
	}
	

}

  测试运行

猜你喜欢

转载自www.cnblogs.com/lllm/p/11623326.html