// ==========================================================================
// $Id: house_pro.cpp,v 1.3 2008/10/15 21:23:37 jlang Exp $
// CSI2372 example Code for lecture 6
// ==========================================================================
// (C)opyright:
//
//   Jochen Lang
//   SITE, University of Ottawa
//   800 King Edward Ave.
//   Ottawa, On., K1N 6N5
//   Canada. 
//   http://www.site.uottawa.ca
// 
// Creator: jlang (Jochen Lang)
// Email:   jlang@site.uottawa.ca
// ==========================================================================
// $Log: house_pro.cpp,v $
// Revision 1.3  2008/10/15 21:23:37  jlang
// Reverting to 1.1
//
// Revision 1.1  2006/10/05 01:56:46  jlang
// Added material for lecture 6
//
//
// ==========================================================================
#include <iostream>

using namespace std;

class Building {
  double d_sqft; int d_noRooms;
public:
  Building( double _sqft = 1000.0, int _noRooms = 3 ) :
    d_sqft( _sqft ), d_noRooms( _noRooms ){}
  int getNoRooms() { return d_noRooms; }
protected:
  void setSqft( double _sqft ) { d_sqft = _sqft; }
};

class House : protected Building {
  int d_noOccu;
public:
  House( int _noOccu = 2 ) :d_noOccu( _noOccu ) {}
  int getNoOccupants() { return d_noOccu; };	
  int getNoRooms();
  void setSqft( double _sqft );  
};

int House::getNoRooms(){ 
  // Kitchen and Bathroom do not count
  return Building::getNoRooms() - 2;
}

void House::setSqft( double _sqft ) { 
  // max 1500 per person
  if ( _sqft/d_noOccu > 1500.0 ) { _sqft = 1500.0 * d_noOccu; }
  Building::setSqft( _sqft ); 
}

int main() 
{
  House h; 
  cout << h.getNoOccupants() << endl << h.getNoRooms() << endl;
  h.setSqft( 1200.0 );
}
