#include "iostream.h"

// Program that illustrates arrays of objects

class box 
{
private:
   int length;
   int width;
   static int extra_data;
public:
   box(void);             //Constructor
   void set(int new_length, int new_width);
   int get_area(void);
   int get_extra(void) {return extra_data++;}
};


box :: box(void)        //Constructor implementation
{
   length = 8;
   width = 8;
   extra_data = 1;
}


// This method will set a box size to the two input parameters
void box :: set(int new_length, int new_width)
{
   length = new_length;
   width = new_width;
}


// This method will calculate and return the area of a box instance
int box :: get_area(void)
{
   return (length * width);
}


main()
{
box small, medium, large, group[4];        //Seven boxes to work with

   small.set(5, 7);
   large.set(15, 20);
   
   for (int index = 1 ; index < 4 ; index++)  //group[0] uses default
      group[index].set(index + 10, 10);

   cout << "The small box area is " << small.get_area() << "\n";
   cout << "The medium box area is " << medium.get_area() << "\n";
   cout << "The large box area is " << large.get_area() << "\n";

   for (index = 0 ; index < 4 ; index++)
      cout << "The array box area is " << 
                                     group[index].get_area() << "\n";

   cout << "The extra data value is " << small.get_extra() << "\n";
   cout << "The extra data value is " << medium.get_extra() << "\n";
   cout << "The extra data value is " << large.get_extra() << "\n";
   cout << "The extra data value is " << group[0].get_extra() << "\n";
   cout << "The extra data value is " << group[3].get_extra() << "\n";
}




// Result of execution
//
// The small box area is 35
// The medium box area is 64
// The large box area is 300
// The array box area is 64
// The array box area is 110
// The array box area is 120
// The array box area is 130
// The extra data value is 1
// The extra data value is 2
// The extra data value is 3
// The extra data value is 4
// The extra data value is 5