第九次作业-接口及接口回调
题目:
利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形对象为底的柱体体积。
源程序:
/*
* 创建接口,声明求面积方法
*/
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());
}
}
测试运行

浙公网安备 33010602011771号