0
点赞
收藏
分享

微信扫一扫

java语言程序设计与数据结构13_11

老北京的热干面 2022-04-19 阅读 80
javaspring

题目:

(Octagon类)编写一个名为Octagon的类,它继承自Geometricobject的类并实现Comparable和Cloneable接口。假设八边形八条边的边长都相等。

Octagon类县有个私有的命名为side的double 数据域及其设置方法和获取方法。它还具有一个无参的构造方法来构建一个边为0的Octagon,以及另外一个使用指定边来构建Octagon的构造方法。

编写一个测试程序,创建个边 长值为5的Octagon 对象,然后显示它的面积和周长。 使用clone方法创建一个新对象,并使用compareTo方法比较这两个对象。

GeometricObject类:

package problem;

import java.util.Date;

public abstract class GeometricObject {
	private String color = "white";  //对象的颜色
	private boolean filled;//对象是否填充颜色
	private Date dateCreated;//对象创建的日期
	//无参构造
	public GeometricObject() {
		this("white", false);
		this.dateCreated = new Date();
	}
	//创建一个带特定颜色和填充值的有参构造
	public GeometricObject(String color, boolean filled) {
		super();
		this.color = color;
		this.filled = filled;
		this.dateCreated = new Date();
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	//返回filled的属性
	public boolean isFilled() {
		return filled;
	}
	public void setFilled(boolean filled) {
		this.filled = filled;
	}
	public Date getDateCreated() {
		return dateCreated;
	}
	public String toString() {
		return "created on"+dateCreated+" color: "+color+" filled: "+filled;
	}
	public abstract double getArea();
	public abstract double getPerimeter();
}

Octagon类:

package problem;

public  class Octagon extends GeometricObject implements Comparable<Octagon>,Cloneable {
	private double side;
	//构造方法
	public Octagon() {
		this(0,"white",false);
	}
	public Octagon(double side) {
		this(side,"white",false);
	}
	public Octagon(double side,String color, boolean filled) {
		super(color, filled);
		this.side = side;
	}
	//设置方法和获取方法
	public double getSide() {
		return side;
	}
	public void setSide(double side) {
		this.side = side;
	}
	@Override
	public int compareTo(Octagon o) {
		if (getArea() > o.getArea()) {
			return 1;
		}
		else if(getArea() < o.getArea()) {
			return -1;
		}
		else {
			return 0;
		}
	}
	@Override
	public double getArea() {
		// TODO Auto-generated method stub
		return (2 + 4 /Math.sqrt(2)) * Math.pow(side, 2);
	}
	@Override
	public double getPerimeter() {
		// TODO Auto-generated method stub
		return 8 * side;
	}
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return super.toString() + " side: " + side +" Perimeter: "+ getPerimeter() + " Area: "+ getArea();
	}

}

OctagonTest类:

package problem;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class OctagonTest {

	@Test
	void test() throws CloneNotSupportedException  {
		Octagon octagon1 = new Octagon(5);
		System.out.println(octagon1.toString());
		Octagon octagon2 = (Octagon) octagon1.clone();
		System.out.println(octagon2.toString());
		if (octagon1.compareTo(octagon2) == 0) {
			System.out.println("True! They are equal!");
		} else {
			System.out.println("Flase! They are not equal!");
		}
	}

}
举报

相关推荐

0 条评论