Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

JAVA // GeometricObject.java: The abstract GeometricObject class public abstract

ID: 3722381 • Letter: J

Question

JAVA

// GeometricObject.java: The abstract GeometricObject class

public abstract class GeometricObject {

private String color = "white";

private boolean filled;

/**Default construct*/

protected GeometricObject() {

}

/**Construct a geometric object*/

protected GeometricObject(String color, boolean filled) {

this.color = color;

this.filled = filled;

}

/**Getter method for color*/

public String getColor() {

return color;

}

/**Setter method for color*/

public void setColor(String color) {

this.color = color;

}

/**Getter method for filled. Since filled is boolean,

so, the get method name is isFilled*/

public boolean isFilled() {

return filled;

}

/**Setter method for filled*/

public void setFilled(boolean filled) {

this.filled = filled;

}

/**Abstract method findArea*/

public abstract double getArea();

/**Abstract method getPerimeter*/

public abstract double getPerimeter();

}

13.11 The Octagon class) Write a class named Octagon that extends Geometricobject and implements the Comparable and Cloneable inter faces. Assume all eight sides of the octagon are of equal length. The area can be computed using the following formula: area = (2 + 4/V2) * side * side Octagon class has a private double data field named side with its getter and setter methods. The class has a no-arg constructor that creates an Octagon with side 0, and a constructor to create an Octagon with a specified side. Draw the UML diagram that involves Octagon, Geometricobject, Comparable, and Cloneable. Write a test program that creates an Octagon object with side value 5 and displays its area and perimeter. Create a new object using the clone method, and compare the two objects using the compareTo method.

Explanation / Answer

here is your class : ------------>>>>>>>

public class Octagon extends GeometricObject implements Cloneable,Comparable{
private double side;

public Octagon(){
  super("white",false);
  side = 0.0;
}
public Octagon(double side){
  super("white",false);
  this.side = side;
}

public void setSide(double side){
  this.side = side;
}
public double getSide(){
  return side;
}
public double getArea(){
  return (2 + 4/Math.sqrt(2))*side*side;
}
public double getPerimeter(){
  return 8*side;
}
public int compareTo(Object obj){
  if(obj instanceof Octagon)
  if(((Octagon)obj).getSide() < this.getSide()){
   return -1;
  }else if(((Octagon)obj).getSide() > this.getSide()){
   return 1;
  }else{
   return 0;
  }

  return -1;
}

public Object clone() {
  try {
   // call clone in Object.
   return super.clone();
  } catch (CloneNotSupportedException e) {
   System.out.println("Cloning not allowed.");
   return this;
  }
}
}

DriverOctagon.java: ----------->>>>>>

public class DriverOctagon{
public static void main(String[] args) {
  Octagon s = new Octagon(5);
  System.out.println("Area = "+s.getArea());
  System.out.println("Perimeter = "+s.getPerimeter());
  Octagon s1 = (Octagon)s.clone();
  if(s.compareTo(s1) == 0){
   System.out.println("Both Are Equal");
  }else if(s.compareTo(s1) == 1){
   System.out.println("s1 is greater than s");
  }else if(s.compareTo(s1) == 0){
   System.out.println("s1 is smaller than s");
  }
}
}