第9次作业--接口及接口回调
1.题目:
利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积。
2.TIXing.java
package com; /*定义一个梯形类,并求梯形的面积 * */ public class TIXing implements Shape{ double a; double b; double h; public TIXing(double a,double b,double h){ this.a=a; this.b=b; this.h=h; } public double getArea(){ return (a+b)*h/2; } }
3.Sjx.java
package com; /*定义一个三角形类,定义求三角形面积的方法 * */ public class Sjx implements Shape{ double a; double b; double c; public Sjx(double a,double b,double c){ this.a=a; this.b=b; this.c=c; } public double getArea(){ double d=(a+b+c)/2; return Math.sqrt(d*(d-a)*(d-b)*(d-c)); } }
4.JuXing.java
package com; /*创建一个矩形类,并创建方法求矩形的面积 * */ public class JuXing implements Shape{ double width; double length; public JuXing(double width,double length){ this.width=width; this.length=length; } public double getArea(){ return width*length; } }
5.circle.java
package com; /* * 定义一个圆类,求圆的面积 * */ public class Circle implements Shape{ double r; public Circle(double r){ this.r=r; } public double getArea(){ return Math.PI*r*r; } }
6.zfx.java
package com; /*定义一个正方型类 * */ public class zfx extends JuXing{ public zfx(double side){ super (side,side); } public zfx (){ super(0,0); } public double getArea(){ return width * width; } }
7.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; } }
8.shape.java
package com; public interface Shape{ double getArea(); }
9.Factory.java
package com; /*创建工厂,定义图形对象dx,创建dx的方法,方法中有一个开关方法,并返回图形的对象 * */ public class Factory { static Shape shape=null; public static Shape dx(char r){ switch(r){ case 'z':System.out.println("用正方形为底的柱体体积为:"); shape=new zfx(8);break; case 's':System.out.println("用三角形为底的柱体体积为:"); shape=new Sjx(1,2,3);break; case 'j':System.out.println("用矩形为底的柱体体积为:"); shape=new JuXing(6,7);break; case 'c':System.out.println("用圆形为底的柱体体积为:"); shape=new Circle(15);break; case 't':System.out.println("用梯形为底的柱体体积为:"); shape=new TIXing(3,5,6);break; } return shape; } }
10.Text.java
package com; /*创建一个Text类,创建一个while循环,在循环中定义一个柱体对象,并调用求体积方法输出结果 * 如果输入o则退出循环 * */ import java.util.Scanner; public class Text { public static void main(String[] args) { while(true){ //创建while循环 Scanner reader=new Scanner(System.in); System.out.println("请输入图形字母:"); char c=reader.next().charAt(0); if(c=='o'){ //判断是否退出循环 System.out.println("退出循环"); return; } Cone co=new Cone(Factory.dx(c),5);//创建柱体对象 System.out.println(co.getV()); } } }
11.程序运行