实训题 2:求不同图形的周长
一 项目说明
实训目的:利用接口来实现多态。
实训要求:设计一个图形的接口,接口含求周长的抽象方法,通过定义不同图形如圆、矩形、三角形、梯形等类来实现接口中方法。通过接口类对象引用子类对象来求不同图形的周长。
二 类设计
每个类的构造方法中传入的都是各个边长的长度,perimeter()方法是求各个图形的周长,即每个边长相加之和。类中的属性就是各个周长的边长。
三 项目实现设计
定义一个Graph接口,在接口中写一个求周长的抽象方法,然后定义一些类,实现Graph接口,在类中实现接口中的抽象方法并创建一个构造方法,用来接收图形的边长,然后在测试类Test01中创建这些类的实例化对象,并传入参数,调用该这些类的构造方法的同时再用对象名.方法名调用这些类的perimeter()方法,输出结果周长的值。
首先在测试类的声明前,引入扫描仪import java.util.Scanner; 然后在主方法中创建一个扫描仪Scanner input=new Scanner(System.in);通过扫描仪从键盘输入的数据来判断程序需要执行的功能switch(value)。
如果是1,则是求圆的周长,输入圆的半径。然后通过对象调用输出结果。
如果是2,则是求长方形的周长,输入长方形的长和宽。然后通过对象调用输出结果。
如果是3,则是求梯形的周长,输入梯形的各个边长。然后通过对象调用输出结果。
如果是4,则是求三角形的周长,输入三角形的底边和两侧边长。然后通过对象调用输出结果。
四 运行与测试
五 分析与总结
求图形的周长我们以前Java实训课写过,貌似也没什么好讲的,就是简单的定义一个接口,然后在写接口的实现类,在实现类中实现接口中的抽象方法,然后在到测试类中将需要求的图形的周长的方法调用,传入具体的参数值即可。需要注意的就是边长大多数是浮点数,所以在设置数据类型的时候,把边长的数据类型设置为浮点类型!
package experiment.two;
//求圆的周长
public class Circular implements Graph{
public double r;
public Circular(double r) {
this.r=r;
}
@Override
public void perimeter() {
// TODO Auto-generated method stub
System.out.println("圆的周长为:"+Math.PI*r*2);
}
}
package experiment.two;
public interface Graph {
void perimeter();
}
package experiment.two;
//求长方形的周长
public class Rectangle implements Graph