UE Projet Logiciel Java 1.5

Transcription

UE Projet Logiciel Java 1.5
USTL Licence Informatique
2006–2007
UE Projet Logiciel
Java 1.5
Utilisez java 1.5 :
• Allez dans http://intranet.fil.univ-lille1.fr/INTRANET/LOGICIELS/java.
html et lisez la remarque concernant l’utilisation de java 5 dans les salles de TP.
• Sous Eclipse, allez dans Windows/Preferences.../Java/Installed JREs ajoutez la version
1.5 (si nécessaire) et sélectionnez la .
Exercice 1 : Enum
Q 1 . Créez le type énuméré ArcEnCiel dont les valeurs sont les couleurs de l’arc-en-ciel : rouge, orange,
jaune, vert, bleu, indigo, violet.
Q 2 . Test : créez un main qui
• si un argument est fourni (chaı̂ne de caractères), initialise une référence a de type ArcEnCiel avec
l’objet ArcEnCiel dont l’identificateur correspond à cette chaı̂ne si il existe, dans le cas contraire
ou si aucun argument n’est fourni, on initialise a avec la valeur correspondant à orange.
• initialise une référence avec la valeur qui suit a dans le type énuméré (avec violet suivi de rouge)
• affiche toutes valeurs définies dans ce type
Q 3 . Définissez un type énuméré Jour (lundi, mardi, etc.) dont les valeurs disposent d’un attribut travaille
qui indique si ce jour est ou non un jour travaillé, sa valeur est à true pour samedi et dimanche et à false
pour les autres jours.
Les valeurs de ce type disposent de deux méthodes, l’une, appelée lendemain, renvoie le jour suivant
dans la semaine, l’autre, appelée estTravaille, permet de savoir si le jour est ou non travaillé.
Q 4 . Créez un main pour tester ce type : à partir d’un nom de jour passé en paramètre (dans le même esprit que
la question 2) on affiche à partir de ce jour les 7 jours de la semaine en précisant si ils sont ou non travaillé.
Exercice 2 : java.util.Scanner
Q 1 . Ecrivez un main qui lit sur l’entrée standard une chaı̂ne qui respecte le motif suivant (Voir la documentation de next(Pattern).) :
• commence par t ou T
• est composée ensuite d’un nombre quelconque de caractères
• termine par leon
La chaı̂ne lue est alors affichée, si le motif n’est pas respecté un message l’indique.
Q 2 . Ecrivez un méthode qui demande la saisie d’un entier compris entre 0 et n (passé en paramètre) sur
l’entrée standard, si la saisie n’est pas correcte (pas un entier ou en dehors des bornes), la demande de saisie
est répétée. La méthode renvoie la valeur de l’entier accepté saisi.
NB : voir dans la javadoc de Scanner la remarque :
When a scanner throws an InputMismatchException, the scanner will
not pass the token that caused the exception, so that it may be retrieved
or skipped via some other method.
et étudiez les méthodes skip.
Q 3 . Utilisez ce qui vient d’être fait pour saisir un entier correspondant à un numéro de jour dans la semaine et
afficher le symbole représentant ce jour (ainsi pour 2 on aura l’affichage de mercredi).
Exercice 3 : Generics
Avant de commencer, récupérez les quelques fichiers fournis sur le portail. Pour les questions 2 à 5, après avoir
compléter le code des classes tel que demandé dans les exercices. Vous décommenterez les lignes précédées du
commentaire "NE COMPILE PAS", vous vérifierez alors que votre programme ne compile effectivement pas et
chercherez à comprendre pourquoi. Si il compile, c’est que la réponse à la question est incorrecte.
Q 1 . Utilisation de java.util
On considère des groupes d’étudiants. Les étudiants sont représentés par la classe Etudiant fournie et un
groupe contient une liste d’étudiants.
A chaque étudiant du groupe est associé une liste de notes (des doubles), cette information est gérée par
une Map dont les clés sont le NIP des étudiants et les valeurs les listes de notes.
On doit pouvoir ajouter un étudiant à un groupe, afficher la liste des étudiants du groupe, ajouter une note
à un étudiant du groupe à partir de son NIP (une exception est levée si l’étudiant n’est pas dans le groupe),
connaı̂tre la moyenne d’un étudiant et la moyenne du groupe, afficher la liste des étudiants avec leurs
moyennes.
Ecrivez la classe Groupe en exploitant les aspects génériques des collections et Map de la 1.5, ainsi que
les facilités de l’auto-boxing et la syntaxe “à la for each”.
Q 2 . Méthode générique
Ecrire un objet ListChoser qui possède une méthode qui :
• affiche la liste des valeurs des éléments de la liste en leur associant un numéro d’ordre, 0 correspodant
à “aucun”, 1 au premier élément de la liste, 2 au second, etc.
• demande de saisir une valeur entre 0 et le nombre d’éléments de la liste (inclus), et répète cette
demande tant que la saisie est incorrecte,
• renvoie l’élément de la liste choisi (pas son indice) ou null si 0 avait été choisi.
Dans cet exercice, la liste est évidemment typée, mais son type n’est pas connu initialement, et le type de
retour est du type des éléments de la liste. Il est donc nécessaire de rendre la méthode générique par rapport
à ce type.
Testez (vous pouvez utiliser et compléter les classes fournies, les classes de Legume et Fruit vous sont
fournies pour les tests).
Q 3 . Créez une classe au comportement similaire à la précédente mais qui ne permet de choisir que des objets
de type Legume et donc pas les Pomme.
Testez.
Q 4 . Créez une classe au comportement similaire à la précédente mais qui ne permet de choisir que des objets
de type Legume qui de plus sont Cloneable et donc pas les Rutabaga.
Testez.
Q 5 . Type générique
On s’intéresse à la modélisation de “ramasseur/poseur”. Ces êtres étranges ne peuvent ramasser ou déposer
que des objets d’un type donné. On trouve ainsi des ramasseurs de carottes (et exclusivement de carottes)
ou de choux-fleurs ou encore de pommes.
Ces êtres ne peuvent posséder qu’un seul objet du type qu’ils acceptent à la fois. Ils peuvent donc prendre
un tel objet (passer en paramètre) ou le déposer ou encore le donner à un autre ramasseur, du même type
qu’eux bien sûr. Il existe égalemetn un accesseur sur l’objet qu’il possède
Créez cette classe Ramasseur et faites des tests.
Il faut ici créer un type paramétré par le type des objets que le personnage peut ramasser, il aura un attribut
de ce type et les opérations qu’il effectue dépendent de ce type.

Documents pareils