Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Codes sources à télécharger Java Discussion :

Implémentation d'un panier


Sujet :

Codes sources à télécharger Java

  1. #1
    Rédacteur

    Implémentation d'un panier
    Bonjour,

    Je vous propose un nouvel élément à utiliser : Implémentation d'un panier

    Je propose une implémentation en java d'un panier (caddy) permettant de d'ajouter et supprimer des articles.

    Le principe retenu est celui d'une liste de ligne (code quantité prix)

    Qu'en pensez-vous ?
    Développeur Java
    Site Web

  2. #2
    Membre chevronné
    Tu gagnerais un peu en utilisant une HashMap<Integer, LignePanier> pour stocker tes lignes panier et y accéder : tes méthodes getArticle et supprimerArticle en seraient plus simple et éviteraient de parcourir toute la liste à chaque opération

    Sinon, moi je ferais en sorte de recalculer le total du panier à chaque modification du panier, vu que c'est une information qu'on va afficher plus qu'on ne va modifier les éléments du panier


    Sinon, en terme purement conception : ta classe LignePanier représente un article et un nombre d'éléments. Pourquoi ne pas faire une classe Article qui posséderai le prix et les autres caractéristiques propres à un article, et dans ta classe LignePanier, tu n'aurais plus que l'article correspondant à la ligne et le nombre d'élements correspondants. Ce qui te permettrai au final de ne plus avoir besoin d'une classe LignePanier, mais juste d'une HashMap<Article, Int> qui pour chaque article te donne la quantité commandée


    Un truc de ce genre :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    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
     
    public class Panier {
    	private Map<Article, Integer> articles;
     
    	Panier() {
    		this.articles = new HashMap<Article, Integer>();
    	}
     
    	public void ajouterArticle(Article art, int qte) {
    		Integer quantity = articles.get(art);
    		if (quantity == null){
    			quantity = Integer.valueOf(0);
     
    		}
    		quantity = Integer.valueOf(quantity.intValue()+1);
    		articles.put(art, quantity);
    	}
     
    	public void supprimerArticle(Article article){
    		 articles.remove(article);
    	}	
     
    	public int calculerPanier() {
    		int total = 0;
    		Iterator<Entry<Article, Integer>> il = this.articles.entrySet().iterator();
    		while (il.hasNext()) {
                            Entry<Article, Integer> entry = il.next();
    			total += entry.getKey().getPrix() * entry.getValue().intValue();
    		}
    		return total;
    	}
    }
    Je ne suis pas mort, j'ai du travail !

  3. #3
    Rédacteur

    Oui, un HashMap est plus efficace, mais la liste ne fait pas 2km, dans un panier on ne met pas des tonnes d'achat.
    Et en plus, je manipule dans une ligne qu'une référence et une quantité.

    Tu as raison, un Article est une classe à faire apparaître dans la prochaine version

    Merci
    Développeur Java
    Site Web

  4. #4
    Membre chevronné
    Disons que passer par une HashMap permet aussi d'écrire moins de code et donc d'être plus feignant pour les mêmes performances
    Et j'aime être un bon feignant...

    Si tu veux aller plus loin, au lieu d'utiliser une classe Article, tu peux aussi utiliser une interface Valuable qui aurait une seule méthode déclarée : getPrice()...
    Comme ça, tu fais fais un panier de n'importe quoi qui aurait un prix ! (et tu ne force par l'utilisation d'une classe ou d'une hiérarchie)
    Je ne suis pas mort, j'ai du travail !

  5. #5
    Rédacteur

    Oui, ta deuxième approche comportementale me plait bien.
    Je sens que je vais vraiment m'intéresser à ce langage
    merci eulbobo !
    Développeur Java
    Site Web

  6. #6
    Rédacteur

    Citation Envoyé par kevinternet Voir le message
    Tu as raison, un Article est une classe à faire apparaître dans la prochaine version
    Arrête de développer Kevin tu es mature à souhait pour devenir chef de projet
    Développeur Java
    Site Web

  7. #7
    Rédacteur

    Citation Envoyé par kevinternet Voir le message
    Oui, ta deuxième approche comportementale me plait bien.
    Je sens que je vais vraiment m'intéresser à ce langage
    merci eulbobo !
    He oui, Java est beaucoup plus pro que PHP. devient java dev ne perd plus de temps
    Développeur Java
    Site Web

  8. #8
    Rédacteur

    Citation Envoyé par autran Voir le message
    He oui, Java est beaucoup plus pro que PHP. devient java dev ne perd plus de temps
    compte supprimé, 2 derniers messages à ignorer
    Développeur Java
    Site Web