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:
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:
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.