# Java Help Plz. using cloneable and comparable



## autokustomizer (Apr 1, 2009)

I have wrote this, and gone over it...I am stuck... I have to write a class named Octagon that extends GeometricObject, and implements Comparable and Cloneable interfaces. Assume all eight sides are equal. Write a test program that creates a Octagon object with side value 5, and displays area and perimeter. Create a new object using the clone method and compare the two objects using the compareTo method...

GeometricObject code:

```
[FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]abstract[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]class[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] GeometricObject
{
[/FONT][FONT=Courier New][COLOR=#fa6400][FONT=Courier New][COLOR=#fa6400]//data fields
[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New][/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]private[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] String color = [/FONT][FONT=Courier New][COLOR=#00cb00][FONT=Courier New][COLOR=#00cb00]"white"[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New];
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]private[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]boolean[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] filled;
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]private[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] java.util.Date dateCreated;

[/FONT][FONT=Courier New][COLOR=#fa6400][FONT=Courier New][COLOR=#fa6400]//default constructor
[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New][/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]protected[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] GeometricObject()
{
dateCreated = [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]new[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] java.util.Date();
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] String getColor()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] color;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]void[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] setColor(String color)
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]this[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New].color = color;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]boolean[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] isFilled()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] filled;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]void[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] setFilled([/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]boolean[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] filled)
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]this[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New].filled = filled;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] java.util.Date getDateCreated()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] dateCreated;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] String toString()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#00cb00][FONT=Courier New][COLOR=#00cb00]"Created on: "[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] + dateCreated + [/FONT][FONT=Courier New][COLOR=#00cb00][FONT=Courier New][COLOR=#00cb00]"\nColor: "[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] + color + [/FONT][FONT=Courier New][COLOR=#00cb00][FONT=Courier New][COLOR=#00cb00]" and filled: "[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] + filled;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]abstract[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] getArea();

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]abstract[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] getPerimeter(); 
}
[/FONT]
```
Octagon code:


```
[FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]abstract[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]class[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Octagon [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]extends[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] GeometricObject [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]implements[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Comparable, Cloneable
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]private[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side = 1.0;

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Octagon()
{
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Octagon([/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side)
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]super[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New]();
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]this[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New].side = side;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]void[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] setSide([/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side)
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]this[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New].side = side;
} 

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] getSide([/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side)
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] getArea()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] (2 + (4 / (Math.sqrt(2))) * side * side);
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] getPerimeter()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side * 8;
} 

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] String toString()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#00cb00][FONT=Courier New][COLOR=#00cb00]"The length of each side is: "[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] + side;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]int[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] compareTo(Octagon octagon1)
{
octagon1.side = 5;

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]if[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] (getArea() >= ((Octagon)octagon1).getArea())
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] 1;

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]else[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]if[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] (getArea() < ((Octagon)octagon1).getArea())
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] -1;

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]else
[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New][/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] 0;
} 

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]interface[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Cloneable
{
}
}
[/FONT]
```
And my tester code, that I am lost with, wont accept 'new' operator with abstract, how do I do anything then?


```
[FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]import[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] java.util.*;

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]class[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] OctagonTester
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]static[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]void[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] main(String[] args) [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]throws[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] CloneNotSupportedException

{
Octagon octagon = (Octagon)octagon1.clone();

}


}
[/FONT]
```
Compiler :

ÏÏÏÏ
ÏÏ«Ï ----jGRASP exec: javac -g C:\Users\Christopher\Documents\GeometricObject.java
ÏÏ§Ï
ÏÏ§Ï
ÏÏ©Ï ----jGRASP: operation complete.
ÏÏÏÏ
ÏÏ«Ï ----jGRASP exec: javac -g C:\Users\Christopher\Documents\Octagon.java
ÏÏ§Ï
ÏÏ§Ï
ÏÏ©Ï ----jGRASP: operation complete.
ÏÏÏÏ
ÏÏ«Ï ----jGRASP exec: javac -g C:\Users\Christopher\Documents\OctagonTester.java
ÏÏ§Ï
Ï¼§ÏOctagonTester.java:13: cannot find symbol
ÏÏ§Ïsymbol : variable octagon1
ÏÏ§Ïlocation: class OctagonTester
ÏÏ§Ï Octagon octagon = (Octagon)octagon1.clone();
ÏÏ§Ï ^
ÏÏ§Ï1 error
ÏÏ§Ï
ÏÏ§Ï ----jGRASP wedge2: exit code for process is 1.
ÏÏ©Ï ----jGRASP: operation complete.
 
