/**
 * This interface describes a door. All that a door knows is how to open and
 * how to close itself. It also knows how to tell if it is open or closed.
 * @author fpereira
 *
 */
public interface Door {
  /**
   * Opens the door.
   */
  void open();
  /**
   * Closes the door.
   */
  void close();
  /**
   * Informs if the door is open or closed.
   * @return true if the door is open, and false otherwise.
   */
  boolean isOpen();
  /**
   * This method registers an event listener into the door.
   * @param listener the handler that will handle the triggering of the
   * clock.
   */
  void registerListener(TimeListener listener);
}
