User Tools

Site Tools


2015_2016:s2:td:td_associations

Des modèles aux classes : focus sur les associations

La semaine du 21 mars, nous réviserons en corrigeant les examens des 2 dernières années! Mais pour cela vous devrez avoir fait vous-même l'examen, puisque vous ferez la correction!
Un rendu sous la forme d'un cahier de bord est attendu pour le 18 avril. Ce rendu vous a été annoncé dès le premier cours. Ne l'oubliez-pas! Voir ici pour le détail, dont les critères de notation.

Terminer le TD de la semaine dernière

Enoncé de la semaine dernière: Il est important d'aller au bour du précédent TD pour au moins bien visualiser l'importance d'une bonne modélisation pour aborder un problème relativement simple avant de s'intéresser à un exemple un peu plus complexe.

Un exemple un peu plus complexe

Nous allons dans ce TD nous intéresser à un exemple un peu plus complexe de classes fortement liées les unes aux autres. Attention, vous devez modéliser ce problème, l'implémenter et le tester. Vous pouvez choisir de commencer par implémenter, mais nous vous le déconseillons vivement… Le problème parait simple, mais l'est-il vraiment?

A la fin de cette feuille, vous avez quelques éléments utiles au niveau du code

On désire gérer des processus.
Un processus se définit par un suite d'étapes.

  • Démarrer le processus revient à démarrer la première étape.
  • Avancer dans le processus consiste à arrêter l'étape courante et à démarrer l'étape suivante.
  • Arrêter le processus consiste à arrêter l'étape courante et à considérer le processus comme terminé, i.e. il ne peut plus avancer, par contre on peut le redémarrer.
  • Le temps pris par un processus pour s'exécuter correspond à la somme des temps pris par chaque étape.
  1. Un modèle de processus se définit comme une suite de modèles d'étapes.
  2. Un modèle d'étape est défini par un intitulé par exemple “Aller dans le jardin magique”, un temps prévu par exemple “3s”.
  3. Le temps moyen prévu par un modèle de processus est la somme des temps prévus par chacun des modèles d'étapes.
  4. A partir d'un modèle de processus on crée un processus.
  5. A partir d'un modèle d'étape on crée un étape.
  6. Afficher une étape revient à afficher l'intitulé du modèle d'étape qui lui est associé.
  7. On peut comparer le temps réalisé par une étape avec le temps prévu.
  8. On peut comparer le temps réalisé par un processus avec le temps prévu par son modèle.
  9. On peut savoir parmi les processus correspondant à un modèle celui qui a fait le meilleur temps, c'est pour cela que nous associons le nom d'une personne à un processus.
Vous devez “deviner” les méthodes non explicitées mais pourtant absolument nécessaires.

Organisez vous comme bon vous semble pour modéliser, implémenter et tester l'ensemble de cette application!

Surtout pensez aux tests unitaires (si vous connaissez), ils sont essentiels ici pour tester chaque élément du modèle avant de les assembler.

Voici un exemple de traces correspondant à un test de validation (pas à un test unitaire!)

Voici votre défi
	Aller dans le jardin Magique en 5000s
	Trouver le trésor du Dragon en 5000s
	Tuer le dragon en 5000s
	Ramener le tresor au chateau des Neiges en 5000s
A vous de jouer
Aller dans le jardin Magique==> Taper quand fini

4081.0/5000
Trouver le trésor du Dragon==> Taper quand fini

478.0/5000
Tuer le dragon==> Taper quand fini

570.0/5000
Voici votre temps : 5129
-->5129
Meilleur temps :5129
Voulez-vous rejouer Y/N
Y
A vous de jouer
Aller dans le jardin Magique==> Taper quand fini

1652.0/5000
Trouver le trésor du Dragon==> Taper quand fini

580.0/5000
Tuer le dragon==> Taper quand fini

1447.0/5000
Voici votre temps : 3679
-->5129
-->3679
Meilleur temps :3679
Voulez-vous rejouer Y/N
Y
A vous de jouer
Aller dans le jardin Magique==> Taper quand fini

698.0/5000
Trouver le trésor du Dragon==> Taper quand fini

851.0/5000
Tuer le dragon==> Taper quand fini

992.0/5000
Voici votre temps : 2541
-->5129
-->3679
-->2541
Meilleur temps :2541
Voulez-vous rejouer Y/N

Pour vous aider, dans cette trace :

  1. d'après vous qu'est-ce qui correspond à un modèle de processus? A un modèle d'étape?
  2. Qu'est-ce qui correspond à l'exécution d'un processus? à l'exécution d'une étape?
  3. 4081.0/5000 signifie que pour exécuter l'étape il vous a fallu 4081 quand le modèle de l'étape en prévoyait 5000

Boîte à outils

Pour obtenir le temps en java :

//Pour avoir le temps courant
 long endTime = System.currentTimeMillis();
 
//Faire la différence entre deux temps!
  long tempsCourant = (endTime - startTime);
 public void testTempsProcessus() throws InterruptedException {
        long nbDeMilliSecondes = 100;
        ....
        // Attendre 
        Thread.sleep(nbDeMilliSecondes);

Pour capturer une string au clavier

 Scanner s = new Scanner(System.in);
 String str = s.nextLine();

2015_2016/s2/td/td_associations.txt · Last modified: 2016/03/13 13:36 by blay