TP 1 - INF2120 groupe 10 hiver 2007
Transcription
TP 1 - INF2120 groupe 10 hiver 2007
TP 1 - INF2120 automne 2009 Votre client, le Maestro Musique, veut se doter d’un système qui lui permettra de mieux gérer son inventaire de disques. Un disque possède les caractéristiques suivantes : Numéro Titre Genre Pistes Année de parution Artiste Maison de production Quantité en stock Un artiste peut être une personne avec un nom et un prénom ou un groupe d’artistes sous un nom collectif. Exemple : #12345 Achtung Baby Rock o Zoo Station o Even Better Than the Real Thing o One o Until the End of the World o Who's Gonna Ride Your Wild Horses o So Cruel o The Fly o Mysterious Ways o Tryin' to Throw Your Arms Around the World o Ultraviolet (Light My Way) o Acrobat o Love Is Blindness 1991 U2 Island Records 12 U2 est formé de Bono The Edge Adam Clayton Larry Mullen Jr Fonctions demandées Enregistrer une réception d’exemplaires de disques Le logiciel permet d’enregistrer la réception d’un lot d’exemplaires de disques. Enregistrer un nouvel album/artiste L’utilisateur peut ajouter le disque et l’artiste au catalogue. Consulter un disque Le logiciel permet à l’utilisateur de consulter le détail d’un disque par titre partiel, par titre partiel de piste, par artiste ou par numéro. Consulter un artiste Le logiciel permet à l’utilisateur de consulter un artiste ou un groupe par nom partiel. Le(s) noms sont affichés de même que la discographie de l’artiste. Modifier un disque ou un artiste Le logiciel permet de corriger une erreur ou de changer la quantité en stock. Architecture du logiciel Votre logiciel doit absolument être conçu en classes. La classe comportant le programme principal s’appellera MaestroMusique. Vous pourrez ajouter d’autres classes dans le package ca.uqam.inf2120.tp1.maestro au besoin pour gérer les fonctions d’affaire du logiciel. La classe implantant l’interface pour organiser les données s’appellera ImplantationListe et sera dans le package ca.uqam.inf2120.tp1.liste. La classe ImplantationListe implantera toutes les opérations spécifiées dans l’interface Liste , en plus d’un constructeur sans paramètres. Il est absolument défendu de modifier quoi que ce soit dans Liste. L’interface sera utilisée telle qu’elle vous est fournie lors de la correction. Votre implantation pourra être basée sur la classe ArrayList de Java. Conception détaillée et programmation Tout votre code doit être documenté en format Javadoc. Le style du code devra être fidèle à la norme spécifiée par Sun (version française http://cyberzoide.developpez.com/java/javastyle/JavaStyle.pdf) Votre code ne doit comporter aucune variable globale. Aucune boucle ne doit comporter d’instruction exit, et seules les instructions switch peuvent comporter des instructions break. disponible à Évaluation Le travail est à remettre en deux parties : Partie 1 (30 points): La classe ImplantationListe. À remettre le 20 octobre pour le groupe 20 et le 21 octobre pour le groupe 10. Critères : Qualité de l’implantation. Clarté du code. Comportement fidèle aux spécifications. Partie 2 (70 points): Le logiciel complet. À remettre le 3 novembre pour le groupe 20 et le 4 novembre pour le groupe 10. Critères : Qualité de l’implantation. Clarté du code. Respect des exigences. Structure des classes. Découpage des méthodes et utilisation des paramètres. À remettre : Votre code imprimé en format paysage dans une police non proportionnelle (comme Courier) et en version électronique (disquette, CD préférablement réinscriptible, ou clé USB) Tout retard entraîne une pénalité de 10% par jour ouvrable. L’heure de tombée est 16:00. L’heure indiquée par l’étampe du département est la seule preuve de remise qui sera considérée. Aucun travail ne sera accepté après le 23 octobre (partie 1) ni le 6 novembre (partie 2). Le travail est strictement individuel. Les règlements sur le plagiat seront strictement appliqués. À vous de vous assurer que votre code ne soit pas volé, copié ou partagé avec d’autres étudiants. Assurez-vous de conserver au moins une copie de sauvegarde, même après la remise de votre travail. package ca.uqam.inf2120.tp1.liste; /** * Module de listes pour le tp. * * @author [email protected] * @version 2009-10-06 */ public interface Liste<E> { /** * Retire tous les éléments de la liste. */ public void vider(); /** * Donne le nombre d'éléments dans la liste. * * @return Le nombre d'éléments, 0 si la liste est vide. */ public int taille(); /** * Insère un élément au début. * * @param nouveau l'élément à ajouter. Ne peut être null. * * @throws ListeException s'il y a un problème lors de l'insertion */ public void ajouterDebut(final E nouveau) throws ListeException; /** * Insère un élément à la fin. * * @param nouveau l'élément à ajouter. Ne peut être null. * * @throws ListeException s'il y a un problème lors de l'insertion */ public void ajouterFin(final E nouveau) throws ListeException; /** * Enlève un élément. * * @param element L'élément à retirer. * * @return l'élément retiré, null si l'élément ne faisait pas partie de la liste. */ public E retirer(final E element); /** * Indique si un élément est contenu dans la liste. * * @param element L'élément à rechercher. * * @return true si l'élément est dans la liste. */ public boolean contient(final E element); /** * Donne l'élément du début. * * @return L'élément en première position, null si la liste est vide. */ public E premier(); /** * Donne l'élément à la fin. * * @return L'élément en dernier, null si la liste est vide. */ public E dernier(); /** * Donne l'élément à une position donnée. * * @param position La position de l'élément à retourner (0 pour le premier). * * @return L'élément à la position spécifiée. * * @throws ListeException Lorsque la position est invalide. */ public E enieme(final int position) throws ListeException; }