Devant me plonger dans le C++ pour maintenir un logiciel écrit dans les années 90, je propose dans ce post une implémentation d'un panier avec la STL.
je ne pense pas que ce type de developpment merite que d'être publié sur les sources DVP C++. Si quelq'un pense que je devrais au contraire le publier je leferai alors.
Voici le main.cpp pour que tout le monde comprenne ce que peut faire ce panier basique :
#include "Panier.h"
int main(int argc, char* argv[])
{
Panier * panier = new Panier();
panier->ajouterArticle(1, 2, 50);
panier->ajouterArticle(2, 2, 100);
panier->ajouterArticle(3, 1, 150);
panier->ajouterArticle(1, 3, 50);
cout << panier->calculerPanier() << endl;
cout << panier->supprimerArticle(2) << endl;;
cout << panier->calculerPanier() << endl;
return 0;
}
j'ai opté comme je l'aurai fait en PHP pur une ligne panier et un panier dont voici les sources:
LignePanier.h
#pragma once
class LignePanier
{
private:
int codeArticle;
int qteArticle;
int prixArticle;
public:
LignePanier(int code, int qte, int prix);
int getCode(void);
int ajouterQte(int qte);
int calculerLigne(void);
LignePanier(const LignePanier &ligne);
public:
~LignePanier(void);
};
LignePanier.cpp
#include "LignePanier.h"
LignePanier::LignePanier(int code, int qte, int prix)
{
this->codeArticle = code;
this->qteArticle = qte;
this->prixArticle = prix;
}
LignePanier::~LignePanier(void)
{
}
int LignePanier::calculerLigne(void)
{
return (this->qteArticle * this->prixArticle);
}
LignePanier::LignePanier(const LignePanier &ligne)
{
this->codeArticle = ligne.codeArticle;
this->prixArticle = ligne.prixArticle;
this->qteArticle = ligne.qteArticle;
}
int LignePanier::ajouterQte(int qte)
{
this->qteArticle += qte;
return 0;
}
int LignePanier::getCode(void)
{
return this->codeArticle;
}
Panier.h
#pragma once
#include "LignePanier.h"
#include
#include
#include
using namespace std ;
class Panier
{
private:
list
public:
Panier(void);
int ajouterArticle(int code, int qte, int prix);
LignePanier getArticle(int code);
int supprimerArticle(int code);
int calculerPanier(void);
public:
~Panier(void);
};
Panier.cpp
#include "Panier.h"
Panier::Panier(void)
{
}
Panier::~Panier(void)
{
}
int Panier::ajouterArticle(int code, int qte, int prix)
{
LignePanier ligne = this->getArticle(code);
if (ligne.getCode() == code)
{
ligne.ajouterQte(qte);
this->supprimerArticle(code);
}
else ligne = LignePanier(code, qte, prix);
this->listeArticles.push_back(ligne);
return 0;
}
LignePanier Panier::getArticle(int code)
{
for(list
{
if (code == iter->getCode())
return (*iter);
}
LignePanier li = LignePanier(0, 0, 0);
return li;
}
int Panier::calculerPanier(void)
{
int total = 0;
for(list
{
total += iter->calculerLigne();
}
return total;
}
int Panier::supprimerArticle(int code)
{
for(list
{
if (code == iter->getCode())
{
this->listeArticles.erase(iter);
return 0;
}
}
return 0;
}
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.