• Aucun résultat trouvé

IFT1176 – TP1 – Été 2005IFT1176 – TRAVAIL PRATIQUE #1 – 10 mai 2005Parcs d’attractionsPar Michel Reid

N/A
N/A
Protected

Academic year: 2022

Partager "IFT1176 – TP1 – Été 2005IFT1176 – TRAVAIL PRATIQUE #1 – 10 mai 2005Parcs d’attractionsPar Michel Reid"

Copied!
1
0
0

Texte intégral

(1)

IFT1176 – TP1 – Été 2005

IFT1176 – TRAVAIL PRATIQUE #1 – 10 mai 2005 Parcs d’attractions

Par Michel Reid

Équipes: Le travail en équipe de deux (maximum) est permis (même encouragé). Vous ne remettez alors qu'un seul travail par équipe.

Remise : Deux remises à effectuer :

1. électronique (code et rapport : dimanche 29 mai 22h30) 2. papier (le rapport seulement, mercredi 1 juin, 18h (à l’intra)).

Conseil: N'attendez pas la semaine avant la remise pour commencer, vous n'aurez pas le temps.

But : Ce TP a pour objectif de faire une révision générale des notions apprises dans un cours de niveau -2- (IFT1170), d’utiliser les différentes collections de Java et de gérer des exceptions.

Énoncé : On se propose de gérer une banque de donnéescomposée d’informations sur des manèges ainsi que des informations sur des parcs d’attractions.

Un manège est représenté par :

 son nom,

 sa hauteur maximum (en pieds),

 sa vitesse maximum atteinte (en mph),

 son nombre maximum de passagers.

Un parc d’attraction est représenté par :

 son nom

 la ville où il est situé,

 l’état (ou province) où il est situé.

Les données pour ce TP sont réparties dans 3 fichiers différents : 1) Un fichier contenant les informations sur les parcs d’attractions

a) Chaque ligne de ce fichier contient, dans l’ordre : i) le nom du parc

ii) la ville iii) l’état

b) Ces informations sont séparées par une tabulation ‘\t’

2) Un fichier contenant les informations sur les manèges a) Chaque ligne de ce fichier contient, dans l’ordre :

i) le nom du manège ii) la hauteur

iii) la vitesse

iv) le nombre de passagers

b) Ces informations sont séparées par une tabulation ‘\t’

3) Un fichier contenant des informations sur la présence des manèges dans les parcs d’attractions

a) Chaque ligne contient le nom d’un manège et le nom d’un parc où il y a ce manège b) Ces informations sont séparées par une tabulation ‘\t’

1

(2)

Quelques exigences pour l’implémentation:

- Votre devoir doit contenir au moins les 5 classes suivantes :

o Parc : La classe qui contient le nom du parc, la ville et l’état où il est situé. Deux parcs ayant le même nom seront considérés comme égaux. Voir les commentaires des fichiers Signatures.java et Tp1.java pour les méthodes à écrire pour cette classe.

o Manege : La classe qui contient le nom du manège, la hauteur, la vitesse et le nombre de passager. Deux manèges ayant le même nom seront considérés égaux.

Voir les commentaires des fichiers Signatures.java et Tp1.java pour les méthodes à écrire pour cette classe.

o ManegeAbsentException : La classe des exceptions qui seront lancées lors de l’ajout d’un manège inexistant à un parc.

o ParcAbsentException : La classe des exceptions qui seront lancées lors de l’ajout d’un manège à un parc inexistant.

o Bdd : La classe où seront gérées les Map qui contiendront les objets Parc, les objets Manege et les relations entres eux (emplacements). Cette classe doit implémenter l’interface Signatures disponible sur le site web du cours. Vous trouverez, plus bas dans cette page, la description des services imposés par l’interface.

- Pour conserver les données (dans la classe Bdd) vous allez utiliser 2 Map:

o Une Map dont les clés seront des objets Parc et les données seront des collections d’objets Manege. Les clés seront triées en ordre croissant des noms de parcs et chaque collection de manèges conservera ceux-ci en ordre croissant des noms de manèges. Un Parc n’ayant pas de manége sera associé (partie valeur de la Map) à une collection vide.

o Une Map dont les clés seront des objets Manege et les données seront des collections d’objets Parc. Les clés seront triées en ordre croissant des noms de manèges et chaque collection de parcs conservera ceux-ci en ordre croissant des noms de parcs. Un Manege n’étant pas présent dans aucun parc sera associé (partie valeur de la Map) à une collection vide.

Vos devez définir les services (méthodes) suivants (en implémentant l’interface Signatures) :

saveBdd: permet de sauvegarder les informations de la banque de données dans trois fichiers dont les noms sont passés en argument. Les formats des fichiers sont les même que pour la lecture (voir page 1).

addParc : ajoute un Parc, passé en argument, dans la banque de données des parcs.

addManege : ajoute un Manege, passé en argument, dans la banque de données.

addManegeParc : Reçoit en arguments un nom de manège et un nom de parc, trouve dans leurs Map respective le Parc et le Manege et, si les 2 sont présents, ajoute le Parc à la collection associée à la clé Manege et ajoute le Manege à la collection associée au Parc. En cas d’absence du Manege, la méthode lance une exception

ManegeAbsentException et en cas d’absence du Parc, elle lance une exception ParcAbsentException.

2

(3)

lireBddParcs: permet de charger la banque de données des parcs à partir d'un fichier dont le nom est passé en argument. Un autre paramètre, booléen, indique si vrai ou faux, il faut remplacer la banque de données existante (s’il y a lieu) par la nouvelle. Si ce paramètre est faux, vous ajouter les nouvelles données à la banque de données existante.

o Si un Parc équivalent est déjà présent dans la Map, l’ajout doit être ignoré.

o Lors de l’ajout d’un nouveau parc dans la Map, la valeur associée sera une nouvelle collection vide.

lireBddManeges: permet de charger la banque de données des manèges à partir d'un fichier dont le nom est passé en argument. Un autre paramètre, booléen, indique si vrai ou faux, il faut remplacer la banque de données existante (s’il y a lieu) par la nouvelle. Si ce paramètre est faux, vous ajouter les nouvelles données à la banque de données

existante.

o Si un Manege équivalent est déjà présent dans la Map, l’ajout doit être ignoré.

o Lors de l’ajout d’un nouveau manège dans la Map, la valeur associée sera une nouvelle collection vide.

lireBddManegeParc : Lit les données contenues dans le fichier dont le nom est passé en paramètre et pour chaque nom de manège et nom de parc, appelle addManegeParc, si une exception correspondant à l’absence du parc ou du manège est levée, on ignore cet ajout et on passe aux manèges et parcs suivants. Comme dans le cas des 2 autres fichiers, cette méthode recevra aussi un paramètre booléen.

colManegeParc: retourne une collection contenant tous les parcs où le manège, dont le nom est passé en argument, est présent.

colParcManege: retourne une collection contenant tous les manèges présents au parc dont le nom est passé en argument.

getParc : retourne le Parc correspondant au nom passé en argument.

getManege : retourne le Manege correspondant au nom passé en argument.

colParcEtat : retourne une collection contenant tous les parcs situés dans l’état (province) passé en argument.

MapManegeEtat : retourne une Map contenant tous les parcs, et leurs manèges, situés dans l’état (province) passé en argument. S’il y a lieu, les parcs situés dans l’état mais n’ayant aucun manège doivent aussi être inclus.

toString : retourne une chaîne de caractères à afficher à l'écran contenant la liste de tous les informations sur les parcs et, pour chaque parc, la liste des informations sur les manèges présents à ce parc.

- La classe suivante vous est fournie pour tester vos 5 classes.

o Tp1 : La classe qui contient l’instance de la Bdd et qui s’occupe de tester vos classes.

Tp1 contient la méthode principale « main » du programme, vous n’avez donc pas à l’écrire. Notez que cette classe devrait vous aider à tester vos classes, mais vous pouvez modifier les tests à votre guise. Nous testerons vos programmes avec un programme de test différent de Tp1.

- Chaque fichier remis doit obligatoirement commencer par un commentaire indiquant le nom et la section des auteurs (coéquipiers).

3

(4)

Notez que vous pouvez modifier les fichiers de parcs, de manèges et d’emplacements à votre guise, dans la mesure où vous respectez le format imposé. Nous testerons votre programme avec des fichiers différents de ceux qui sont disponibles sur la page web du cours.

Remise : Il est important de noter que votre TP sera exécuté par les démonstrateurs sur une machine Windows avec le compilateur jdk (1.4.2). Si par choix vous décidez d'utiliser un autre compilateur, vérifiez que le code que vous avez produit (qui normalement fonctionne

correctement chez vous) fonctionne bien sur les ordinateurs de la DESI, avant de faire cela, assurez-vous d'abord que vous avez la bonne version de jdk, en utilisant pour cela la commande :

"java –version" devra donnée le numéro de version "1.4.2".

Après avoir fait le ménage (éviter de nous envoyer les .class) dans votre répertoire tp1,

compressez le, avec la commande "zip –r tp1.zip Tp1/" sous unix. Pour Windows, placer vous sur le répertoire en question, puis le bouton droit de la souris, puis "envoyer vers", et choisissez

"fichier compressé". Ensuite, sur frontal (qui remplace phobos et deimos), la commande pour la remise sera :

remise ift1176 tp1 tp1.zip

La procédure de remise a été décrite dans la démonstration #1.

Barème

Ce TP1 est noté sur 11 points.

- La non remise électronique (volontaire ou par erreur) est sanctionnée par la note 0.

- Aucun travail envoyé par courriel ne sera accepté

- Le rapport compte pour 3 points et votre programme pour 8 points.

- Un programme qui ne compile pas : 0/8.

- Un programme qui compile mais ne fait pas les choses prévues dans la spécification : 0/8.

- La qualité du code est importante, de plus, celui-ci doit être lisible, bien indenté et commenté.

- Pénalité de retard : 2 point par jour (déterminée selon la date et l’heure de la remise électronique)

Vous trouverez sur le site web du cours les fichiers Tp1.java, Signatures.java, parcs.txt, maneges.txt, emplacements.txt, parcs2.txt, maneges2.txt et emplacements2.txt.

En plus du code source, vous devez remettre un document, ne dépassant pas 3 pages, contenant l’analyse du problèmedont la justification des collections utilisées lors de la conception de vos programmes. Éviter de recopier l’énoncé dans votre rapport et surtout, ne « copier/coller » pas de code dans votre rapport.

Des questions à propos de ce TP?

L'adresse courriel: dift1176@iro.umontreal.ca

Pour faciliter le traitement de votre requête, inclure dans le sujet de votre courriel, au moins la chaîne: ift1176.

Évitez de nous envoyer votre code source par courriel pour dépannage, profitez plutôt des périodes de pratiques libres de Jean-François et/ou Hassan.

Notez aussi que les auxiliaires Rabah Maache et Charles Lanteigne peuvent vous dépanner durant leurs périodes de pratiques libres.

4

Références

Documents relatifs

Un périphérique d’entée permet d’entrer des informations à l’unité centrale et un périphérique de sortie permet de sortir des informations à

Compléter les coordonnées des points dans le script pour réaliser le tracer d'un rectangle ABCD de longueur 200 et de largeur 100. Complète aussi:

Epreuve Classe Examinateur Sujet n° Coef.. 1pt 9) En utilisant la fonction ci-dessus, écrire un algorithme qui demande 10 nombres à l’utilisateur en les stockant dans un

2x.. 13 4) Applique la distributivité et réduis les éventuels termes semblables.. 14 Calcule et donne le résultat sous

(Courte explication) ET correction (si nécessaire) Pas de méthode setElementAt pour ArrayList.. uneListe.set(0,

Remarque : Vous n’êtes plus tenu d’implémenter l’interface Signatures puisque vous devez réaliser vous-même la méthode main2. Vous devez ressortir TOUTES

o Les données sur un album se retrouve sur plusieurs lignes dans le fichier : sur la première ligne on trouve le nom de l’artiste, sur la seconde ligne, le titre de l’album..

Langage écrit/lecture : associer l’image des personnages de l’album et leur nom écrit.. Redonne son nom à