Exercice java : Gestion de Stock de Chocolat avec Exceptions Personnalisées

ennoncé

Vous êtes un développeur travaillant pour une boutique spécialisée dans la vente de chocolats dans la ville de Dschang. La boutique souhaite mettre en place un système pour gérer son stock de différents types de chocolats. L'application doit permettre d'ajouter des chocolats au stock, de traiter des demandes de vente de chocolats et de vérifier le niveau de stock. Si une demande de vente dépasse le stock disponible pour un type de chocolat donné, une exception personnalisée doit être levée. De plus, il doit y avoir une vérification des indices lors de l'accès au tableau des stocks pour éviter les erreurs d'indice hors limite.

La boutique vend trois types de chocolats : noir, au lait, et blanc. Chaque type de chocolat est stocké dans un tableau, et le système doit gérer le stock de chaque type de manière indépendante. L'application devra inclure des fonctionnalités pour ajouter des chocolats au stock, vérifier le stock actuel, et traiter des demandes de vente. Si une demande de vente dépasse le stock disponible, une exception spécifique doit être lancée pour indiquer que la demande ne peut pas être satisfaite. De plus, pour éviter des erreurs potentielles, une autre exception doit être levée lorsqu'un indice invalide est utilisé pour accéder au tableau des stocks.

Ce que vous devez faire

  1. Créer une Exception Personnalisée pour le Stock Insuffisant :
    • Créez une classe StockInsuffisantException qui hérite de Exception. Cette exception sera lancée lorsque la quantité demandée pour un type de chocolat est supérieure à la quantité disponible en stock.
  2. Créer une Exception Personnalisée pour l'Indice Hors Limite :
    • Créez une classe IndiceInvalideException qui hérite de IndexOutOfBoundsException. Cette exception sera lancée lorsque l'utilisateur tente d'accéder à un type de chocolat avec un indice invalide (par exemple, un indice qui n'existe pas dans le tableau).
  3. Classe GestionStockChocolat :
    • Créez une classe GestionStockChocolat qui contient un tableau pour stocker le nombre de chocolats disponibles pour chaque type : noir, au lait, et blanc.
    • Implémentez les méthodes suivantes :
      • ajouterStock(int typeChocolat, int quantite) : Ajoute une certaine quantité de chocolats au type spécifié. Utilisez les indices : 0 pour noir, 1 pour au lait, 2 pour blanc.
      • vendreChocolat(int typeChocolat, int quantite) : Diminue le stock du type de chocolat spécifié de la quantité demandée. Si la quantité demandée dépasse le stock disponible, lancez une exception StockInsuffisantException.
      • verifierStock(int typeChocolat) : Retourne la quantité de chocolat disponible pour le type spécifié. Si l'indice est invalide, lancez une exception IndiceInvalideException.
  4. Classe Main :
    • Dans la méthode main, créez un objet GestionStockChocolat et testez les différentes fonctionnalités.
    • Gérez les exceptions StockInsuffisantException et IndiceInvalideException en affichant des messages appropriés à l'utilisateur.

Correction attendue

// Exception personnalisée pour le stock insuffisant
class StockInsuffisantException extends Exception {
    public StockInsuffisantException(String message) {
        super(message);
    }
}

// Exception personnalisée pour un indice invalide
class IndiceInvalideException extends IndexOutOfBoundsException {
    public IndiceInvalideException(String message) {
        super(message);
    }
}

// Classe pour gérer le stock de chocolats
public class GestionStockChocolat {
    private int[] stockChocolats = new int[3];  // 0: noir, 1: au lait, 2: blanc

    public void ajouterStock(int typeChocolat, int quantite) throws IndiceInvalideException {
        if (typeChocolat < 0 || typeChocolat >= stockChocolats.length) {
            throw new IndiceInvalideException("Indice de type de chocolat invalide : " + typeChocolat);
        }
        stockChocolats[typeChocolat] += quantite;
        System.out.println("Ajouté " + quantite + " chocolats au type " + typeChocolat + ". Nouveau stock : " + stockChocolats[typeChocolat]);
    }

    public void vendreChocolat(int typeChocolat, int quantite) throws StockInsuffisantException, IndiceInvalideException {
        if (typeChocolat < 0 || typeChocolat >= stockChocolats.length) {
            throw new IndiceInvalideException("Indice de type de chocolat invalide : " + typeChocolat);
        }
        if (stockChocolats[typeChocolat] < quantite) {
            throw new StockInsuffisantException("Stock insuffisant pour le type " + typeChocolat + ". Disponible : " + stockChocolats[typeChocolat]);
        }
        stockChocolats[typeChocolat] -= quantite;
        System.out.println("Vendu " + quantite + " chocolats du type " + typeChocolat + ". Nouveau stock : " + stockChocolats[typeChocolat]);
    }

    public int verifierStock(int typeChocolat) throws IndiceInvalideException {
        if (typeChocolat < 0 || typeChocolat >= stockChocolats.length) {
            throw new IndiceInvalideException("Indice de type de chocolat invalide : " + typeChocolat);
        }
        return stockChocolats[typeChocolat];
    }

    public static void main(String[] args) {
        GestionStockChocolat gestionStock = new GestionStockChocolat();

        try {
            gestionStock.ajouterStock(0, 50);  // Ajout de 50 chocolats noirs
            gestionStock.ajouterStock(1, 30);  // Ajout de 30 chocolats au lait
            gestionStock.ajouterStock(2, 20);  // Ajout de 20 chocolats blancs

            gestionStock.vendreChocolat(0, 10);  // Vente de 10 chocolats noirs
            gestionStock.vendreChocolat(2, 25);  // Tentative de vente de 25 chocolats blancs (déclenche une exception)

            System.out.println("Stock de chocolat noir : " + gestionStock.verifierStock(0));
            System.out.println("Stock de chocolat au lait : " + gestionStock.verifierStock(1));
            System.out.println("Stock de chocolat blanc : " + gestionStock.verifierStock(2));

            gestionStock.ajouterStock(3, 10);  // Tentative d'accès à un indice invalide (déclenche une exception)
        } catch (StockInsuffisantException e) {
            System.out.println("Erreur : " + e.getMessage());
        } catch (IndiceInvalideException e) {
            System.out.println("Erreur : " + e.getMessage());
        }
    }
}
                

Explications : StockInsuffisantException : Cette exception est levée lorsqu'une tentative de vente est faite avec une quantité supérieure au stock disponible pour le type de chocolat donné. IndiceInvalideException : Cette exception est levée lorsque l'indice fourni pour le type de chocolat est hors des limites du tableau, c'est-à-dire n'est pas compris entre 0 et 2. GestionStockChocolat : Cette classe gère le stock de trois types de chocolats. Elle offre des méthodes pour ajouter au stock, vendre des chocolats, et vérifier le stock disponible. Les exceptions sont levées lorsque des erreurs liées au stock ou aux indices se produisent. main : Dans cette méthode, des exemples concrets sont donnés pour tester les fonctionnalités de gestion de stock, ainsi que la gestion des exceptions. Les exceptions sont capturées et gérées, et des messages d'erreur appropriés sont affichés.

Si vous avez trouvé les exercices corrigés en Java de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 652027193 | Réaliser Par Joël_Yk

Bouton Vert Citron Scintillant PLUS D'EXERCICES
Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam