User Tools

Site Tools


2013_2014:s2:td:etudedecas:etape2

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
2013_2014:s2:td:etudedecas:etape2 [2014/05/01 21:36]
blay [Principes des codes donnés]
2013_2014:s2:td:etudedecas:etape2 [2014/05/21 18:59] (current)
blay [Des codes fonctionnels]
Line 16: Line 16:
 Voici le modèle qui décrit les classes ''​FencingPiste''​ et ''​MatchInterface''​. Voici le modèle qui décrit les classes ''​FencingPiste''​ et ''​MatchInterface''​.
 {{ :​2013_2014:​s2:​td:​etudedecas:​fencingpiste.png?​nolink |}} {{ :​2013_2014:​s2:​td:​etudedecas:​fencingpiste.png?​nolink |}}
- 
-Voici le {{:​2013_2014:​s2:​td:​etudedecas:​pistepk.jar|.jar}} 
  
 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:
    * {{:​2013_2014:​s2:​td:​etudedecas:​matchinterface.html|}}    * {{:​2013_2014:​s2:​td:​etudedecas:​matchinterface.html|}}
  
-{{:​2013_2014:​s2:​td:​etudedecas:​pistepk.zip| Archive des codes livrés}} 
  
 +<box round rgb(185,​211,​238) rgb(220,​226,​255) 95%|A Faire :  >
 +  * Comprenez brièvement ces modèles et les interfaces
 +  * Pour exécuter les codes : 
 +        * Soit sous JCreator en récupérant {{:​2013_2014:​s2:​td:​etudedecas:​escrimes2t2014.zip|l'​archive}} puis   ​[[2013_2014:​s2:​td:​etudedecas:​etape2:​Jcreator|constuire un projet JCreator]]
 +        * Soit "à la main" ​
 +          - Sauvegarder le {{:​2013_2014:​s2:​td:​etudedecas:​pistepk.jar|.jar}} dans un répertoire.
 +          - Sauvegarder le {{:​2013_2014:​s2:​td:​etudedecas:​testpk.zip|.zip}} (exemple simple d'​utilisation) dans le même répertoire.
 +          - De-ziper le fichier d'​exemple : unzip testPK.zip si besoin mais un double clique devrait suffire.
 +          - Compilation de l'​implémentation de l'​interface : 
 +                 * ''​javac -cp pistePK.jar pistePK/​testPK/​Match1.java''​ ((On pourrait faire mieux en sauvegardant les fichiers .class dans un autre répertoire,​ nous visons simplement à vous conduire à comprendre les codes.))
 +           ​- ​ Compilation de la classe principale de test : 
 +                * ''​javac -cp .:​pistePK.jar pistePK/​testPK/​TestPist.java ''​
 +           ​- ​ Exécution de la classe principale de test : 
 +               * ''​java -cp .:​pistePK.jar pistePK.testPK.TestPist'' ​
 +      * 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'​avons pas la machine réelle, c'est vous qui cliquez sur addPoint.
 +          * Quand l'​arbitre pense que c'est ok, il clique sur //​Validate//​. (Ne pas oublier de relancer le chrono si besoin).
 +          * Quand le round est terminé, par //next//, l'​arbitre passe au round suivant. Chaque match se compose de 3 rounds.
 +          * Quand il n'y a plus de matchs, la "​table"​ se met en attente.
 +  * puis passez aux exercices suivants.
 +</​box>​
  
-Voici un exemple très basique d'​utilisation de ces classes et interfaces.+{{:​2013_2014:​s2:​td:​etudedecas:​pistepk.zip| Archive des codes livrés}}
  
-{{:​2013_2014:​s2:​td:​etudedecas:​match1.java|}} +{{:​2013_2014:​s2:​td:​etudedecas:​piste.zip|Certains étudiants travaillent à présent avec eclipse, alors voici les codes sous forme d’archive de projet Eclipse en 1.6.}}
-{{:​2013_2014:​s2:​td:​etudedecas:​testpist.java|}}+
  
-<box round rgb(185,​211,​238) rgb(220,​226,​255) 95%|A Faire :  > 
-Comprenez brièvement ces codes puis passez aux exercices suivants. 
-</​box>​ 
 ==== Retour sur l'​interface de Match ==== ==== Retour sur l'​interface de Match ====
  
Line 75: Line 88:
 </​code>​ </​code>​
  
-Votre code ne correspond probablement pas exactement à l'​interface de ''​MatchInterface''​.+ 
 + 
 +Votre code ne correspond probablement pas exactement à l'​interface de ''​MatchInterface''​.Vous manipulez par exemple probablement des joueurs alors qu'ici seul le nom du joueur est demandé et utilisé! Cela ne signifie pas que vous devez changer le principe de votre classe mais que vous devez ajouter et implémenter les méthodes exigées par l'​interface.
  
 Vous devez donc adapter** VOTRE CODE** (et pas l'​inverse,​ en général, on n'a pas le droit de modifier les codes fournis) pour qu'il implémente l'​interface ''​MatchInterface''​. Vous devez donc adapter** VOTRE CODE** (et pas l'​inverse,​ en général, on n'a pas le droit de modifier les codes fournis) pour qu'il implémente l'​interface ''​MatchInterface''​.
Line 83: Line 98:
 public class Match implements MatchInterface { public class Match implements MatchInterface {
 </​code>​ </​code>​
 +//Rappel : une classe qui implémente une interface doit implémenter toutes les méthodes définies par l'​interface.//​
  
 <box round rgb(185,​211,​238) rgb(220,​226,​255) 95%|A Faire :  > <box round rgb(185,​211,​238) rgb(220,​226,​255) 95%|A Faire :  >
Line 88: Line 104:
   * Tester là.   * Tester là.
 </​box>​ </​box>​
 +
 +
 ==== Approche incrémentale ==== ==== Approche incrémentale ====
  
Line 93: Line 111:
  
 <box round rgb(185,​211,​238) rgb(220,​226,​255) 95%|A Faire :  > <box round rgb(185,​211,​238) rgb(220,​226,​255) 95%|A Faire :  >
-  - Commencez par créer une piste et tester +  - Commencez par créer une piste et tester ​pour être sûr que vous allez savoir l'​intégrer dans votre propre algorithme. 
-  - Par exemple, vous pouvez reprendre les codes fournis ​pour être sûr que vous allez savoir ​l'intégrer.+  - Par exemple, vous pouvez reprendre les codes de tests fournis ​à l'étape 1 du TD, Test..
 </​box>​ </​box>​
  
-<code java> 
-  FencingPiste pist1 = new FencingPiste(1);​ 
-  FencingPiste pist2 = new FencingPiste(2);​ 
-  Match m1 = new Match();//​attention à bien mettre vos propres parametres dans les constructeurs et votre propre type "​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("​pas fini-------------------"​);​ 
-  } 
-  
-  System.out.println("​gagnant de m1" + m1.getWinner());​ 
-  System.out.println("​gagnant de m2" + m2.getWinner());​  
-  System.out.println("​gagnant de m3" + m3.getWinner());​  
-  
-/* 
- * 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 
- */ 
- ​pist1.clear();​ 
- ​Match1 m4 = new Match1(); 
- ​pist1.addMatch(m4);​ 
- ​pist1.start();​ 
-// On ferme l'​autre piste 
- ​pist2.close();​ 
-</​code>​ 
  
 ==== Intégration : Lancement d'une compétition ==== ==== Intégration : Lancement d'une compétition ====
2013_2014/s2/td/etudedecas/etape2.1398972962.txt.gz · Last modified: 2014/05/01 21:36 by blay