User Tools

Site Tools


2019_2020:s2:td:td8

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
2019_2020:s2:td:td8 [2020/03/04 14:57]
blay [La classe Journey (30mn)]
2019_2020:s2:td:td8 [2020/03/08 16:58] (current)
blay [De la modélisation au code : FINALE]
Line 2: Line 2:
  
  
 +[[2019_2020:​s2:​td:​coorectionexamintermediaire|Corrections de l'​examen intermédiaire]]
 +
 +
 +{{:​2019_2020:​s2:​td:​exams2-mars2019.pdf|L'​examen de l'an passé}}
 ===== La classe "​Journey"​ (30mn) ===== ===== La classe "​Journey"​ (30mn) =====
  
Line 61: Line 65:
 Evidemment vous commencez par identifier les cas d'​utilisation de haut niveau. Mais ensuite vous pouvez travailler comme bon vous semble. Evidemment vous commencez par identifier les cas d'​utilisation de haut niveau. Mais ensuite vous pouvez travailler comme bon vous semble.
   * Définir le diagramme de cas d'​utilisation   * Définir le diagramme de cas d'​utilisation
-  * **Partie 1** : "Prévoyez" ​les tests correspondant aux scénarii suivants : +  ​* Définir le diagramme de classes 
 +  * Définir le diagramme de séquence correspondant à l'​enregistrement d'un parcours par un membre, vous pouvez vous aider du diagramme ci-après. ​        
 +  * Implémenter les  scénario de la partie 1 ci-après en vous aidant des codes donnés. En particulier,​ comme nous ne disposons pas du GPS dans l'​exemple donné ci-après c'est l'​utilisateur qui saisit sa position. De même comme vous ne connaissez pas encore la parallèlisation des tâches on demande à chaque relevé de position, s'il faut ou non continuer à enregistrer le parcours. 
 +  * Pouvez-vous étendre votre application pour donner la vitesse moyenne entre deux points donnés d'un parcours?  
 + 
 + 
 + * **Partie 1** : Voici des exemples très simples de tests de "validation", c'est à dire des tests qui mettent en exergue certaines des exigences client décrites ci-dessus.
       -  "​Bipbip"​ s'​inscrit en utilisant son compte "​Facebook";​       -  "​Bipbip"​ s'​inscrit en utilisant son compte "​Facebook";​
       -  "​Xavier-Bertrand"​ s'​inscrit en saisissant son nom  et déclare son compte twitter;       -  "​Xavier-Bertrand"​ s'​inscrit en saisissant son nom  et déclare son compte twitter;
-      -  "​Bipbip"​ demande l'​enregistrement de son parcours "​lundi":​ par exemple :  Journey [points=[ [date=Thu Feb 28 21:39:15 CET 2019, Point [x=5, y=5, label=domicile]], ​ [date=Thu Feb 28 21:39:16 CET 2019, Point [x=7, y=7, label=p1]], ​ [date=Thu Feb 28 21:39:17 CET 2019, Point [x=10, y=10, label=p2]],​..</​code>​ +      -  "​Bipbip"​ demande l'​enregistrement de son parcours "​lundi":​ par exemple :  ​<​code> ​Journey [points=[ [date=Thu Feb 28 21:39:15 CET 2019, Point [x=5, y=5, label=domicile]], ​ [date=Thu Feb 28 21:39:16 CET 2019, Point [x=7, y=7, label=p1]], ​ [date=Thu Feb 28 21:39:17 CET 2019, Point [x=10, y=10, label=p2]],​..</​code>​ 
-      -   "​Bipbip"​ demande quand il était près d'un point d'un parcours donné : (1) point enregistré pendant le parcours e.g. ( (7,7) -> ''​date=Thu Feb 28 21:39:16 CET 2019''​) ​ ; (2)  point le plus proche quand il était ​le plus proche ​d'un point donné ​lors d'un parcours (e.g. (12,12) -> ''​date=Thu Feb 28 21:39:17 CET 2019''​)+      -   "​Bipbip"​ demande ​//quand// il était près d'un point d'un parcours donné :  
 +                 ​- ​(1) si le point a été enregistré pendant le parcours e.g. ( (7,7) -> ''​date=Thu Feb 28 21:39:16 CET 2019''​) ​ ;  
 +                 ​- ​(2) si le point n'a pas été enregistré, ​il cherche le point le plus proche lors d'un parcours (e.g. (12,12) -> ''​date=Thu Feb 28 21:39:17 CET 2019''​)
       -"​Bipbip" ​ demande où il était à  ''​Thu Feb 28 21:39:17 CET 2019''​ : le système renvoie (12,12) etc.       -"​Bipbip" ​ demande où il était à  ''​Thu Feb 28 21:39:17 CET 2019''​ : le système renvoie (12,12) etc.
    * **Partie 2** : "​Prévoyez"​ les tests correspondant aux scénarii suivants, mais, à moins d'​être très avancés n'​allez pas au code.    * **Partie 2** : "​Prévoyez"​ les tests correspondant aux scénarii suivants, mais, à moins d'​être très avancés n'​allez pas au code.
Line 72: Line 84:
       - "​Bipbip"​ demande à voir ses parcours triés par la vitesse moyenne: il a couru lundi à 11km/h et mercredi 10km/​h. ​       - "​Bipbip"​ demande à voir ses parcours triés par la vitesse moyenne: il a couru lundi à 11km/h et mercredi 10km/​h. ​
       -  "​Xavier-Bertrand"​ déclare un nouveau mode d'​entrainement :  le Marathon, les relevés ne se font que toutes les minutes.       -  "​Xavier-Bertrand"​ déclare un nouveau mode d'​entrainement :  le Marathon, les relevés ne se font que toutes les minutes.
-  * Définir le diagramme de classes 
-  * Définir le diagramme de séquence correspondant à l'​enregistrement d'un parcours par un membre, vous pouvez vous aider du diagramme ci-après. ​       ​ 
-  * Implémenter les  scénario de la partie 1 en vous aidant des codes ci-après. En particulier,​ comme nous ne disposons pas du GPS dans l'​exemple donné ci-après c'est l'​utilisateur qui saisit sa position. De même comme vous ne connaissez pas encore la parallèlisation des tâches on demande à chaque relevé de position, s'il faut ou non continuer à enregistrer le parcours. 
-  * Pouvez-vous étendre votre application pour donner la vitesse moyenne entre deux points donnés d'un parcours? ​ 
- 
  
 ==== Pour vous aider  ==== ==== Pour vous aider  ====
Line 199: Line 206:
  
 <code java> <code java>
-@Test +void testClosestPoint() throws InterruptedException {
- void testClosestPoint() throws InterruptedException {+
  Date currentDate1 = new Date();  Date currentDate1 = new Date();
- DatedPoint currentPoint1 = new DatedPoint(5,​5,​currentDate1) ;​+ DatedPoint currentPoint1 = new DatedPoint(5,​5,​currentDate1,"​domicile"​) ;
  Thread.sleep(1000); ​  Thread.sleep(1000); ​
  Date currentDate2 = new Date();  Date currentDate2 = new Date();
- DatedPoint currentPoint2 = new DatedPoint(7,​7,​currentDate2) ;​+ DatedPoint currentPoint2 = new DatedPoint(7,​7,​currentDate2,"​p1"​) ;
  Thread.sleep(1000); ​  Thread.sleep(1000); ​
- DatedPoint currentPoint3 = new DatedPoint(10,​10,​new Date()) ;+ DatedPoint currentPoint3 = new DatedPoint(10,​10,​new Date(),"​p2"​) ;
  Thread.sleep(1000); ​  Thread.sleep(1000); ​
- Date currentDate3 = new Date(); 
  Journey path = new Journey(currentPoint1);​  Journey path = new Journey(currentPoint1);​
  path.addPoint(currentPoint2);​  path.addPoint(currentPoint2);​
  path.addPoint(currentPoint3);​  path.addPoint(currentPoint3);​
 + System.out.println(path);​
  assertEquals(currentPoint1.getDate(),​ path.whenWasYouHere(currentPoint1));​  assertEquals(currentPoint1.getDate(),​ path.whenWasYouHere(currentPoint1));​
  assertEquals(currentPoint2.getDate(),​ path.whenWasYouHere(currentPoint2));​  assertEquals(currentPoint2.getDate(),​ path.whenWasYouHere(currentPoint2));​
  assertEquals(currentPoint3.getDate(),​ path.whenWasYouHere(currentPoint3));​  assertEquals(currentPoint3.getDate(),​ path.whenWasYouHere(currentPoint3));​
- assertEquals(currentPoint3.getDate(),​ path.whenWasYouHere(new ​DatedPoint(12,12,new Date()))); + assertEquals(currentPoint3.getDate(),​ path.whenWasYouHere(new ​Point(12,​12)));​ 
- assertEquals(currentPoint1.getDate(),​ path.whenWasYouHere(new ​DatedPoint(4,4,new Date()))); + assertEquals(currentPoint1.getDate(),​ path.whenWasYouHere(new ​Point(4,4))); 
- assertEquals(currentPoint2.getDate(),​ path.whenWasYouHere(new ​DatedPoint(8,8,new Date())));+ assertEquals(currentPoint2.getDate(),​ path.whenWasYouHere(new ​Point(8,8)));
   
  }  }
Line 245: Line 251:
 </​code>​ </​code>​
  
 +{{:​2019_2020:​s2:​td:​journey.jpg|}}
 </​panel> ​ </​panel> ​
 </​accordion>​ </​accordion>​
2019_2020/s2/td/td8.1583330220.txt.gz · Last modified: 2020/03/04 14:57 by blay