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