题目 编写一个名为Octagon的类,它扩展Geometricobject类并实现Comparable,Cloneable接口。假设八边形八条边的边长都相等。它的面积可以用下面的公式计算: 面积=(2+4/sqrt(2))边长边长 画出Octagon、Geometricobject、Comparable,Cloneable的UML图。编写一个测试程序,创建一个边长值为5的Octagon对象,然后显示它的面积和周长。使用clone方法创建一个新对象,并使用compareTo方法比较这两个对象。代码
package testoctagon
;
abstract class Geometricobject{
String color
="white";
boolean filled
;
java
.util
.Date dateCreated
;
public Geometricobject(){
dateCreated
=new java.util.Date();
}
public Geometricobject(String color
,boolean filled
){
dateCreated
=new java.util.Date();
this.color
=color
;
this.filled
=filled
;
}
public String
getColor(){
return color
;
}
public void setColor(String color
){
this.color
=color
;
}
public boolean isFilled(){
return filled
;
}
public void setFilled(boolean filled
){
this.filled
=filled
;
}
public abstract double getArea();
public abstract double getPerimeter();
}
class Octagon extends Geometricobject implements Comparable,Cloneable
{
double side
=0;
public Octagon(double side
){
this.side
=side
;
}
public double setSide(){
return side
;
}
public double getArea(){
return side
*side
*(2+4/Math
.sqrt(2));
}
public double getPerimeter(){
return side
*8;
}
public Object
clone()throws CloneNotSupportedException
{
return super.clone();
}
public int compareTo(Object o
){
if(getArea()>((Octagon
)o
).getArea())
return 1;
else if (getArea()<((Octagon
)o
).getArea())
return -1;
else
return 0;
}
}
public class TestOctagon {
public static void main(String
[] args
)throws Exception
{
Octagon o
=new Octagon(5);
System
.out
.println(o
.getArea());
System
.out
.println(o
.getPerimeter());
Octagon a2
=(Octagon
)o
.clone();
System
.out
.println(o
.compareTo(a2
));
}
}
运行结果截图
UML图