diff --git a/.classpath b/.classpath index 20a8b72ab4c60e9256a641fbfba9dee3204732a3..1c280e2f254940fc3120709bcc67256b8d708fbd 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 Binary files /dev/null and b/bin/PanierTests/PanierTest.class differ diff --git a/bin/com/Vente/Readme b/bin/com/Vente/Readme new file mode 100644 index 0000000000000000000000000000000000000000..39ba08fdd124f01f7623f895cc069ba585acf366 --- /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 Binary files a/bin/module-info.class and /dev/null differ diff --git a/src/PanierTests/PanierTest.java b/src/PanierTests/PanierTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ef8e9d896cf003a0b84a890ee85a6790dac8db0d --- /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 8994f8bd1f0362a37e9ed841994b8f0878df7936..cae8831dee4d55ff101eef8a4a7224ee6920b043 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 0000000000000000000000000000000000000000..39ba08fdd124f01f7623f895cc069ba585acf366 --- /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 7a1c411333392f85e61e8806eb733a25ad559ff6..0000000000000000000000000000000000000000 --- a/src/module-info.java +++ /dev/null @@ -1,8 +0,0 @@ -/** - * - */ -/** - * - */ -module VenteEnLigne { -} \ No newline at end of file