#ifndef __CAMION_HXX__
#define __CAMION_HXX__

#include "Vehicule.hxx"

class Camion : public Vehicule
{
public:
  enum {VITESSE_MAXIMALE_LEGALE=130};
protected:
  int chargeMax_;
  int charge_;
public:
  Camion (int chargeMax) : 
    Vehicule(VITESSE_MAXIMALE_LEGALE), 
    chargeMax_(chargeMax),
    charge_(0)
    {
    }

  void charger(int increment)
    {
      charge_+=increment;
      
      if (charge_ < 0)
        {
          charge_=0;
          throw std::invalid_argument("Camion::charger Tentative de charge negative");
        }
      else
        {
          if (charge_ > chargeMax_)
            {
              charge_=chargeMax_;
              throw std::invalid_argument("Camion::charger Tentative de depassement de la charge maximale");
            }
        }
    }

  void demarrer()
    {
      Vehicule::demarrer();
      cout << "Demarrage d'un camion" << endl;
    }

  void arreter()
    {
      Vehicule::arreter();
      cout << "Arret d'un camion" << endl;
    }

};

#endif
