第九次作业--接口及接口回调
题目: 利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底 的柱体体积。
1.源代码
java.Shape文件
//创建了一个接口,定义了一个求面积的方法// package cn.edu.ccut.factory; public interface Shape { public double getArea(); }
以下是矩形类、正方形类、梯形类、圆形类、三角形类,分别存放在java.Juxing 、 java.zheng 、 java.tixing 、 java.circle 、 java.Triangle文件中
java.Juxing文件
/**创建了一个矩形类,实现Shape接口,定义了一个成员变量长length和宽width,以及构造方法Juxing, 重写了求面积方法getArea() **/ package cn.edu.ccut.factory; public class Juxing implements Shape { public double length; public double width; public Juxing(double length,double width){ this.length=length; this.width=width; } public double getArea(){ return length*width; } }
java.zheng文件
/**创建了一个正方形类,实现Shape接口,定义了一个成员变量边长length,和构造方法, 重写求面积方法getArea() **/ package cn.edu.ccut.factory; public class zheng implements Shape { double length; zheng(double length){ this.length=length; } public double getArea(){ return length*length; } }
java.tixing文件
/**创建了一个梯形类,实现Shape接口,定义了三个成员变量上底shangdi、下底xiadi、高heith, * 以及构造方法tixing(),重写了求面积方法getArea() **/ package cn.edu.ccut.factory; public class tixing implements Shape { public double shangdi; public double xiadi; public double heigth; public tixing(double shangdi,double xiadi,double heigth){ this.heigth=heigth; this.shangdi=shangdi; this.xiadi=xiadi; } public double getArea(){ return (shangdi+xiadi)*heigth/2; } }
java.circle文件
/*创建了一个圆类,实现Shape接口,定义了一个成员变量半径r,和构造方法, 重写了求面积方法getArea() */ package cn.edu.ccut.factory; public class circle implements Shape { public double r; public circle(double r){ this.r=r; } public double getArea(){ return Math.PI*r*r; } }
java.Triangle文件
/**创建了一个三角形类,实现Shape接口,定义了三个成员变量分别为三角形的三条边a、b、c, * 以及构造方法Triangle(),重写了求面积方法getArea() **/ package cn.edu.ccut.factory; public class Triangle implements Shape{ public double a; public double b; public double c; public Triangle(double a,double b,double c){ this.a=a; this.b=b; this.c=c; } public double getArea(){ double p=(a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } }
java.Factory文件
/*创建了一个工厂类Factory,主要实现通过输入不同的字符(利用Switch分支语句)进行不同对象的使用, * 最后完成不同底的柱体体积的计算。 */ package cn.edu.ccut.factory; import java.util.*; public class Factory { Shape shape; Scanner reader=new Scanner(System.in); char ch=reader.next().charAt(0); public Shape getShape(){ switch (ch) { case 'J': shape =new Juxing(6,10); break; case 'X': shape=new tixing(4,6,4); break; case 'T': shape=new Triangle(3,4,5); break; case 'C': shape=new circle(6); break; case 'Z': shape=new zheng(3); break; } return shape; } }
2 .运行截图