IF anyone can help, I would appreciate it, TY in advance...


----------



## JimmySeal (Sep 25, 2007)

Your octagon class shouldn't be abstract. You can't create an instance of an abstract class.

Also this is a problem:


```
Octagon octagon = (Octagon)octagon1.clone();
```
You're trying to use octagon1 before you've created it.


----------



## autokustomizer (Apr 1, 2009)

How do I create it? Or where? I messed around with it today, and this is what I have come up with...


```
[FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]abstract[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]class[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Octagon [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]extends[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] GeometricObject [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]implements[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Comparable, Cloneable
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]private[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side = 1.0;
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]protected[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]native[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Object clone() [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]throws[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] CloneNotSupportedException;

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Octagon()
{
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Octagon([/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side)
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]super[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New]();
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]this[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New].side = side;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]void[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] setSide([/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side)
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]this[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New].side = side;
} 

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] getSide([/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side)
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] getArea()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] (2 + (4 / (Math.sqrt(2))) * side * side);
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]double[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] getPerimeter()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] side * 8;
} 

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] String toString()
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#00cb00][FONT=Courier New][COLOR=#00cb00]"The length of each side is: "[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] + side;
}

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]int[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] compareTo(Octagon octagon1)
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]if[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] (getArea() >= ((Octagon)octagon1).getArea())
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] 1;

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]else[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]if[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] (getArea() < ((Octagon)octagon1).getArea())
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] -1;

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]else
[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New][/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]return[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] 0;
} 

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]interface[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] Cloneable
{
}


}
[/FONT]
```
and this is my tester program...(that I have no idea what to do with)


```
[FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]import[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] java.util.*;

[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]class[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] OctagonTester
{
[/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]public[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]static[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]void[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] main(String[] args) [/FONT][FONT=Courier New][COLOR=#941edf][FONT=Courier New][COLOR=#941edf]throws[/COLOR][/FONT][/COLOR][/FONT][FONT=Courier New] CloneNotSupportedException

{
Octagon octagon1 = (Octagon)octagon1.clone();

}


}
[/FONT]
```
My GeometricObject program didn't change...This is my compiler output...

Ï«Ï ----jGRASP exec: javac -g C:\Users\Christopher\Documents\GeometricObject.java
ÏÏ§Ï
ÏÏ§Ï
ÏÏ©Ï ----jGRASP: operation complete.
ÏÏÏÏ
ÏÏ«Ï ----jGRASP exec: javac -g C:\Users\Christopher\Documents\Octagon.java
ÏÏ§Ï
ÏÏ§Ï
ÏÏ©Ï ----jGRASP: operation complete.
ÏÏÏÏ
ÏÏ«Ï ----jGRASP exec: javac -g C:\Users\Christopher\Documents\OctagonTester.java
ÏÏ§Ï
Ï¼§ÏOctagonTester.java:13: variable octagon1 might not have been initialized
ÏÏ§Ï Octagon octagon1 = (Octagon)octagon1.clone();
ÏÏ§Ï ^
ÏÏ§Ï1 error
ÏÏ§Ï
ÏÏ§Ï ----jGRASP wedge2: exit code for process is 1.
ÏÏ©Ï ----jGRASP: operation complete.
 
Any ideas on how I can create this test program??? TYIA.


----------



## JimmySeal (Sep 25, 2007)

You don't seem to have paid any attention when I said the Octagon class shouldn't be abstract. You need to define the clone() method so that you can make it non-abstract.

Once that's done, you can create Octagons with


```
Octagon octagon1 = new Octagon();
```
That's pretty much one of the simplest things you can do in Java and you should be comfortable with that before you try to work with abstract classes and overloading interfaces.


----------

