User Tools

Site Tools


2014_2015:s2:td:td_associations

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
2014_2015:s2:td:td_associations [2015/05/01 16:52]
blay
2014_2015:s2:td:td_associations [2015/05/13 16:09] (current)
blay
Line 1: Line 1:
 ====== Des modèles aux classes : focus sur les associations ====== ====== Des modèles aux classes : focus sur les associations ======
 +**Deux séances pour ce TD **
  
-Nous allons dans ce TD nous intéresser à un exemple un peu plus complexe ​de classes fortement liées les unes aux autres.+<note warning>​**La semaine du 1 juin, nous réviserons en corrigeant l'​examen ​de l'an dernier! Mais pour cela vous devrez avoir fait vous-même l'​examen,​ puisque vous ferez la correction! **</​note>​
  
-On désire gérer des processus.+<note warning>​Un rendu sous la forme d'un cahier de bord est attendu pour le 12 juinCe rendu vous a été annoncé dès le premier cours. Ne l'​oubliez-pas! Voir [[https://​mbf-iut.i3s.unice.fr/​doku.php?​id=2014_2015:​s2:​start#​notations|ici]] pour le détail. </​note>​
  
-Un processus se définit par un suite d'​étapes. +Nous allons ​dans ce TD nous intéresser ​à un exemple un peu plus complexe de classes fortement liées les unes aux autresAttention, vous devez modéliser ce problème, ​l'implémenter ​et le tester. 
-  * //Démarrer le processus// revient à démarrer la première étape. +Vous pouvez choisir de commencer par implémentermais nous vous le déconseillons vivement... Le problème parait simple, mais l'est-il vraiment?
-  * //​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 termine, i.e. il ne peut plus avancerpar 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.+
  
-<note tip>Vous devez "​deviner"​ les méthodes non explicitées mais pourtant absolument nécessaires sur les étapes par exemple.</​note>​ 
  
-Un modèle de processus se définit comme une suite de modèles d'​étapes. +//A la fin de cette feuille, vous avez quelques éléments utiles au niveau du code// 
-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"​.+ 
 + 
 +On désire gérer des **processus.**\\ 
 +Un processus se définit par un suite d'​**étape**s. 
 +  * //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. 
 + 
 + 
 + 
 +Un **modèle de processus** se définit comme une suite de modèles d'​étapes. 
 +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"​.
 Le temps moyen prévu par un processus est la somme des temps prévus par chacun des modèles d'​étapes. ​ Le temps moyen prévu par un processus est la somme des temps prévus par chacun des modèles d'​étapes. ​
  
Line 26: Line 35:
 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. ​ 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. ​
  
-Organisez vous comme bon vous semble pour modéliser l'​ensemble de cette application!+ 
 +<note tip>Vous devez "​deviner"​ les méthodes non explicitées mais pourtant absolument nécessaires sur les étapes par exemple.</​note>​ 
 + 
 + 
 +**Organisez vous comme bon vous semble pour modéliser, implémenter et tester ​l'​ensemble de cette application!** 
 + 
 + 
 +Surtout pensez aux tests unitaires, ils sont essentiels ici. 
 + 
 +Voici un exemple de traces correspondant à un test de validation (pas à un test unitaire!) 
 +<​code>​ 
 +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 
 +
 +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 
 +
 +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 
 + 
 +</​code>​ 
 + 
 +===== Boîte à outils ===== 
 + 
 +Pour obtenir le temps en java :  
 +<code java> 
 +//Pour avoir le temps courant 
 + long endTime = System.currentTimeMillis();​ 
 + 
 +//Faire la différence entre deux temps! 
 +  long tempsCourant = (endTime - startTime);​ 
 +</​code>​ 
 + 
 +<code java> 
 + ​public void testTempsProcessus() throws InterruptedException { 
 +        long nbDeMilliSecondes = 100; 
 +        .... 
 +        // Attendre  
 +        Thread.sleep(nbDeMilliSecondes);​ 
 +</​code>​ 
 + 
 +Pour capturer une string au clavier 
 + 
 +<code java> 
 + ​Scanner s = new Scanner(System.in);​ 
 + ​String str = s.nextLine();​ 
 +</​code>​ 
  
 <​html>​ <​html>​
Line 111: Line 211:
        * On veut connaitre quel est l'​enseignant responsable d'un module en fonction d'une année.        * On veut connaitre quel est l'​enseignant responsable d'un module en fonction d'une année.
  
-<​html>​ +
-<​!-- ​+
 ==== Fabriques et Propriétés statiques ==== ==== Fabriques et Propriétés statiques ====
  
Line 131: Line 230:
 <note tip>​Hasmap et chaines de caractères et fonctions d'​accès..</​note>​ <note tip>​Hasmap et chaines de caractères et fonctions d'​accès..</​note>​
  
---!> 
-</​html>​ 
  
- 
-<​html>​ 
-<​!-- ​ 
 ==== Compositions ==== ==== Compositions ====
  
Line 144: Line 238:
    - Implémentez?​    - Implémentez?​
  
---!> +
-</​html>​+
  
  
Line 162: Line 255:
 </​box>​ </​box>​
 --!> --!>
 +</​html>​
2014_2015/s2/td/td_associations.1430491922.txt.gz · Last modified: 2015/05/01 16:52 by blay