/**
   The Queue interface specifies a collection of elements that are added
   and removed according to the first-in-first-out principle.
 
   @author	Franck van Breugel
   @version	1.2    May 5, 2000
*/
public interface Queue 
{
    /** 
	Returns the size of this queue. 
	
	@return The size of this queue.
    */
    public int size();

    /** 
	Tests if this queue is empty. 

	@return true if this queue is empty, false otherwise.
    */
    public boolean isEmpty();

    /** 
	Returns the element at the front of this queue.

	@return The element at the front of this queue.
	@exception QueueEmptyException if this queue is empty. 
    */
    public Object front() throws QueueEmptyException;

    /** 
	Adds the specified element at the rear of this queue. 

	@param element the element to be added to this queue.
    */
    public void enqueue(Object element);

    /** 
	Removes the element at the front of this queue and returns that element.

	@return The element at the front of this queue.
	@exception QueueEmptyException if this queue is empty. 
    */
    public Object dequeue() throws QueueEmptyException;
}
