Implémentation d'un panier

Présentation
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)
Téléchargement
0  0 
Téléchargé 69 fois Voir les 7 commentaires
Détails
Catégories : Divers
Voir tous les téléchargements de l'auteur
Licence : Autre
Date de mise en ligne : 21 juillet 2015




Avatar de eulbobo eulbobo - Membre chevronné https://www.developpez.com
le 22/07/2015 à 9:11
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
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; 
	} 
}
Avatar de autran autran - Rédacteur https://www.developpez.com
le 23/07/2015 à 0:15
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
Avatar de eulbobo eulbobo - Membre chevronné https://www.developpez.com
le 23/07/2015 à 9:16
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)
Avatar de autran autran - Rédacteur https://www.developpez.com
le 23/07/2015 à 19:22
Oui, ta deuxième approche comportementale me plait bien.
Je sens que je vais vraiment m'intéresser à ce langage
merci eulbobo !
Avatar de autran autran - Rédacteur https://www.developpez.com
le 23/07/2015 à 19:43
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
Avatar de autran autran - Rédacteur https://www.developpez.com
le 23/07/2015 à 19:45
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
Avatar de autran autran - Rédacteur https://www.developpez.com
le 23/08/2015 à 16:24
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
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -