Académique Documents
Professionnel Documents
Culture Documents
L’objectif de l’exercice est d’écrire un programme JAVA qui gère les chariots de produits dans un supermarché.
Les produits sont divisés en 2 catégories : les produits alimentaires et l’électroménager décrits par 3 classes : Produit,
Alimentation et Electromenager.
Produit : décrit par un libelle (chaîne), un prix (prix d’achat réel), et une constante qui fixe la TVA à la valeur 19% ;
Alimentation : est un produit qui a, une date d’expiration : dateExp (chaîne de caractères) ;
Electromenager est un produit qui a une marque;
Tout achat de produit fait bénéficier le client d’un certain nombre de points de fidélité. Le calcul se base sur le tableau
suivant :
Tableau 1: Calcul des points fidélité
Conditions Points de fidélité
Alimentation - 20
Marque « LG » 10000
Électroménager
Autre 5000
Les produits électroménagers ont la possibilité de bénéficier d’une promotion, on définit pour cela l’interface Promotion
qui définit les deux méthodes suivantes :
calculerRedcution qui renvoie le montant de réduction.
Le calcul de la réduction par rapport au prix de vente avant réduction se fait selon le principe suivant :
estEnPromo qui renvoie si l’objet en promotion bénéficie ou non de réduction. Un produit en promotion est celui
ayant un montant de réduction positif.
N.B : Les attributs de toutes les classes doivent être déclarés private
Partie 1
On s’intéresse dans cette partie à l’implémentation de ces 3 classes.
1. Définir l’interface Promotion.
2. Définir la classe Produit telle que décrite ainsi que les méthodes suivantes :
o Un constructeur paramétré ;
o calculerPrix qui renvoie le prix de vente avant réduction selon la formule :
Prix de Vente = Prix d’Achat + Prix d’Achat * TVA/100
o calculerPointFidelite qui renvoie le nombre de points fidélité.
o Le getter de l’attribut libelle.
o toString qui renvoie une chaîne de caractère ayant le format suivant :
« ……..…(1)…….. Prix Achat= ………(2)……… » avec (1) correspond au libellé du produit et (2) correspond au prix
d’achat du produit.
1/2
3. Définir les classes Alimentation et Electromenager qui doivent comprendre :
o Un constructeur paramétré ;
o calculerPrix devrait renvoyer le prix de vente du produit après réduction.
o toString qui renvoie dans une chaîne les différents attributs ainsi que le prix de vente
o Définition /redéfinition des méthodes nécessaires
Partie 2
On considère qu’un chariot peut regrouper un ensemble d’objets de type ElementProd et peut à son tour bénéficier d’une
promotion en plus de celle déjà appliquée à l’électroménager. Si le montant d’un chariot dépasse 1000 dinars, une
réduction de 5% est accordée.
La classe ElementProd est définie comme suit :
public class ElementProd {
private Produit prod ;
private int quantite ; // représente le nombre de pièces achetées du produit prod
public ElementProd(Produit prod, int quantite){
this.prod=prod ;
this.quantite=quantite ;}
public Produit getProd(){ return this.prod ;}
public int getQuantite(){ return this.quantite;}
public String toString(){return prod+" quantité = "+quantite;}
}
Définir la classe Chariot qui implémente aussi l’interface Promotion et qui est décrite par les attributs lesProduits qui est
un tableau de 100 ElementProd (private ElementProd[ ] lesProduits ;) et nombreProduits qui représente le nombre de
ElementProd (private int nombreProduits ;) ainsi que les méthodes suivantes :
o Produit trouverProduit(String libelle) qui pour un libellé donné retourne le produit correspondant parmi les
produits du chariot.
o boolean ajouterProduit(Produit P, int qte) qui ajoute un produit, s’il n’existe pas, avec sa quantité au chariot.
o montantChariot qui renvoie le montant des produits du chariot tenant compte de la promotion appliquée aux
produits.
o montantChariotFinal qui renvoie le montant du chariot après la promotion appliquée au chariot
o produitsEnPromo qui renvoie un chariot contenant seulement les produits qui bénéficient d’une promotion.
o totalPointFidelite qui renvoie le total des point fidélité gagné du chariot.
o toString qui renvoie dans une chaîne tous les produits du chariot
Partie 3
Implémenter une classe Application qui contient un programme principal permettant de :
o Créer un chariot qui contiendrait les produits suivants :
Objet Libellé Prix d’achat Autres propriétés Quantité
Electroménager e1 Four 450 « Falcon » 1
Alimentation a1 Yaourt 0.56 « 31/01/2023 » 6
2/2