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 10:24]
blay [Association orientée : Multiplicité 1]
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 **
  
 +<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>​
  
 +<note warning>​Un rendu sous la forme d'un cahier de bord est attendu pour le 12 juin. Ce 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>​
  
 +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'​**é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. ​
 +
 +A partir d'un modèle de processus on crée un processus. ​
 +A partir d'un modèle d'​étape on crée un étape.
 +
 +Afficher une étape revient à afficher l'​intitulé du modèle d'​étape qui lui est associé. ​
 +On peut comparer le temps réalisé par une étape avec le temps prévu.
 +On peut comparer le temps réalisé par un processus avec le temps prévu par son modèle.
 +
 +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. ​
 +
 +
 +<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
 +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
 +
 +</​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>​
 +<!--
 ===== Code et associations "​simples"​ ===== ===== Code et associations "​simples"​ =====
  
Line 84: 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 104: 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 117: Line 238:
    - Implémentez?​    - Implémentez?​
  
---!> +
-</​html>​+
  
  
Line 134: Line 254:
  
 </​box>​ </​box>​
 +--!>
 +</​html>​
2014_2015/s2/td/td_associations.1430468656.txt.gz · Last modified: 2015/05/01 10:24 by blay