Travaux pratiques – Série P11

publicité
632.1 / PROGRAMMATION Travaux pratiques – Série P11 Objectifs  Mettre en œuvre les concepts de la programmation orientée objet.  Parcourir des structures de données en effectuant des traitements de leurs composants.  Implanter des méthodes répondant à un ensemble de spécifications.  Utiliser les classes java.util.ArrayList et java.util.StringTokenizer de la bibliothèque Java. Énoncé Développer une application de gestion d’un distributeur automatique d’articles (sandwich, chocolat, etc.). Il s’agit d’afficher un rapport sur le contenu d’un distributeur qui vous est fourni sous la forme d’un fichier texte. Le distributeur contient un ensemble de rayons dans lesquels les articles sont déposés. Le client choisit un rayon par son numéro et le premier article du rayon tombe dans le panier. Le remplissage du distributeur dépend des arrivages. Chaque rayon sert un même type d’articles mais ces articles peuvent être différents (le rayon sandwich peut servir des sandwiches au jambon, au salami ou au fromage). Ce qui est demandé :  Mémoriser les données du contenu du distributeur, à partir du fichier texte fourni.  Les données seront mémorisées dans des objets de classes Boisson ou Nourriture selon leur catégorie d’article. Chaque référence d’article est placée dans un rayon (ArrayList).  Chaque rayon est mémorisé dans des objets de classe Rayon. Chaque référence de rayon est placée dans le distributeur (ArrayList).  Le rapport doit présenter (voir exemple d’exécution) :  Le prix le plus élevé des articles contenu dans le distributeur ;  Le bénéfice total possible (somme des prix de « vente – prix de revient » de tous les articles) ;  Le nombre d’articles présents par rayon. S’il en reste un ou moins, afficher «À REMPLIR ».  Réfléchir à la manière d’afficher tous les rayons et tous les articles du distributeur. Données Le fichier décrivant le contenu d’un distributeur liste chaque article (un par ligne). Pour chaque article, en plus des données spécifiques à l’article, sont mentionnés le n° du distributeur et le n° du rayon. Les articles sont classifiés selon leur type soit comme une boisson (0), soit comme de la nourriture (1). Ce type détermine si le dernier champ représente une contenance (boisson) ou un poids (nourriture). Le délimiteur de lignes est "\n\r", le délimiteur de champs est ";". Structure d’une ligne : n°distributeur ; n°rayon ; n°article ; nom ; type ; description ; prix de revient ; prix vente ; contenance ou poids Exemple de données 01;06;2;eau;0;boisson;0.1;1.5;0.33 01;06;2;eau;0;boisson;0.1;1.5;0.33 01;07;14;sandwich;1;jambon;1.4;3.7;220 01;07;14;sandwich;1;jambon;1.4;3.7;220 Peter DAEHNE 1 / 3 Version 2.0 Modèle Exemple d’exécution Traitement des arrivages (fichier : "arrivage_28‐05‐2012.txt") Rapport de l'automate n°1 Le prix max de tous les articles est: 3.7 Le bénéfice total possible est: 45.5 CHF Nombre d'articles par rayon: rayon n°1 contient 2 articles rayon n°2 contient 6 articles rayon n°3 contient 2 articles rayon n°4 contient A REMPLIR rayon n°6 contient 9 articles rayon n°7 contient 6 articles rayon n°8 contient 6 articles Éléments fournis  Les fichiers contenant les classes que vous devez compléter : Article.java, Boisson.java, Nourriture.java, Rayon.java, Distributeur.java, GestionRapport.java.  Le fichier de test arrivage_28‐05‐2012.txt qui contient le contenu du distributeur au 28.05.2012. Un exemple de rapport issu de ce fichier est présenté ci‐dessus.  Le fichier FileToStr.class contient la version compilée de la classe FileToStr qui permet la lecture d’un fichier texte et sa conversion en String. Cette classe est uniquement employée dans la méthode main().  Ces éléments sont fournis sur le réseau en : G:\_cours\11‐12\IG\M632.1\ÉnoncésTP\P10 Peter DAEHNE 2 / 3 Version 2.0 À faire  Inscrivez vos nom et prénom dans les commentaires des classes.  Complétez les méthodes add(), get(), prixMax() et benefice() de la classe Distributeur en remplaçant les commentaire /*** À COMPLÉTER ***/ par du code fonctionnel. Veillez à respecter les spécifications données en commentaires.  Complétez les méthodes memoriseDistributeur() et afficheRapport() de la classe GestionRapport en remplaçant les commentaire /*** À COMPLÉTER ***/ par du code fonctionnel de telle manière à obtenir l’exemple d’exécution ci‐dessus. Veillez à respecter les spécifications données en commentaires. 
Complétez la méthode afficheDistributeur() de la classe GestionRapport.  Si nécessaire complétez les classes Article, Boisson, Nourriture, Rayon, et Distributeur avec des attributs ou des méthodes que vous jugerez nécessaires. (Ne modifiez en aucun cas les signatures des méthodes existantes). Contraintes impératives  Vous programmerez vos méthodes en respectant le modèle figurant ci‐dessus.  Vous mettrez en œuvre les concepts de la programmation orientée objet étudiés au cours.  Vous ne modifierez aucune signature des méthodes existantes.  Le code développé doit être compatible avec Java 1.4 (compilé avec l'option –source 1.4 ou, sous EditPlus, avec l'option Compilation 1.4 [Ctrl+1]) ;  Délai : ce travail est à rendre le mercredi 6 juin 2012 à 17h00 au plus tard en recopiant tous les éléments nécessaires sur le réseau en : Peter DAEHNE G:\_cours\11‐12\IG\M632.1\RedditionTP\VotreNom\P10 3 / 3 Version 2.0 
Téléchargement