Vous êtes sur la page 1sur 2

EXAMEN FINAL

Département TI Date 04/01/2023


Matière PROGRAMMATION ORIENTEE OBJET Durée 01h30
Enseignants Lamia Drira, Lobna Sassi, Zied ben Jaffel, Hatem Aziza Doc. Autorisés NON
Calculat. Autorisée NON
Classes DSI2 Nombre de pages 02

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 :

Tableau 2: Calcul des réductions des produits en promotion


Conditions Réduction
Prix de vente >=1000 12%
Électroménager
Marque « LG » et Prix de vente >=500 10%

 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

o Afficher l’ensemble des produits du chariot.


o Afficher le montant du chariot avant réduction.
o Afficher le montant du chariot final après réduction s’il en a bénéficié.
o Afficher le total des points de fidélité du chariot.
o Afficher la liste des produits qui ont bénéficié de la promotion.

2/2

Vous aimerez peut-être aussi