< previous page page_1094 next page >

Page 1094
//******************************************************************
// SPECIFICATION FILE (carddeck.h)
// This file gives the specification of a CardDeck class, derived
// from the CardPile class using inheritance
//******************************************************************
#ifndef CARDDECK_S
#define CARDDECK_H

#include cardpile.h

const int DECK_SIZE = 52;

class CardDeck : public CardPile
{
public:
    void Shuffle( /* in */ int numberOfShuffles);
        // Precondition:
        //     Length of deck == DECK_SIZE
        //  && numberOfShuffles is assigned
        // Postcondition:
        //     The order of components in the deck has been
        //     rearranged numberOfShuffles times, randomly

    void Recreate( /* inout */ CardPile& pile1,
                   /* inout */ CardPile& pile2 );
        // Gathers cards from two piles and puts them back into deck
        // Precondition:
        //     Length of deck == 0
        //  && (Length of pile1 + length of pile2) == DECK_SIZE
        // Postcondition:
        //     Deck is the list consisting of all cards from
        //     pile1@entry followed by all cards from pile2@entry
        //  && Length of deck == DECK_SIZE
        //  && Length of pile1 == 0  && Length of pile2 == 0

    CardDeck();
        // Postcondition:
        //     List of DECK_SIZE components is created
        //     representing a standard deck of playing cards
        //  && Cards are in order by suit and by rank
private:
    void Merge( CardPile&, CardPile& );
};

#endif
Notice in the CardDeck class declaration that the private part does not include any additional data members. The only private data are the data in-

 
< previous page page_1094 next page >