Example of a Manager Class ========================== Let's consider the card game in more detail. Suppose you have a Card class and a CardDeck class that held an array of Cards. CardDeck might have a shuffle() method. There's also a Player class that would makeBid(), playCard(), evalHand() in a card game such as bridge. Here's an outline of the class BridgeGame: class BridgeGame { methods: appropriate gets and sets playGame dealCards determineIfWin data: Deck theDeck; Player thePlayers[SIZE]; int numOfPlayers; } The most important methos is playGame(): void BridgeGame::playGame() { theDeck.shuffle(); deal(); loop to win bid { for (int i = 0; i < SIZE; i++) { thePlayers[i].makeBid(...); } exit when bid is won; } loop to play hand { for (int i = 0; i < SIZE; i++) { thePlayers[i].playCard(...); } for (int i = 0; i < SIZE; i++) { determineIfWin(...); } } handle win } Even if you don't know how to play bridge, you get the idea. The main is very short, common in OO programming: int main() { BridgeGame g; g.playGame(); return 0; } The manager class, BridgeGame, owns the data and manages the running of the game. In a business, the data is owned (container objects holding the business data) and the running of the business would be managed.