Aller au contenu

TP5 — Validation de codes produit (semaine 1)

Une entreprise utilise des codes produit normalisés. Avant d’enregistrer un produit, il faut vérifier que son code respecte plusieurs règles métier précises. Ce TP permet de manipuler les chaînes de caractères, les conditions, les sous-chaînes, les conversions et la gestion d’erreur.

Prérequis

Travail demandé

Le programme doit analyser plusieurs codes produit et indiquer s’ils sont valides ou non.

Format attendu

Chaque code doit respecter le modèle :

avec :

PRD- : préfixe obligatoire

AAAA : année comprise entre 2020 et 2030

C : catégorie autorisée parmi A, B, C

XXX : numéro séquentiel

Étapes à réaliser

  1. Préparer des codes de test

Créer un tableau de chaînes contenant plusieurs codes :

Pour faciliter le test de votre code, voici un tableau avec toutes les combinaisons possibles :

String[] codesTest = {
            "PRD-2024-A123",      // VALIDE
            "PRD-2024-B456",      // VALIDE
            "PRD-2024-C789",      // VALIDE
            "PRD-2019-A123",      // INVALIDE (année < 2020)
            "PRD-2031-A123",      // INVALIDE (année > 2030)
            "PRD-2024-D123",      // INVALIDE (catégorie D)
            "PROD-2024-A123",     // INVALIDE (mauvais préfixe)
            "PRD-2024-A12",       // INVALIDE (trop court)
            "PRD-2024-A12345",    // VALIDE (plus long OK)
            "PRD-2024",           // INVALIDE (trop court)
            "ABC-2024-A123"       // INVALIDE (mauvais préfixe)
        };
  1. Parcourir les codes

Pour chaque code, vérifier les règles dans l’ordre. Dès qu’une règle échoue : le code est considéré invalide et un message d’erreur explicite doit être affiché. Par conséquent, si un code échoue, il n’est pas nécessaire d’effectuer les vérifications qui suivent.

  1. Vérifier la longueur

Le code doit contenir entre 10 et 20 caractères.

  1. Vérifier le préfixe

Le code doit commencer par PRD-.

  1. Vérifier que l’année est comprise entre l’année 2020 et 2030

L’année doit être extraite du code puis convertie en entier. Elle doit être numérique et comprise entre 2020 et 2030

  1. Vérifier la catégorie

La catégorie doit être l’un des caractères suivants : A, B ou C

  1. Afficher les informations utiles pour les codes valides

Pour chaque code valide, afficher :

  1. Associer un libellé à la catégorie

Utiliser un switch case pour afficher :

  1. Afficher les statistiques globales (optionnelle)

À la fin du programme, afficher :

  1. Générer quelques codes valides automatiquement

Créer une génération simple à partir :

Contraintes

Coups de pouce

Pour extraire l’année : String anneeStr = code.substring(4, 8);

Pour convertir en entier : int annee = Integer.parseInt(anneeString);

Pour la conversion de l’année en entier, le plus simple est la méthode ci-dessus qui nécessite toutefois la gestion d’une exception que nous n’avons pas encore abordée (semaine 2). Donc voici le bout de code pour tester l’année en la transformant :

if (estValide && codeProduit.length() >= 8) {
				try {
					String anneeString = codeProduit.substring(4, 8);
					int annee = Integer.parseInt(anneeString);
					//int annee = (int) anneeString; // cette écriture est impossible !
					if (annee < 2020 || annee > 2030) {
						estValide = false;
						messageErreur = "Année invalide (" + annee + ", attendu 2020-2030)";
					}
				} catch (NumberFormatException e) {
					estValide = false;
					messageErreur = "Année non numérique";
				}
			}

Apparemment, l’IDE et Java ne vous demande pas d’ajouter le try/catch et du coup, les années qui contiendront autre chose que des chiffres généreront une interruption. Il toujours préférable de gérer les Exceptions pour éviter une interuption de programme !

Pour récupérer la catégorie : char categorie = code.charAt(9);

Bonus (toujours optionnel)