/** * Interface for a queue: A collection of objects that are inserted * and removed according to the first-in first-out principle. */ template <typename Object> class Queue { public: /** * Returns the number of objects in the queue. */ int size() const; /** * Returns true if the queue is empty, false otherwise. */ bool isEmpty() const; /** * Returns the front object of the queue. * Throws QueueEmptyException if the queue is empty. */ Object& front() throw(QueueEmptyException); /** * Inserts an object at the rear of the queue. */ void enqueue (const Object& obj); /** * Remove and returns the object at the front of the queue. * Throws QueueEmptyException if the queue is empty. */ Object dequeue() throw(QueueEmptyException); };