/**
 * A subject (in the sense of the oberver pattern) that generates
 * Point objects
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public interface PointSubject
{
    /**
     * Add a PointObserver to the list of existing observers
     *
     * @param observer  The PointObserver to add
     */
    public abstract void addPointObserver(PointObserver observer);
    

    /**
     * Notify all observers of a Point "event"
     *
     * @param p    The Point to notify the observers about
     */
    public abstract void notifyPointObservers(Point p);
    

    /**
     * Remove a PointObserver from the list of existing observers
     *
     * @param observer  The PointObserver to remove
     */
    public abstract void removePointObserver(PointObserver observer);
    
}
