EiffelBase, Abstract Container Structures: The Taxonomy

A container data structure (or container in the sequel) is an object which serves to store and access collections of objects, called the items of the container. All classes describing containers are descendants of the deferred class CONTAINER .

A container can be studied from three viewpoints: access, storage and traversal.

  • The access criterion affects how the clients of a container can access its items. For example, in a stack or queue, only one item is accessible at any given time, and clients do not choose that item; in contrast, clients of an array or hash table must provide an index, or more generally a key, to access an item.
  • The storage criterion affects how the items are put together. For example some containers are finite, others potentially infinite; among finite structures, some are bounded, others unbounded.
  • The traversal criterion affects how, if in any way, the items of a container can be traversed. A traversal is a mechanism which makes it possible to examine each item of a container once, in a clearly specified order. For example some containers can be traversed sequentially, in one direction or two; tree structures lend themselves to preorder, postorder and breadth-first traversals.

For each of these criteria the Base library offers a single-inheritance hierarchy of deferred classes. The top of the access hierarchy is class COLLECTION ; the top of the storage hierarchy is class BOX ; the top of the traversal hierarchy is class TRAVERSABLE . These three classes are heirs of the most general class CONTAINER .