Programmation Java
Master M2 TTT --- Examen 4 février 2008
2 heures
Exercice n° 1
- Écrire une classe Date qui permet de stocker
une date sous forme de trois entiers (jour, mois et année).
Cette classe dispose d'un constructeur qui prend en entrée une
chaîne de caractères de la forme "04/02/2008" et stocke
la date en supposant qu'elle est représentée sous la forme jj/mm/aaaa. Écrire ce constructeur (on ne vérifiera pas que la date
est valide, mais juste que le format est respecté).
- Écrire une méthode
int compareTo(Date d);
de la classe Date qui renvoie 0
en cas d'égalité des deux dates,
-1 si la première est strictement plus petite et 1 sinon.
- Déclarer un champ statique month de telle sorte que month[i]
soit le nom du mois numéro i. On dira que month[0] est une
chaîne vide.
Définir une méthode toString pour la classe Date qui
permet de convertir une date en chaîne de la forme "4 février 2008".
- Définir un classe Time qui, en plus du jour, stocke l'heure,
les minutes et les secondes; écrire cette classe de sorte à ne pas
avoir à redéfinir ce qui est déjà défini dans Date. Écrire la méthode
toString de cette classe.
Exercice n° 2
On considère un jeu de rôle dans lequel les personnages sont
caractérisés par leur nom et certaines aptitudes (force, vie, vitesse)
évaluées par un entier.
- Écrire une interface Avatar qui déclare des méthodes
getName, getStrength, getLife et getSpeed
qui permettent d'accéder aux caractéristiques d'un personnage.
- Écrire complètement une classe BasicAvatar qui implémente
Avatar. Le constructeur de cette classe prend en argument le nom
du personnage ainsi qu'un tableau indiquant quelles sont ses
aptitudes. On désire qu'après la création du personnage, la valeur de
ses aptitudes ne puissent pas être modifiées.
- Au cours du jeu, les aptitudes du personnages peuvent évoluer et
ne reste pas forcément au niveau initial, alors que son nom de change pas.
Un personnage au cours d'une partie sera représenté par un objet de type PlayAvatar, implémentant Avatar. Un objet de type PlayAvatar est forcément relié à un objet BasicAvatar qui contient les
caractéristiques de base du personnage. Par ailleurs cette classe
contient des méthodes increaseStrength, increaseLife, increaseSpeed qui permettent de modifier les aptitudes du personnage
(les augmenter si on applique un entier positif, les diminuer si on
applique un entier négatif) ainsi qu'une méthode reset qui
permet de remettre les aptitudes du personnage au niveau initial.
Écrire complètement la classe PlayAvatar, avec un seul
constructeur dont le ou les arguments éventuels sont raisonnables.
- On désire maintenant pouvoir charger un ensemble de personnages
à partir d'un fichier. Pour celà, on veut rajouter dans la classe
BasicAvatar une méthode statique loadAvatars qui prend en
argument le nom d'un fichier et retourne un tableau constitué d'avatars.
La structure de ce fichier est la suivante:
la première ligne contient le nombre de personnages stockés dans le
fichier,
chaque ligne suivante contient le nom du personnage suivi de trois
entiers indiquant sa force, ses points de vie et sa vitesse. Écrire
cette méthode.
Sylvain Lombardy