2013_2014:s2:td:etudedecas:etape2
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| 2013_2014:s2:td:etudedecas:etape2 [2014/05/01 19:35] – [Amorçons la suite] blay | 2013_2014:s2:td:etudedecas:etape2 [2014/05/21 16:59] (current) – [Des codes fonctionnels] blay | ||
|---|---|---|---|
| Line 16: | Line 16: | ||
| Voici le modèle qui décrit les classes '' | Voici le modèle qui décrit les classes '' | ||
| {{ : | {{ : | ||
| - | |||
| - | Voici le {{: | ||
| Voici les javadoc (tronqués pour cause de problèmes de chargement de fichier html dans cet environnement). | Voici les javadoc (tronqués pour cause de problèmes de chargement de fichier html dans cet environnement). | ||
| Line 23: | Line 21: | ||
| * {{: | * {{: | ||
| - | {{: | ||
| + | <box round rgb(185, | ||
| + | * Comprenez brièvement ces modèles et les interfaces | ||
| + | * Pour exécuter les codes : | ||
| + | * Soit sous JCreator en récupérant {{: | ||
| + | * Soit "à la main" | ||
| + | - Sauvegarder le {{: | ||
| + | - Sauvegarder le {{: | ||
| + | - De-ziper le fichier d' | ||
| + | - Compilation de l' | ||
| + | * '' | ||
| + | | ||
| + | * '' | ||
| + | | ||
| + | * '' | ||
| + | * Chaque interface représente une machine. Dès qu'il y a une différence de 5 points entre 2 joueurs dans les 3 minutes, le joueur qui a le plus marqué a gagné. Puis pendant 2mn c'est le premier qui touche qui gagne. Enfin s'il y a toujours égalité, au validate, on tire au sort. ... Pour modifier le nombre de points, comme nous n' | ||
| + | * Quand l' | ||
| + | * Quand le round est terminé, par //next//, l' | ||
| + | * Quand il n'y a plus de matchs, la " | ||
| + | * puis passez aux exercices suivants. | ||
| + | </ | ||
| - | Voici un exemple très basique d' | + | {{: |
| - | {{: | + | {{: |
| - | {{: | + | |
| - | <box round rgb(185, | ||
| - | Comprenez brièvement ces codes puis passez aux exercices suivants. | ||
| - | </ | ||
| ==== Retour sur l' | ==== Retour sur l' | ||
| Line 75: | Line 88: | ||
| </ | </ | ||
| - | Votre code ne correspond probablement pas exactement à l' | + | |
| + | |||
| + | Votre code ne correspond probablement pas exactement à l' | ||
| Vous devez donc adapter** VOTRE CODE** (et pas l' | Vous devez donc adapter** VOTRE CODE** (et pas l' | ||
| Line 83: | Line 98: | ||
| public class Match implements MatchInterface { | public class Match implements MatchInterface { | ||
| </ | </ | ||
| + | //Rappel : une classe qui implémente une interface doit implémenter toutes les méthodes définies par l' | ||
| <box round rgb(185, | <box round rgb(185, | ||
| Line 88: | Line 104: | ||
| * Tester là. | * Tester là. | ||
| </ | </ | ||
| + | |||
| + | |||
| ==== Approche incrémentale ==== | ==== Approche incrémentale ==== | ||
| Line 93: | Line 111: | ||
| <box round rgb(185, | <box round rgb(185, | ||
| - | - Commencez par créer une piste et tester | + | - Commencez par créer une piste et tester |
| - | - Par exemple, vous pouvez reprendre les codes fournis | + | - Par exemple, vous pouvez reprendre les codes de tests fournis |
| </ | </ | ||
| - | <code java> | ||
| - | FencingPiste pist1 = new FencingPiste(1); | ||
| - | FencingPiste pist2 = new FencingPiste(2); | ||
| - | Match m1 = new Match();// | ||
| - | Match m2 = new Match(); | ||
| - | Match m3 = new Match(); | ||
| - | |||
| - | pist1.addMatch(m1); | ||
| - | pist1.addMatch(m2); | ||
| - | pist2.addMatch(m3); | ||
| - | |||
| - | pist1.start(); | ||
| - | pist2.start(); | ||
| - | |||
| - | while (!(pist1.isOver() && pist2.isOver()) | ||
| - | Thread.sleep(6000); | ||
| - | System.out.println(" | ||
| - | } | ||
| - | |||
| - | System.out.println(" | ||
| - | System.out.println(" | ||
| - | System.out.println(" | ||
| - | |||
| - | /* | ||
| - | * Quand tous les matchs ont eu lieu sur toutes les pistes on re-initialise les match | ||
| - | * puis on ré-affecte les pistes. | ||
| - | * On ferme les pistes inutiles | ||
| - | */ | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | // On ferme l' | ||
| - | | ||
| - | </ | ||
| ==== Intégration : Lancement d'une compétition ==== | ==== Intégration : Lancement d'une compétition ==== | ||
| Line 144: | Line 127: | ||
| </ | </ | ||
| - | ===== Principes des codes donnés ===== | ||
| - | Diagramme de composants | ||
| - | |||
| - | Mettre en avant | ||
| - | 1) diagramme de classes | ||
| - | |||
| - | 2) | ||
| - | |||
| - | 3) Diagramme de séquence qui dit ce que vous devez faire | ||
| - | |||
| - | |||
| - | ==== Questions ==== | ||
| - | |||
| - | |||
| - | - où se trouve les codes qui valide une fin de match ((MachineControler)) ? | ||
| - | |||
| - | - Quel code devez vous modifier pour implémenter la validation conformément aux règles ci-après ? | ||
| - | |||
| - | - De quelles informations disposez-vous pour faire ces calculs? | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ===== A vous de modifier les codes ===== | ||
| - | |||
| - | Règles de validation | ||
| - | |||
| - | - Implémenter les rgles ci-après | ||
| - | |||
| - | - Vérifier que les jeux de données correspondent bien | ||
| - | |||
| - | Faire un tableau | ||
| - | |||
| - | Joueur1 Joueur2 ScoreJoueur1 ScoreJoueur2 Temps Résultat | ||
| - | |||
| - | |||
| - | Voici un jeu de tests | ||
| - | |||
| - | <code java> | ||
| - | public class MachineControllerTest { | ||
| - | public static final int THREE_MINUTES = 1000 * 60 * 3; | ||
| - | public static final int TWO_MINUTES = 1000 * 60 * 2; | ||
| - | public static final int ONE_MINUTE = 1000 * 60 ; | ||
| - | Score sleft = new Score(PlayerType.left); | ||
| - | Score sright = new Score(PlayerType.right); | ||
| - | MachineController mc = new MachineController(); | ||
| - | StateMachine stateMachineOnChrono = new StateMachine(sleft, | ||
| - | StateMachine stateMachineOnPoints= new StateMachine(sleft, | ||
| - | |||
| - | /* Des que un des joueurs a fait 5 touches et s'il y a une différence de au moins 1 touches entre les deux joueurs | ||
| - | alors il est déclaré gagnant | ||
| - | Par exemple un score de 5 pour l'un et de 3 pour l' | ||
| - | mais aussi 7 et 5 | ||
| - | par contre 5 et 4 ne suffisent pas. | ||
| - | */ | ||
| - | @Test | ||
| - | public void testValidateOnScoreForLeft() { | ||
| - | sleft.setScore(5); | ||
| - | sright.setScore(3); | ||
| - | assertEquals(PlayerType.left, | ||
| - | } | ||
| - | @Test | ||
| - | public void testValidateOnScoreForRight() { | ||
| - | sright.setScore(5); | ||
| - | sleft.setScore(3); | ||
| - | assertEquals(PlayerType.right, | ||
| - | } | ||
| - | |||
| - | @Test | ||
| - | public void testValidateFailOnScoreGap() { | ||
| - | sleft.setScore(5); | ||
| - | sright.setScore(4); | ||
| - | assertEquals(PlayerType.fail, | ||
| - | } | ||
| - | |||
| - | @Test | ||
| - | public void testValidateFailOnScoreLevel() { | ||
| - | sleft.setScore(4); | ||
| - | sright.setScore(2); | ||
| - | assertEquals(PlayerType.fail, | ||
| - | } | ||
| - | |||
| - | |||
| - | |||
| - | // VERSION SIMPLIFIEE | ||
| - | // Si aucun des joueurs n'a marqué 5 touches mais que les 3 minutes sont écoulées alors celui qui a fait le plus de touches est déclaré gagnant du round. | ||
| - | // Si les deux ont le même score, le jeux doit se prolonger 2minutes. | ||
| - | // Des que l'un des joueurs touche, il gagne. | ||
| - | // AU bout de 5minute, le gagnant est tiré au sort. | ||
| - | |||
| - | @Test | ||
| - | public void testValidateOnChronoLeft() { | ||
| - | sleft.setScore(4); | ||
| - | sright.setScore(2); | ||
| - | assertEquals(PlayerType.left, | ||
| - | } | ||
| - | |||
| - | @Test | ||
| - | public void testValidateOnChronoRight() { | ||
| - | sleft.setScore(1); | ||
| - | sright.setScore(2); | ||
| - | stateMachineOnChrono.setClockTime(THREE_MINUTES ); | ||
| - | assertEquals(PlayerType.right, | ||
| - | } | ||
| - | |||
| - | @Test | ||
| - | public void testValidateFailOnChrono() { | ||
| - | sleft.setScore(2); | ||
| - | sright.setScore(2); | ||
| - | stateMachineOnChrono.setClockTime(THREE_MINUTES + ONE_MINUTE); | ||
| - | assertEquals(PlayerType.fail, | ||
| - | } | ||
| - | |||
| - | @Test | ||
| - | public void testValidateRandomOnChrono() { | ||
| - | sleft.setScore(2); | ||
| - | sright.setScore(2); | ||
| - | stateMachineOnChrono.setClockTime(THREE_MINUTES + TWO_MINUTES); | ||
| - | assertFalse(PlayerType.fail.equals( mc.validate(stateMachineOnChrono))); | ||
| - | } | ||
| - | |||
| - | |||
| - | </ | ||
2013_2014/s2/td/etudedecas/etape2.1398972908.txt.gz · Last modified: 2014/05/01 19:35 by blay