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;
}