Code Listings Chapter 1

 Listing 1-1
Listing 1-2

Listing 1-1 A file containing a C++ interface for bags

/** @file BagInterface.h */
# ifndef _BAG_INTERFACE
    # define _BAG_INTERFACE
    # include < vector >
    template < class ItemType >
    class BagInterface
{
    public:
    /** Gets the current number of entries in this bag.
    @return The integer number of entries currently in the bag. */
    virtual int getCurrentSize () const = 0;

    /** Sees whether this bag is empty.
    @return True if the bag is empty, or false if not. */
    virtual bool isEmpty () const = 0;

    /** Adds a new entry to this bag.
    @post If successful, newEntry is stored in the bag and
    the count of items in the bag has increased by 1.
    @param newEntry The object to be added as a new entry.
    @return True if addition was successful, or false if not. */
    virtual bool add (const ItemType & newEntry) = 0;

    /** Removes one occurrence of a given entry from this bag,
    if possible.
    @post If successful, anEntry has been removed from the bag
    and the count of items in the bag has decreased by 1.
    @param anEntry The entry to be removed.
    @return True if removal was successful, or false if not. */
    virtual bool remove (const ItemType & anEntry) = 0;

    /** Removes all entries from this bag.
    @post Bag contains no items, and the count of items is 0. */
    virtual void clear () = 0;


    /** Counts the number of times a given entry appears in bag.
    @param anEntry The entry to be counted.
    @return The number of times anEntry appears in the bag. */
    virtual int getFrequencyOf (const ItemType & anEntry) const = 0;

    /** Tests whether this bag contains a given entry.
    @param anEntry The entry to locate.
    @return True if bag contains anEntry, or false otherwise. */
    virtual bool contains (const ItemType & anEntry) const = 0;

    /** Empties and then fi lls a given vector with all entries that
    are in this bag.
    @return A vector containing all the entries in the bag. */
    virtual vector < ItemType > toVector () const = 0;
}
;  // end BagInterface

 

 

 

Listing 1-2  Program for Card Guessing

# include < iostream >  // For cout and cin
    # include < string >  // For string objects
    # include "Bag.h" // For ADT bag
    using namespace std;
int main ()
{
    string clubs [] = {"Joker", "Ace", "Two", "Three",
        "Four", "Five", "Six", "Seven",
        "Eight", "Nine", "Ten", "Jack",
        "Queen", "King"};
    // Create our bag to hold cards.
    Bag < string > grabBag;
    // Place six cards in the bag.
    grabBag.add (clubs [1]);
    grabBag.add (clubs [2]);
    grabBag.add (clubs [4]);
    grabBag.add (clubs [8]);
    grabBag.add (clubs [10]);
    grabBag.add (clubs [12]);
    // Get friends guess and check it.
    int guess = 0;
    while (!grabBag.isEmpty ())
    {
        cout << "What is your guess?"
            << "(1 for Ace to 13 for King):";
        cin >> guess;
        // Is card in the bag?
        if (grabBag.contains (clubs [guess]))
        {
            // Good guess  remove card from the bag.
            cout << "You get the card!\n";
            grabBag.remove (clubs [guess]);
        }
        else
        {
            cout << "Sorry, card was not in the bag.\n";
        } // end if
    } // end while


    cout << "No more cards in the bag. Game over!\n";
    return 0;
}
;  // end main