From 5ff25aa1f982db44979494d14dadded38d97f46c Mon Sep 17 00:00:00 2001 From: YourGitHubUsername <hilalsami03@gmail.com> Date: Wed, 12 Mar 2025 13:20:00 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20du=20projet=20:=20correc?= =?UTF-8?q?tion=20et=20am=C3=A9lioration=20du=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 3 +- bin/PanierTests/PanierTest.class | Bin 0 -> 1353 bytes bin/com/Vente/Readme | 97 +++++++++++++++++++++++++++++++ bin/module-info.class | Bin 151 -> 0 bytes src/PanierTests/PanierTest.java | 27 +++++++++ src/com/Vente/Produit.java | 2 +- src/com/Vente/Readme | 97 +++++++++++++++++++++++++++++++ src/module-info.java | 8 --- 8 files changed, 224 insertions(+), 10 deletions(-) create mode 100644 bin/PanierTests/PanierTest.class create mode 100644 bin/com/Vente/Readme delete mode 100644 bin/module-info.class create mode 100644 src/PanierTests/PanierTest.java create mode 100644 src/com/Vente/Readme delete mode 100644 src/module-info.java diff --git a/.classpath b/.classpath index 20a8b72..1c280e2 100644 --- a/.classpath +++ b/.classpath @@ -5,6 +5,7 @@ <attribute name="module" value="true"/> </attributes> </classpathentry> - <classpathentry kind="src" path="src"/> + <classpathentry excluding="Tests/|Tests/" kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/bin/PanierTests/PanierTest.class b/bin/PanierTests/PanierTest.class new file mode 100644 index 0000000000000000000000000000000000000000..0c7dc631fd89f07964c30c2316fb003b9108f4cf GIT binary patch literal 1353 zcmX^0Z`VEs1_mbvZ*~SIMh3Bf#JtSZqL9?$l45-Xo1KA$kwG9Uu`E$PCowNw-#;lU zHMxY5fz2i}FSEpsk%3u5GmMde#W_DEm5YIyfs==Um4S_sf!`-HFV(L!Hz~C!Brz!` zm61WnCqFqcCoHij6U2uKvXo?G7BezP_#kXVw%wYMLAWHfxWqXzC%H5ypeVB<B)=pv zhmk=ts5Gx6GdDFXvp6#;C)F`8FTW(QBr`v+n2|xoC%-6NKdUq^vqV3uv>>x2wMaj) zAX6XYHEVVTAw~v)<osOyu++SgRH#q67z7zO*%?Gpq+BwK3rkZu7{nPFI6^XtGIMfL zi#Ql085#I}Gm|qCQ*#u&5|guw^Yhpo^ccW^i$R1z78C$-j0_qYK8R2YE-A{)OSi@p zanTH8XHZ~d5J9-eFTb>?D6^!rD3yajiIIUdAU`)Zm5V`zL5-b3m61UhY%0j_`rrU{ zNi0d_VNhq#U}Rv*Ph(_|((v^3)P&fCs>+(pfd%YL1}+A91|5()br~77ak>*tw~J;N zD46tl7z`K;85x)pQ&JciBs4sI5Ka$E%}W7AuC-<un}e$Z*fNkFQyvC026ILR-ehn* zrWQeCky%62g@eJ8kwL>JRiOkFvkEDt3I*VVsF0FcR+N}oqHuUsNl~hTiIJY^qoy@n z4Au;`><l)H3<}sI*|E4dwFsOLco^&$>=_w&62T&_g{6r(#f%K%8ZIu7zyT*`XvBb$ zFdM{PP(nrc2$C$V85vj;bCODPQ6(V>1SDAiiX%n_F{H3SM58q$10N_6L(B@xOiATn z@L*)nL-<*}G!N$MvdolJG_M=z89ZuQ!^prDoL^d$oa&Yd%1!(b(?Drj50oMp6d4#9 zn86{=%)kiBgA9xe><kPH`V5Q=j0_A6tXkU{I5sjcFfcK2F)%Q&fdx4jxEUB2c))B{ z1|9}p1_lO320jKh1||l6s44*l2CzX(8Q2&=>Bn_9gJ9%#24SDw3?h+2VnPxk3{u+} zWPEos$VUn(3bMcCVA;W-EW)6<ok81An^k8UgPt~r?luNJ5e6geZ44$t7CRWM5Dt+8 z8_vVP!NAKP&cMf@!yv$5#30CE!63}w!XN^6pccepr~^3|Y#AIF92poH#2NG$oEV%L zm>6^zBpF;7Tp2)qcf;y@e+E_tCI$uuVVLvzz>aZ8aSR_g2qhRe7$g~l7^J|Ki$S!( PE$4<>&dA^i4oxortTZ>u literal 0 HcmV?d00001 diff --git a/bin/com/Vente/Readme b/bin/com/Vente/Readme new file mode 100644 index 0000000..39ba08f --- /dev/null +++ b/bin/com/Vente/Readme @@ -0,0 +1,97 @@ +Système de Vente en Ligne + +Description du Projet +Ce projet est une implémentation d'un système de vente en ligne permettant de +gérer un panier d'achats contenant des produits vendables (Disque, Nourriture). +L'objectif est de calculer le prix total du panier en prenant en compte les produits ajoutés. + +--- +Structure du Projet +Le projet est organisé en plusieurs classes suivant une architecture modulaire et extensible. + +--- +-> Interface Vendable: + + L'interface Vendable définit un contrat pour tous les objets vendables dans le système. + + Méthodes : + - getPrixUnitaire() : double → Retourne le prix unitaire du produit. + +--- +Classes Disque et Nourriture (Implémentent Vendable) + + Ces classes représentent des types de produits vendables. + + Disque : + -Attributs : + - titre : String → Titre du disque. + - artiste : String → Artiste du disque. + - prixUnitaire : double → Prix unitaire du disque. + - Méthodes : + - getPrixUnitaire() : double → Retourne le prix du disque. + + Nourriture : + - Attributs : + - nom : String → Nom de l’aliment. + - dateExpiration : LocalDate → Date d’expiration de l’aliment. + - prixUnitaire : double → Prix unitaire de l’aliment. + - Méthodes : + - getPrixUnitaire() : double → Retourne le prix de l’aliment. + +Classe Produit + Cette classe représente un **produit ajouté dans le panier. + + - Attributs : + - vendable : Vendable → Un objet Disque ou Nourriture. + - quantite : int → Nombre d'exemplaires du produit. + + - Méthodes : + - getPrixTotal() : double → Retourne le prix total (prixUnitaire × quantité). + + Classe Panier + Cette classe représente un panier contenant plusieurs produits. + + - Attributs : + - produits : List<Produit> → Liste des produits contenus dans le panier. + + - Méthodes : + - add(int quantite, Vendable chose) : void → Ajoute un produit au panier. + - calculerTotal() : double → Calcule la somme totale des produits dans le panier. + + -> Classe Main (Exécution du programme) + +Le point d'entrée du programme permettant de tester le système. + +Création d’un panier + +Ajout de produits (Disque, Nourriture) + +Affichage du prix total + +Comment Lancer le Code ? + +Depuis Eclipse + +Importer le projet dans Eclipse (File > Open Projects from File System). + +Exécuter Main.java : + +Clic droit sur Main.java + +Run As > Java Application + +La console affichera le prix total du panier. + +-> Exécuter les Tests Unitaires + +Ouvrir PanierTest.java + +Exécuter Run As > JUnit Test + +Les tests doivent passer en vert si tout est correct. + +Fonctionnalités Principales: +Ajouter des Disques et Nourriture dans un panier. +Calculer le prix total du panier en prenant en compte les quantités. +Utilisation du polymorphisme (Vendable) pour une architecture extensible. +Implémentation de tests unitaires avec JUnit 5 pour assurer la fiabilité du code. \ No newline at end of file diff --git a/bin/module-info.class b/bin/module-info.class deleted file mode 100644 index 11bf3c172dbbdc3c00cb21f8d843bc10dc8c4941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmX^0Z`VEs1_mbvE_MbcMh5QO{FKt1RNc(Hw0uSeuHgLAqU2P!%$!t41_2}~y{yEt zL`DWSU$AOn26jdUp0L!sl2q3`pUm{URAB~AMg~rhBE6)<;?xEP21W)LU}9iqU|?Wk XU}0coU|<kqU;|4qGH^7284v;huKyl9 diff --git a/src/PanierTests/PanierTest.java b/src/PanierTests/PanierTest.java new file mode 100644 index 0000000..ef8e9d8 --- /dev/null +++ b/src/PanierTests/PanierTest.java @@ -0,0 +1,27 @@ +package PanierTests; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; +import java.time.LocalDate; +import com.Vente.*; // Importation des classes du package com.Vente + +public class PanierTest { + + @Test + public void testCalculPrixTotal() { + Panier panier = new Panier(); + Disque album = new Disque("Thriller", "Michael Jackson", 15.0); + Nourriture pomme = new Nourriture("Pomme", LocalDate.of(2025, 5, 1), 2.5); + + panier.add(2, album); // 2 * 15.0 = 30.0 + panier.add(5, pomme); // 5 * 2.5 = 12.5 + + assertEquals(42.5, panier.calculerTotal(), "Le total du panier devrait être 42.5€"); + } + + @Test + public void testPanierVide() { + Panier panier = new Panier(); + assertEquals(0.0, panier.calculerTotal(), "Le total d'un panier vide devrait être 0.0€"); + } +} diff --git a/src/com/Vente/Produit.java b/src/com/Vente/Produit.java index 8994f8b..cae8831 100644 --- a/src/com/Vente/Produit.java +++ b/src/com/Vente/Produit.java @@ -15,7 +15,7 @@ public class Produit { this.chose = chose; this.quantite = quantite; - assert checkInvariant() : "Invariant violé : Produit invalide."; + assert checkInvariant() : "Invariant violé : Produit invalide."; } /** diff --git a/src/com/Vente/Readme b/src/com/Vente/Readme new file mode 100644 index 0000000..39ba08f --- /dev/null +++ b/src/com/Vente/Readme @@ -0,0 +1,97 @@ +Système de Vente en Ligne + +Description du Projet +Ce projet est une implémentation d'un système de vente en ligne permettant de +gérer un panier d'achats contenant des produits vendables (Disque, Nourriture). +L'objectif est de calculer le prix total du panier en prenant en compte les produits ajoutés. + +--- +Structure du Projet +Le projet est organisé en plusieurs classes suivant une architecture modulaire et extensible. + +--- +-> Interface Vendable: + + L'interface Vendable définit un contrat pour tous les objets vendables dans le système. + + Méthodes : + - getPrixUnitaire() : double → Retourne le prix unitaire du produit. + +--- +Classes Disque et Nourriture (Implémentent Vendable) + + Ces classes représentent des types de produits vendables. + + Disque : + -Attributs : + - titre : String → Titre du disque. + - artiste : String → Artiste du disque. + - prixUnitaire : double → Prix unitaire du disque. + - Méthodes : + - getPrixUnitaire() : double → Retourne le prix du disque. + + Nourriture : + - Attributs : + - nom : String → Nom de l’aliment. + - dateExpiration : LocalDate → Date d’expiration de l’aliment. + - prixUnitaire : double → Prix unitaire de l’aliment. + - Méthodes : + - getPrixUnitaire() : double → Retourne le prix de l’aliment. + +Classe Produit + Cette classe représente un **produit ajouté dans le panier. + + - Attributs : + - vendable : Vendable → Un objet Disque ou Nourriture. + - quantite : int → Nombre d'exemplaires du produit. + + - Méthodes : + - getPrixTotal() : double → Retourne le prix total (prixUnitaire × quantité). + + Classe Panier + Cette classe représente un panier contenant plusieurs produits. + + - Attributs : + - produits : List<Produit> → Liste des produits contenus dans le panier. + + - Méthodes : + - add(int quantite, Vendable chose) : void → Ajoute un produit au panier. + - calculerTotal() : double → Calcule la somme totale des produits dans le panier. + + -> Classe Main (Exécution du programme) + +Le point d'entrée du programme permettant de tester le système. + +Création d’un panier + +Ajout de produits (Disque, Nourriture) + +Affichage du prix total + +Comment Lancer le Code ? + +Depuis Eclipse + +Importer le projet dans Eclipse (File > Open Projects from File System). + +Exécuter Main.java : + +Clic droit sur Main.java + +Run As > Java Application + +La console affichera le prix total du panier. + +-> Exécuter les Tests Unitaires + +Ouvrir PanierTest.java + +Exécuter Run As > JUnit Test + +Les tests doivent passer en vert si tout est correct. + +Fonctionnalités Principales: +Ajouter des Disques et Nourriture dans un panier. +Calculer le prix total du panier en prenant en compte les quantités. +Utilisation du polymorphisme (Vendable) pour une architecture extensible. +Implémentation de tests unitaires avec JUnit 5 pour assurer la fiabilité du code. \ No newline at end of file diff --git a/src/module-info.java b/src/module-info.java deleted file mode 100644 index 7a1c411..0000000 --- a/src/module-info.java +++ /dev/null @@ -1,8 +0,0 @@ -/** - * - */ -/** - * - */ -module VenteEnLigne { -} \ No newline at end of file -- GitLab