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
Last revision Both sides next revision
2019_2020:s2:td:td8 [2020/03/04 15:38]
blay [La classe Journey (30mn)]
2019_2020:s2:td:td8 [2020/03/04 17:20]
blay [Pour vous aider]
Line 63: Line 63:
 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 74: Line 82:
       - "​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 201: Line 204:
  
 <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 247: Line 249:
 </​code>​ </​code>​
  
 +{{:​2019_2020:​s2:​td:​journey.jpg|}}
 </​panel> ​ </​panel> ​
 </​accordion>​ </​accordion>​
2019_2020/s2/td/td8.txt · Last modified: 2020/03/08 16:58 by blay