632.1 / P 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.Vector 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 quiest 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 (Vector).
• Chaque rayon est mémorisé dans des objets de classes Rayon. Chaque référence de rayon est
placée dans le distributeur (Vector).
• 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 (réponse
extrêmement simple).
Données
Le fichier produit par le 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, soit comme de la nourriture.
Ce type détermine si le dernier champ représente une contenance (boisson) ou un poids
(nourriture).
Structure d’un article (une ligne)
Délimiteur d’article : retour ligne "\n\r"
Délimiteur de champ : point-virgule ";"
Structure d’une ligne :
n°distributeur ; n°rayon ; n°article ; nom ; type ; description ; prix de revient ; prix vente ; contenance ou
poids
Johann SIEVERING
1/3
Version 1.0
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
Modèle
Exemple d’exécution
Traitement des arrivages (fichier : "arrivage_30-05-2011.txt")
Rapport de l'automate n° 1
Le prix max de tous les articles est : 3.7
Le bénéfice total possible est 64.2 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
Johann SIEVERING
2/3
Version 1.0
É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_30-05-2011.txt qui contient le contenu du distributeur au
30.05.2011. 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().
• Le fichier ModeleTP11.pdf est le modèle UML du distributeur.
• Ces éléments sont fournis sur le réseau en :
G:\_cours\10-11\IG\M632.1\ÉnoncésTP\P11
À 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 /**** A COMPLETER ****/ 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 /**** A COMPLETER ****/ 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.
• 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 jeudi 9 juin 2011 à 17h00 au plus tard en recopiant tout les
éléments nécessaires sur le réseau en :
G:\_cours\10-11\IG\M632.1\RedditionTP\VotreNom\P11
Johann SIEVERING
3/3
Version 1.0
Téléchargement