<< Chapter < Page | Chapter >> Page > |
Stacks and queues are examples of containers with special insertion and removal behaviors and a special access behavior.
Insertion and removal in a stack must be carried out in such a way that the last data inserted is the first one to be removed. One can only retrieve and remove a data element from a stack by way of special access point called the "top". Traditionally, the insertion and removal methods for a stack are called push and pop, respectively. push inserts a data element at the top of the stack. pop removes and returns the data element at the top of the stack. A stack is used to model systems that exhibit LIFO (Last In First Out) insert/removal behavior.
Data insertion and removal in a queue must be carried out in such a way that the first one to be inserted is the first one to be removed. One can only retrieve and remove a data element from a queue by way of special access point called the "front". Traditionally, the insertion and removal methods for a queue are called enqueue and dequeue , respectively. enqueue inserts a data element at the "end" of the queue. dequeue removes and returns the data element at the front of the queue. A queue is used to model systems that exhibit FIFO (First In First Out) insertion/removal behavior. For example, one can model a movie ticket line by a queue.
We abstract the behaviors of special containers such as stacks and queues into an interface called
IRAContainer
specified as follows.
package rac;
import listFW.*;/**
* Defines the interface for a restricted access container.*/
public interface IRAContainer {/**
* Empty the container.* NOTE: This implies a state change.
* This behavior can be achieved by repeatedly removing elements from this IRAContainer.* It is specified here as a convenience to the client.
*/public void clear();
/*** Return TRUE if the container is empty; otherwise, return
* FALSE.*/
public boolean isEmpty();/**
* Return TRUE if the container is full; otherwise, return* FALSE.
*/public boolean isFull();
/*** Return an immutable list of all elements in the container.
* @param fact for manufacturing an IList.*/
public IList elements(IListFactory fact);/**
* Remove the next item from the container and return it.* NOTE: This implies a state change.
* @throw an Exception if this IRAContainer is empty.*/
public Object get();/**
* Add an item to the container.* NOTE: This implies a state change.
* @param input the Object to be added to this IRAContainer.* @throw an Exception if this IRAContainer is full.
*/public void put(Object input);
/*** Return the next element in this IRAContainer withour removing it.
* @throw an Exception if this IRAContainer is empty.*/
public Object peek();}
Notification Switch
Would you like to follow the 'Principles of object-oriented programming' conversation and receive update notifications?