// restaurant.h   Restaurant class for Lab10
// James Atlas and Phill Conrad, for CISC181, Fall 2004

// The restaurant object includes an array of tables objects
// as one of its data members.
// 
// This is called "composition"... the restaurant class is
// "composed" of table objects (among other things)
// 
// There is a destructor, copy constructor, and overloaded
// assignment operator in this class.  These will be discussed
// further in lecture.   Don't worry, for this lab, you won't have
// to touch any of that code, though you will have to touch some
// of the other member functions.


// restaurant.h
#ifndef RESTAURANT_H
#define RESTAURANT_H

#include "table.h"

class Restaurant
{

public:
  // public member functions (also called "methods")

  // Constructor with default values
  Restaurant(int numberOfTables = 6, int maxGuestsPerTable = 4);

  // Copy Constructor (see comment above)
  Restaurant(const Restaurant &restaurantToCopy);

  // Overloaded Assignment Operator (see comment above)
  Restaurant operator = (const Restaurant &rightHandSide);

  ~Restaurant();   // destructor

  int getNumberOfTables();
  int getMaxGuestsPerTable();
  void reserveTable();
  void clearTable();
  void printTableStatus();
          
private:
  // private data members (also called "attributes")

  int numberOfTables;
  int maxGuestsPerTable;
  Table *table;  // An array of the Restaurant's tables, 
                 // table array is allocated from the heap
  
};

#endif

