Skip to content
Snippets Groups Projects
Commit 51523ce6 authored by YourGitHubUsername's avatar YourGitHubUsername
Browse files

Ajout du projet Vente en ligne

parent 7db95c26
No related branches found
No related tags found
No related merge requests found
Showing
with 224 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-22">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
.project 0 → 100644
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>VenteEnLigne</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=22
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=22
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=22
Diagramme De Classe.png

41.7 KiB

Diagramme de Séquence.png

25.6 KiB

File added
File added
File added
File added
File added
File added
File added
File added
package com.Vente;
/**
* Classe Disque : représente un CD ou un vinyle vendable.
* Implémente l'interface Vendable et définit le prix unitaire d'un disque.
*/
public class Disque implements Vendable {
private String titre;
private String artiste;
private double prixUnitaire;
public Disque(String titre, String artiste, double prixUnitaire) {
this.titre = titre;
this.artiste = artiste;
this.prixUnitaire = prixUnitaire;
}
@Override
public double getPrixUnitaire() {
return prixUnitaire;
}
}
\ No newline at end of file
package com.Vente;
import java.time.LocalDate;
/**
* Classe principale pour tester l'application.
*/
public class Main {
public static void main(String[] args) {
Panier panier = new Panier();
Disque disque1 = new Disque("Album1", "Artiste1", 3);
Nourriture pomme = new Nourriture("Pomme", LocalDate.of(2025, 3, 13), 5);
panier.add(2, disque1);
panier.add(1, pomme);
System.out.println("Total du panier : " + panier.calculerTotal() + " €");
}
}
\ No newline at end of file
package com.Vente;
import java.time.LocalDate;
/**
* Classe Nourriture : représente un aliment vendable avec une date d'expiration.
* Implémente Vendable, ce qui signifie qu'un aliment peut être ajouté à un panier.
*/
public class Nourriture implements Vendable {
private String nom;
private LocalDate dateExpiration;
private double prixUnitaire;
public Nourriture(String nom, LocalDate dateExpiration, double prixUnitaire) {
this.nom = nom;
this.dateExpiration = dateExpiration;
this.prixUnitaire = prixUnitaire;
}
@Override
public double getPrixUnitaire() {
return prixUnitaire;
}
}
\ No newline at end of file
package com.Vente;
import java.util.ArrayList;
import java.util.List;
/**
* Classe Panier : représente un panier contenant plusieurs produits.
* Vérifie l'invariant : la liste de produits ne doit jamais être null.
*/
public class Panier {
private List<Produit> produits;
public Panier() {
this.produits = new ArrayList<>();
assert checkInvariant() : "Invariant violé : La liste de produits ne doit jamais être null.";
}
/**
* Ajoute un produit au panier après vérification de la validité des paramètres.
* @param quantite Nombre d'unités à ajouter (> 0).
* @param chose Objet vendable (ex : Disque, Nourriture).
*/
public void add(int quantite, Vendable chose) {
if (quantite <= 0) {
throw new IllegalArgumentException("Quantité invalide.");
}
produits.add(new Produit(chose, quantite));
assert checkInvariant() : "Invariant violé : Panier invalide après ajout.";
}
/**
* Calcule le prix total du panier en additionnant les prix de tous les produits.
* @return Prix total du panier.
*/
public double calculerTotal() {
double total = produits.stream().mapToDouble(Produit::getPrixTotal).sum();
assert total >= 0 : "Postcondition violée : Le prix total ne peut pas être négatif.";
return total;
}
/**
* Vérifie que l'invariant du panier est respecté.
* @return true si la liste de produits est valide.
*/
private boolean checkInvariant() {
return produits != null && produits.stream().allMatch(p -> p.getPrixTotal() >= 0);
}
}
package com.Vente;
/**
* Classe Produit<T> : un produit est composé d'une chose vendable et d'une quantité.
* Utilise la généricité pour permettre la compatibilité avec n'importe quel type de Vendable.
*/
public class Produit {
private Vendable chose;
private int quantite;
public Produit(Vendable chose, int quantite) {
if (quantite <= 0) {
throw new IllegalArgumentException("La quantité doit être strictement positive.");
}
this.chose = chose;
this.quantite = quantite;
assert checkInvariant() : "Invariant violé : Produit invalide.";
}
/**
* Retourne le prix total du produit (quantité * prix unitaire).
*/
public double getPrixTotal() {
double prixTotal = quantite * chose.getPrixUnitaire();
assert prixTotal >= 0 : "Postcondition violée : Prix total négatif.";
return prixTotal;
}
/**
* Vérifie l'invariant de la classe Produit.
* La quantité doit toujours être > 0.
*/
private boolean checkInvariant() {
return quantite > 0;
}
}
\ No newline at end of file
package com.Vente;
/**
* Classe Utilisateur : représente un utilisateur qui possède un panier et peut calculer le total de ses achats.
*/
public class Utilisateur {
private Panier panier;
public Utilisateur() {
this.panier = new Panier();
}
/**
* Retourne le prix total des achats de l'utilisateur en appelant calculerTotal() sur son panier.
* @return Prix total du panier
*/
public double calculerTotalAchats() {
return panier.calculerTotal();
}
/**
* Ajoute un produit au panier de l'utilisateur.
* @param quantite Quantité à ajouter
* @param chose Objet vendable
*/
public void ajouterProduitAuPanier(int quantite, Vendable chose) {
panier.add(quantite, chose);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment