This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
2014_2015:s2:td:td_associations [2015/05/01 16:54] blay |
2014_2015:s2:td:td_associations [2015/05/01 17:58] blay [Des modèles aux classes : focus sur les associations] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Des modèles aux classes : focus sur les associations ====== | ====== Des modèles aux classes : focus sur les associations ====== | ||
+ | **Deus 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. | + | **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! ** |
- | On désire gérer des processus. | + | 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? | ||
- | 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 termine, 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. | ||
- | <note tip>Vous devez "deviner" les méthodes non explicitées mais pourtant absolument nécessaires sur les étapes par exemple.</note> | + | //A la fin de cette feuille, vous avez quelques éléments utiles au niveau du code// |
- | 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". | + | 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 33: | ||
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 | ||
+ | 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> | <html> |