Listing 1

Class Graphical Object
   Graphical Object is an abstract class. There will never
     be any instances of this class. Classes Circle and
     Square are subclasses of this class.
   Graphical Object data:
      y position
      x position
   Graphical Object methods:
      INITIALIZE
         Starting y position
         Starting x position
      DRAW
         Only implemented by subclasses
      MOVE
         Arguments:
            Increment in the y direction
            Increment in the x direction
         Send the draw black message to the object (erase
           the object).
         Modify the x and y position of the object per
           the arguments passed to the MOVE method.
         Send the draw white message to the object.

Class Circle
   Circle is a subclass of class Graphical Object.
   Circle data (in addition to Graphical Object data):
      radius of the circle
   Circle methods:
      INITIALIZE
         Arguments:
            Starting y position
            Starting x position
            Radius
         Send the INITIALIZE message to class Graphical
           Object
         Store the size in the Circle data.
         Send the DRAW message to the Circle.
      DRAW
         Argument:
            Color of the circle to be drawn.
         Draw the circle on the screen.
      MOVE
         Inherited from the class Graphical Object.

Class Square
   Square is a subclass of class Graphical Object.
   Square data:
      the length of a side of the square
   Square methods:
      INITIALIZE
         Arguments:
            Starting y position
            Starting x position
            Radius
         Send the INITIALIZE message to class Graphical
           Object
         Store the size in the Square data.
         Send the DRAW message to the Square.
      DRAW
         Argument:
            Color of the square to be drawn.
         Draw the square on the screen.
      MOVE
         Inherited from the class Graphical Object.

Class Double_circle
   Class Double_circle is a subclass of class Circle.
   Double_circle data:
      Same a for a Circle.
   Double_circle methods:
      INITIALIZE
         Inherited from class Circle.
      DRAW
         Argument:
            Color of the Double_circle to be drawn.
         Draw a circle on the screen.
         Draw a slightly smaller concentric circle on the
           screen.
      MOVE
         Inherited from class Circle.