有一个已知的二维坐标系,定义一个抽象类,计算图形的面积和周长。要求:
(1) 使用继承机制,设计抽象基类Graph,成员属性包含图形的中心点坐标;成员方法包含修改中心坐标的方法、计算面积的抽象方法。
(2) 设计实现派生类Square(正方形)、Circle(圆)、Triangle(正三角形)、Rectangle(长方形)、Ellipse(椭圆),使用构造方法为成员属性赋初值;合理设计并实现其它成员属性和方法来计算图形的面积和周长。
package shape;
public class Circle extends Graph {
private double l;
public Circle(double x, double y, double l) {
super(x, y);
this.l = l;
}
@Override
public double area() {
return Math.PI*l*l;
}
@Override
public double round() {
return 2*Math.PI*l;
}
}
package shape;
public class Ellipse extends Graph {
private double l;
private double w;
public Ellipse(double x, double y, double l, double w) {
super(x, y);
this.l = l;
this.w = w;
}
@Override
public double area() {
return Math.PI*l*w;
}
@Override
public double round() {
return 2*Math.PI*w+4*(l-w);
}
}
package shape;
public class Rectangle extends Graph {
private double l;
private double w;
public Rectangle(double x, double y, double l, double w) {
super(x, y);
this.l = l;
this.w = w;
}
@Override
public double area() {
return l*w;
}
@Override
public double round() {
return 2*(l+w);
}
}
package shape;
//正方形
public class Square extends Graph{
private double l;
public Square(double x, double y ,double l) {
super(x, y);
this.l=l;
}
@Override
public double area() {
return l*l;
}
@Override
public double round() {
return 4*l;
}
}
package shape;
//正三角形
public class Triangle extends Graph{
private double l;
public Triangle(double x,double y,double l){
super(x,y);
this.l=l;
}
@Override
public double area() {
return l*l*Math.sqrt(3)/4;
}
@Override
public double round() {
return 3*l;
}
}
package shape;
public abstract class Graph {
protected double x;
protected double y;
public Graph(double x,double y){
this.x=x;
this.y=y;
}
public void setCenter(double x,double y){
this.x=x;
this.y=y;
}
//计算图形周长方法
public abstract double round();
//计算图形面积方法
public abstract double area();
}
package shape;
public class example{
public static void main(String[] args){
Square square = new Square(1, 2, 3);
System.out.println("正方形面积:" + square.area());
System.out.println("正方形周长:" + square.round());
Circle circle = new Circle(1, 2, 3);
System.out.println("圆形面积:" + circle.area());
System.out.println("圆形周长:" + circle.round());
Triangle triangle = new Triangle(1, 2, 3);
System.out.println("正三角形面积:" + triangle.area());
System.out.println("正三角形周长:" + triangle.round());
Rectangle rectangle = new Rectangle(1, 2, 3, 4);
System.out.println("长方形面积:" + rectangle.area());
System.out.println("长方形周长:" + rectangle.round());
Ellipse ellipse = new Ellipse(1, 2, 3, 4);
System.out.println("椭圆面积:" + ellipse.area());
System.out.println("椭圆周长:" + ellipse.round());
}
}