Conversation with Merlin [email protected] · Wed Dec 06 2023

Problème (15 points): Ouvrir avec On écrira un programme qui gère le stock d'un supermarché. On suppose qu'on a déjà conçu la description du problème en terme des classes et des interfaces (voir annexe). Vous devez d'abord comprendre la hiérarchie des classes et des interfaces comme suit. Cela est nécessaire pour voir clairement les paramètres de retour des méthodes ainsi que la liste de leurs arguments. Voici une spécification du programme en terme des classes et des interfaces: I. On aura trois interfaces:

  1. Vendable par kilogramme: l'interface pour les produits qui se vendent par kilogramme о Méthodes: vendre: cette méthode reçoit la quantité vendue du produit, retourne le revenu du supermarché et modifie le stock, sachant que: revenu = prix de vente * quantité
  2. Vendable par pièce: l'interface pour les produits qui se vendent par pièce о Méthodes: On • vendre
  3. Succeptible d'être vendu en solde o Méthodes: D lancer le solde: cette méthode baisse le prix du produit par le pourcentage donné terminer le solde: cette méthode augmente le prix du produit par le pourcentage donné aura une classe générale des Articles: 0 6 Propriétés: prix d'achat: le prix pour lequel le supermarché achète le produit prix de vente: le prix pour lequel le supermarché vend le produit nom: le nom du produit IV. III. o fournisseur: le nom du fournisseur du produit Méthodes (autre que le constructeur): . calculateur du taux de rendement, sachant que: rendement (prix de vente - prix d'achat) / prix d'achat description des caractéristiques du produit sur l'écran (les prix, le nom. le fournisseur, rendement) Cette classe n'implémente aucune interface. On a deux classes dérivées des Articles: Chaque classe dérivée des articles respecte la règle suivante: au moment de la construction de l'objet, le stock et vide.
  4. La classe des articles élécroménagers • Propriétés suplémentaires: . nombre de pièces en stock O Méthodes supplémentaires (autre que le constructeur): remplir le stock: cette méthode reçoit la quantité achetée du produit, retourne les dépenses du supermarché et modifie le stock, sachant que: dépenses = prix d'achat * quantité description des caractéristiques du produit sur l'écran (les prix, le nom. le fournisseur; rendement; stock) Il faut implémenter les interfaces correspondantes à cette classe.
  5. La classe des primeurs o Propriété supplémentaires: " quantité en stock o Méthodes supplémentaires: remplir le stock description des caractéristiques du produit sur l'écran (les prix, le nom, le fournisseur; rendement; stock) Il faut implémenter les interfaces correspondantes à cette classe, sachant que les primeurs ne peuvent pas être vendu en solde. On a une classe pour les supermarchés: Au moment de la construction de l'objet, les dépenses et les revenus sont nuls. o Propriétés: . dépenses: le coût d'achat des produits revenus: les revenus après la vente des produits produits: deux vecteurs de deux articles (éléctroménagers et primeurs) o Méthodes (autre que le constructeur): D calculateur du taux de rendement, sachant que: . rendement= (Revenu - Dépense) / Dépense description de l'état du supermarché (les dépenses, les revenus; rendement) Questions:
  6. Coder les interfaces et les classes.
  7. Développer une classe exécutable > qui créée un supermarché, définit les articles à vendre, effectue le remplissage du stock et simule les achats.

Commençons par coder les interfaces et les classes basées sur les spécifications fournies. Le code suivant est écrit en Java :

Interfaces :

public interface VendableParKilogramme { double vendre(double quantite); public interface VendableParPiece { double vendre(int nombrePieces); } public interface SusceptibleDetreVenduEnde { void lancerLeSolde(double pourcentage); void terminerSolde(double pourcentage); }

Classe générale des Articles :

public abstract class Article { protected double prixDAchat; protected double prixDeVente; protected String nom; protected String fournisseur; public Article(String nom, double prixDAchat, double prixDeVente, String fournisseur) { this.nom = nom; this.prixDAchat = prixDAchat; this.pDeVente = prixDeVente; this.fournisseur = fournisseur } public double calculateurDuTauxDeRendement() { return (prixDeVente - prixDAchat / prixDAchat; } public void descriptionDesCaracteristiques() System.out.println("Nom: " + nom + ", Fournisseur: " + fournisseur ", Prix d'achat: " + prixDAchat + ", Prix de vente " + prixDeVente + ", Rendement: " + calculateurDuTauxDeRendement()); } }

asse des Articles Électroménagers :

public class ArticleElectromenager extends Article implements VendableParPiece { private int nombreDePiecesEnStock; public ArticleElectromenager(String nom, double prixDAchat, double prixDeVente, String fournisseur) { super(n, prixDAchat, prixDeVente, fournisseur); this.nombreDeEnStock = 0; // Initialement vide } public double vendre(int nombrePieces) { double revenu = nombrePieces * prixDeVente; nombreDePiecesEnStock -= nombrePieces; return revenu; } public double remplirLeStock quantite) { double depenses = quantite * prixDAchat; nombreDePiecesEnStock += quantite; return depenses; } @ public void descriptionDesCaracteristiques() { super.descriptionDesCaracteristiques(); System.out.println("Stock: " + nombreDePiecesEnStock); } }

Classe des Primeurs :

public class Primeur extends Article implements VendableParKilogramme { private double quantiteEnStock; public Primeur(String nom, double prixDAchat, double prixDeVente, String fournisseur) { super(nom, prixchat, prixDeVente, fournisseur); this.quantiteEnStock =0; // Initialement vide } public double vendre(double quantite) { double revenu =ite * prixDeVente; quantiteEnStock -= quantite; revenu; } public double remplirLeStock(double quantite) { double depenses = quantite * prixDAchat; quantiteEnStock += quantite; return depenses; } @Override void descriptionDesCaracteristiques() { super.descriptionCaracteristiques(); System.out.println("Stock: " + quantiteEnStock + " kg"); } } ``**Classe Supermarché :** ```java import java.util.ArrayList; class Supermarche { private double depenses; private double revenus; private ArrayList<ArticleElectromenager> electromenagers; private ArrayList<Primeur> primeurs; public Supermarche() { this.depenses = ; this.revenus = 0; this.electromenagers new ArrayList<>(); this.primeurs = new ArrayList<>(); } public void ajouterElectromenager(ArticleElectromenager electromenager) { electromenagers.add(electromenager); } public void ajouterPrimeur(Primeurur) { primeurs.add(primeur); } public double calculRendement() { return (revenus - depenses) / depenses; } public void descriptionEtatSuperarche() { System.out.println("Dépenses: " + depenses + ", Revenus: + revenus + ", Rendement: " + calculerRendement()); } // Les méthodes pour acheter des articles

completer le main

Le code fourni n'inclut pas de méthode main, qui est nécessaire pour exéer un programme Java. Voici un exemple de comment une méthode main pourrait être complétée pour le code donné, prenant en quelques corrections d'erreurs potentielles dans les classes existantes :

public class Main { public static void main(String[] args) { // Création du supermé Supermarche supermarche = new Supermarch(); // Création des articles ArticleElectromenager frigo = new ArticleElectromenager("Frigo", 500.0, .0, "ElectroTech"); Primeur pommes = new Primeur("Pomme", 0.2, 0.5, "Vergeront"); // Ajout des articles au supermarché superarche.ajouterElectromenager(frigo); supermarche.ajouterPrimeur(pommes); // Suppos que le supermarché achète des articles double depensesFrigo = frigo.remplirLeStock(10); // Achète 10 frigos double depensesPommes = pommes.remplirStock(100); // Achète 100 kg de pommes // Mise à jour des dépenses du supermarché supermarche.actualiserDepensesensesFrigo + depensesPommes); // Vente de certains articles supermarche.vendreArticle(frigo,5); // Vend 5 frigos supermarche.vendreArticle(pommes 30.0); // Vend 30 kg de pommes // Description de l'état du supermarché marche.descriptionEtatSupermarche(); }

Notez que cette ébauche de main suppose que vous avez des méthodes dans la classe Supermarche vendreArticle et pour actualiserDepenses. En supposant que ces méth n'existent pas, vous devriez les ajouter à la classe `Supermarche pour traiter correctement la logique commerciale.

Les nécessaires pour intégrer la méthode main comprennent:

  1. La création d'instances d'articles et de les ajouter à'inventaire du supermarché.
  2. La simulation des où le supermarché remplit son stock et vend des articles aux clients.
  3. L'affichage de lat financier du supermarché après ces transactions.

Pour que ce code fonctionne comme prévu, assurez-vous que toutes les erre de syntaxe et les méthodes manquantes soientrigées et implémentées correctement dans les classes appropriées.