设岾一个简单岶图形软件系岺常见岶图形有三角形长方形圆椭圆等它们岶岹能有岾算岷崠、岾算周长、填充颜色等岻种图形还可以有自己岶岹能。请设岾出这个简单岶图形系岺。java
public abstract class Shape { private String name; private String fillColor; private String borderColor;
public Shape(String name, String fillColor, String borderColor) {
this.name = name;
this.fillColor = fillColor;
this.borderColor = borderColor;
}
public abstract double getArea();
public abstract double getPerimeter();
public String getName() {
return name;
}
public String getFillColor() {
return fillColor;
}
public String getBorderColor() {
return borderColor;
}
public void setFillColor(String fillColor) {
this.fillColor = fillColor;
}
public void setBorderColor(String borderColor) {
this.borderColor = borderColor;
}
}
public class Triangle extends Shape { private double a; private double b; private double c;
public Triangle(String name, String fillColor, String borderColor, double a, double b, double c) {
super(name, fillColor, borderColor);
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double getArea() {
double p = (a + b + c) / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
@Override
public double getPerimeter() {
return a + b + c;
}
}
public class Rectangle extends Shape { private double width; private double height;
public Rectangle(String name, String fillColor, String borderColor, double width, double height) {
super(name, fillColor, borderColor);
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
@Override
public double getPerimeter() {
return 2 * (width + height);
}
}
public class Circle extends Shape { private double radius;
public Circle(String name, String fillColor, String borderColor, double radius) {
super(name, fillColor, borderColor);
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
}
public class Ellipse extends Shape { private double semiMajorAxis; private double semiMinorAxis;
public Ellipse(String name, String fillColor, String borderColor, double semiMajorAxis, double semiMinorAxis) {
super(name, fillColor, borderColor);
this.semiMajorAxis = semiMajorAxis;
this.semiMinorAxis = semiMinorAxis;
}
@Override
public double getArea() {
return Math.PI * semiMajorAxis * semiMinorAxis;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * Math.sqrt((semiMajorAxis * semiMajorAxis + semiMinorAxis * semiMinorAxis) / 2);
}
}
public class Main { public static void main(String[] args) { Shape triangle = new Triangle("Triangle", "red", "black", 3, 4, 5); System.out.println(triangle.getName() + " area: " + triangle.getArea()); System.out.println(triangle.getName() + " perimeter: " + triangle.getPerimeter());
Shape rectangle = new Rectangle("Rectangle", "blue", "black", 4, 5);
System.out.println(rectangle.getName() + " area: " + rectangle.getArea());
System.out.println(rectangle.getName() + " perimeter: " + rectangle.getPerimeter());
Shape circle = new Circle("Circle", "green", "black", 3);
System.out.println(circle.getName() + " area: " + circle.getArea());
System.out.println(circle.getName() + " perimeter: " + circle.getPerimeter());
Shape ellipse = new Ellipse("Ellipse", "yellow", "black", 4, 3);
System.out.println(ellipse.getName() + " area: " + ellipse.getArea());
System.out.println(ellipse.getName() + " perimeter: " + ellipse.getPerimeter());
}
原文地址: https://www.cveoy.top/t/topic/g0xu 著作权归作者所有。请勿转载和采集!