Programmation Java Avancée

Master M2 TTT --- Feuille n° 1

Conteneurs, Etats, Enumérations, Prototypes

On imagine un travailleur qui peut avoir trois états: content, fatigué ou en colère. On peut lui demander trois choses: travailler, se reposer ou encore donner de ses nouvelles. Les réponses à ces requêtes sont indiquées par le tableau suivant:

  Repos Travail Nouvelles
Content   Fatigué "Ça va !!"
Fatigué Content En colère "Bof"
En colère Content AngryException "Grrrr"

Exercice n° 1

Écrire une classe Travailleur contenant des méthodes correspondant à chaque requête et tester l'application d'une suite de requêtes à un travailleur. Utiliser les valeurs d'une énumération pour représenter les différents états possibles d'un travailleur.

Exercice n° 2

Modifier votre programme de manière à n'utiliser aucun test (ni if, ni switch).

Exercice n° 3

On suppose maintenant que l'on gère un grand nombre de travailleurs (une centaine, par exemple) identifiés par des numéros. On veut que deux travailleurs dans le même état soient représentés par le même objet. Modifier le programme en conséquence.

Exercice n° 4

On suppose maintenant que chaque travailleur dispose d'un certain nombres de points de contentement (5 au départ) et que les changements d'états se font selon le tableau suivant:

  Repos Travail
Content pt++ pt-- ; si pt=0 fatigué
Fatigué pt++ ; si pt=3 content pt-- ; si pt=-5 en colère
En colère pt++ ; si pt=5 content AngryException

Modifier votre code de sorte à n'avoir qu'un seul objet représentant un travailleur pour chaque état et chaque niveau de force et à ne créer un tel objet qu'en cas de nécessité.

Exercice n° 5

Plutôt que de donner un ordre à la fois, on souhaite pouvoir effectuer une suite de requêtes à l'intention d'un travailleur. Mettre à jour votre code.