Programmation Java

Master M2 TTT --- Examen 4 février 2008

2 heures


Exercice n° 1

  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é).

  2. É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.

  3. 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".

  4. 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.

  1. É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.
  2. É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.
  3. 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.
  4. 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