/* 20 Fevrier 2K - v1.01 M.Lokbani modifications .... 15 Fevrier 2K - v1.00 Mohamed Lokbani & xv lokbani@iro.umontreal.ca UdM, IFT1166 -TP2- Session Hiver 2K */ // pour eviter de charger plus d'une fois la classe, sinon erreur a la compilation // si c'est le premier passage, alors, on definit Monnaie_H pour ne plus charger la classe Monnaie // lors d'un include de l'entete de ce fichier. #ifndef MONNAIE_H #define MONNAIE_H #include /* * class Monnaie * * Cette classe contient les outils necessaires pour la creation et la gestion d'une somme d'argent * qu'une personne peut avoir. * * Cette somme d'argent est representee par des pieces. Les pieces en circulation au Canada * sont au nombre de 7, voir : http://www.rcmint.ca/products/fr/Main.cfm?Area=Products&Section_Id=2 * * UnCent, CinqCents, DixCents, VingtCinqCents, CinquanteCentes, UnDollar, DeuxDollars * * * Methodes: * * Monnaie -- une serie de constructeurs, qui cree l'objet a partir d'une serie de pieces, ou * un montant donne en cents. * * valeurCents -- Retourne le montant d'argent en cents * * operator+ -- surcharge de l'operateur +, pour permettre l'addition de deux objets de type Monnaie * sinon, un objet avec une somme en cents. * * operator- -- surcharge de l'operateur -, pour permettre l'operation de soustraction entre * deux objets de type Monnaie. * * operator== -- surcharge de la comparaison, pour tester l'egalite entre deux objets de type * Monnaie. * * operator< -- surcharge de la comparaison, pour tester si un objet du type Monnaie est inferieur * a un autre objet du type Monnaie. * * operator> -- surcharge de la comparaison, pour tester si un objet du type Monnaie est superieur * a un autre objet du type Monnaie. * * * operator<< -- surcharge de l'operateur de sortie pour l'affichage d'un objet du type Monnaie. * */ class Monnaie { public: /* * fonction Monnaie * * initialisation a zero de ses membres donnees */ Monnaie(); /* * fonction Monnaie * * initialisation en tenant compte des arguments. * Les arguments sont comme suit: * UnCent, CinqCents, DixCents, VingtCinqCents, CinquanteCentes, UnDollar, DeuxDollars */ Monnaie(int, int, int, int, int, int, int); /* * fonction Monnaie * * A partir d'une somme en cents, cette fonction cree un objet * l'initialise avec cette somme comme suit: * prenant l'exemple d'une somme est egale a 1 Dollar et 86 cents, elle sera representee par * les pieces suivantes: * 1x1 Dollar, 1x50 cents, 1x25 Cents, 1x10 cents, 1x1 cent. * On commence la representation par la monnaie la plus forte (2$, 1$, 50c, 25c, 10c, 5c, 1c). */ Monnaie(int); /* * fonction valeurCents * * Cette fonction retourne la valeur en cents de l'objet courant. * */ int valeurCents() const; /* * fonction operator+ * * Cette fonction additionne deux objets du type Monnaie. */ Monnaie operator+(const Monnaie&); /* * fonction operator+ * * Cette fonction additionne un objet du type Monnaie et un montant en cents. */ Monnaie operator+(int); /* * fonction operator- * * Cette fonction realise la soustraction de deux objets du type Monnaie. * */ Monnaie operator-(const Monnaie&); /* * fonction operator== * * Cette fonction teste si deux objets du type Monnaie sont identiques. * Deux objets sont egaux, que si la somme d'argent est la meme dans les deux objets. */ bool operator==(const Monnaie&) const; /* * fonction operator< * * Cette fonction retourne vraie si la somme contenue dans un objet du type Monnaie est * inferieure a celle d'un autre objet. * */ bool operator<(const Monnaie&) const; /* * fonction operator> * * Cette fonction retourne vraie si la somme contenue dans un objet du type Monnaie est * superieure a celle d'un autre objet. * */ bool operator>(const Monnaie&) const; /* * fonction operator<< * * Cette fonction affiche le contenu du tableau pieces_ * sous la forme: * * xx UnCent xx CinqCents xx DixCents xx VingtCinqCents xx CinquanteCents xx UnDollar xx DeuxDollars * * on affiche que les valeurs non nulles. * */ friend ostream& operator<<(ostream&, const Monnaie&); private: static const int nbre_pieces = 7; // nombre de pieces int pieces_[nbre_pieces]; // tableau pour contenir le montant en pieces. }; #endif