对于一个正n边形,设计一个名为RegularPolygon的类,该类包括:
一个名为n的int型私有数据域定义多边形的边数,默认值=3
一个名为side的double型私有数据域存储边的长度,默认值=1
一个名为x的double型私有数据域,定义多边形中点的x坐标,默认值=0
一个名为y的double型私有数据域,定义多边形中点的y坐标,默认值=0
一个创建带指定边数和边长度,中心在(0, 0)的正多边形构造方法
一个创建带指定边数和边长度,中心在(x, y)的正多边形构造方法
所有数据域的访问器和修改器
一个返回多边形周长的方法getPerimeter()
一个返回多边形面积的方法getArea()
分别使用无参构造方法,RegularPolygon(6, 4),RegularPolygon(10, 4, 5.6, 7.8)创建三个RegularPolygon对象,显示每个对象的周长和面积
// **8.9
class RegularPolygon {
private int n = 3;
private double side = 1;
private double x = 0, y = 0;
final static double PI = 3.1415926;
// 默认无参构造方法
public RegularPolygon() {}
// 指定边数和边长,中心在(0, 0)的构造方法
public RegularPolygon(int n, double side) {
this.n = n;
this.side = side;
}
// 指定边数和边长,中心在(x, y)的构造方法
public RegularPolygon(int n, double side, double x, double y) {
this.n = n;
this.side = side;
this.x = x;
this.y = y;
}
/* 或使用this()构造方法
private int n;
private double side;
private double x, y;
final static double PI = 3.1415926;
// 指定边数和边长,中心在(x, y)的构造方法
public RegularPolygon(int n, double side, double x, double y) {
this.n = n;
this.side = side;
this.x = x;
this.y = y;
}
// 指定边数和边长,中心在(0, 0)的构造方法
public RegularPolygon(int n, double size) {
this(n, size, 0, 0);
}
// 默认无参构造方法
public RegularPolygon() {
this(3, 1, 0, 0);
}
*/
// 所有数据域的访问器
public int getN() {
return n;
}
public double getSide() {
return side;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
// 所有数据域的修改器
public void setN(int n) {
this.n = n;
}
public void setSide(double side) {
this.side = side;
}
public void setX(double x) {
this.x = x;
}
public void setY(double y) {
this.y = y;
}
// 返回周长和面积
public double getPerimeter() {
return n * side;
}
public double getArea() {
return n * side * side / (4 * Math.tan(PI / n));
}
public void drawPolygon() {
System.out.println("该" + n + "边形周长为" + getPerimeter() + ", 面积为" + getArea());
}
}
public class Test {
public static void main(String args[]) {
RegularPolygon r1 = new RegularPolygon();
RegularPolygon r2 = new RegularPolygon(6, 4);
RegularPolygon r3 = new RegularPolygon(10, 4, 5.6, 7.8);
r1.drawPolygon();
r2.drawPolygon();
r3.drawPolygon();
}
}