Introduction - If you have any usage issues, please Google them yourself
Produce an abstract class to represent a general Shape. It must have the following properties: i) Instance variables to represent the (x, y) coordinate of the shape. Limit their visibility to the Shape class only. ii) It requires a constructor which initializes the (x, y) coordinate of the shape. Limit the visibility of the constructor to only the Shape class and classes that extend it. iii) Abstract methods to determine the area and circumference (perimeter) of the Shape are required. Make sure that these methods are visible to everyone. iv) A concrete move method is needed so that the (x, y) coordinate of the Shape can be altered. Users should be able to indicate a relative move (i.e., 3 places left, 4 up) rather than specify an absolute location. This method should be visible to everyone. v) A print method that displays the (x, y) coordinates of the Shape and provides its area and circumference. This method should be visible to everyone.