1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include <iostream>
#include <vector>
#include <string>
using namespace std;
// ======================================================================
class Article {
public:
Article(string const& nom, double prix, bool action = false)
: nom_(nom), prix_(prix), action_(action)
{}
double prix() const { return prix_; }
string nom() const { return nom_; }
bool est_en_action() const { return action_; }
private:
const string nom_ ;
double prix_ ;
bool action_ ;
};
// ======================================================================
class Achat {
public:
Achat(Article const& article, unsigned int quantite = 1) //L'objet "choufleur" a été initialisé préalablement (par "Article choufleur ("Chou-fleur extra" , 3.50 ;" dans le main)
: article_(article), quantite_(quantite) //et est donc envoyé en argument avec "Article const& article"
{}
double price() const {
double price_( quantite_ * article_.prix() );
if (article_.est_en_action()) {
price_ *= 0.5;
}
return price_;
}
void afficher() const {
cout << article_.nom() << " : " //On peut utiliser la méthode "nom" car "article_" est de type "Article" donc on peut accéder aux méthodes de la classe "Article"
<< article_.prix() << " x " << quantite_
<< " = " << price() << " F";
if (article_.est_en_action()) {
cout << " (en action)";
}
cout << endl;
}
private:
const Article article_;
const unsigned int quantite_;
};
// ======================================================================
int main()
{
// Les articles vendus dans le supermarché
Article choufleur ("Chou-fleur extra" , 3.50 ); //On appelle le constructeur de "choufleur" donc le constructeur "Article"
Article roman ("Les malheurs de Sophie", 16.50, true );
Article camembert ("Cremeux 100%MG" , 5.80 );
Article cdrom ("C++ en trois jours" , 48.50 );
Article boisson ("Petit-lait" , 2.50, true);
Article petitspois("Pois surgeles" , 4.35 );
Article poisson ("Sardines" , 6.50 );
Article biscuits ("Cookies de grand-mere" , 3.20 );
Article poires ("Poires Williams" , 4.80 );
Article cafe ("100% Arabica" , 6.90, true);
Article pain ("Pain d'epautre" , 6.90 );
cout<< choufleur.nom() << endl;
cout<< choufleur.prix() << endl;
cout<< choufleur.est_en_action() << endl;
cout<< endl;
Achat achat1(choufleur, 2); //On appelle le constructeur de "achat1" donc le constructeur "Achat", notez que "choufleur" a déjÃ* été initialisé précédemment
Achat achat2(cdrom );
Achat achat3(biscuits , 4);
Achat achat4(boisson , 6);
Achat achat5(poisson , 2);
cout << achat1.price() << endl;
cout << achat2.price() << endl;
achat1.afficher();
achat2.afficher();
return 0;
} |
Partager