User Tools

Site Tools


2015_2016:s2:td:td_classes-code-avancees

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
2015_2016:s2:td:td_classes-code-avancees [2016/03/05 18:10] – [Votre application : SpyMe] blay2015_2016:s2:td:td_classes-code-avancees [2016/03/11 16:09] (current) – [Questions] bain
Line 22: Line 22:
    - Codez-les.    - Codez-les.
  
 +<note warning>Comme vu en cours ce matin, conclusion du cours, IL N'Y A PAS D'ATTRIBUTS ''DEPART'' et ''ARRIVEE'' dans le modèle de la classe CHEMIN</note>
 <note important>Dans cet exercice, faîtes particulièrement attention aux rôles et à la navigation dans les associations. <note important>Dans cet exercice, faîtes particulièrement attention aux rôles et à la navigation dans les associations.
 </note> </note>
Line 52: Line 53:
        * Un internaute peut s'inscrire  à l'application en utilisant son compte facebook ou twitter ou un formulaire dédié.        * Un internaute peut s'inscrire  à l'application en utilisant son compte facebook ou twitter ou un formulaire dédié.
        * Un membre peut enregistrer son parcours :         * Un membre peut enregistrer son parcours : 
-                - il déclare sur son téléphone qu'il commence à enregistrer un parcours, +                - il déclare sur son téléphone qu'il commence à enregistrer un parcours; 
-                -  toutes les 10 secondes, un nouveau point est automatiquement créé en demandant au GPS du téléphone la position avec l'heure associée, le point est ajouté au parcours en cours, +                - toutes les 10 secondes, un nouveau point est automatiquement créé en demandant au GPS du téléphone sa position et l'heure actuelle; le point est ajouté au parcours en cours; Les coordonnées GPS sont des coordonnées sur une sphère et pas des coordonnées cartésiennescependant dans le cadre de ce TD, travaillez "simplement" avec des coordonnées cartésiennes; 
-                - il signale la fin du parcours qui est automatiquement enregistré dans notre base de parcours. +                - le membre signale la fin du parcours qui est automatiquement enregistré dans sa base de parcours. 
-       un membre peut visualiser les parcours passés : par la distance parcourue, la durée, la vitesse moyenne, la date (jour et heure), le type d'entrainement, ...+       Un membre peut visualiser les parcours passés : par la distance parcourue, la durée, la vitesse moyenne, la date (jour et heure), le type d'entrainement, ...  
 +       * En sélectionnant un parcours, un membre peut visualiser un parcours en utilisant googleMAP.
        * Un membre peut préciser qu'il veut enregistrer un parcours d'entrainement; dans ce cas, avant le départ, il précise le mode d'entrainement. Pour chaque mode, un temps de relevé des points différent est prévu : marche rapide (2mn), course à pied (10s), vélos (5s), foot (10s), ...        * Un membre peut préciser qu'il veut enregistrer un parcours d'entrainement; dans ce cas, avant le départ, il précise le mode d'entrainement. Pour chaque mode, un temps de relevé des points différent est prévu : marche rapide (2mn), course à pied (10s), vélos (5s), foot (10s), ...
        * Un membre peut créer son propre mode d'entrainement en précisant les temps de consultation etc.        * Un membre peut créer son propre mode d'entrainement en précisant les temps de consultation etc.
-       * Un membre qui a précisé son compte twitter, peut demander en début de parcours, que chaque relevé de point soit automatiquement twitter avec le message "Je suis en position ...".+       * Un membre qui a précisé son compte twitter, peut demander en début de parcours, que chaque relevé de point soit automatiquement "tweetté" avec le message "Je suis en position ...".
  
-=== Questions  === + 
-Evidemment vous commencez par identifier les cas d'utilisation de haut niveau. Mais ensuite vous pouvez travailler sur tous les points en "même temps".+Pouvez-vous étendre votre application pour donner la vitesse moyenne entre deux points donnés d'un parcours?  
 + 
 +==== Questions  ==== 
 +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
-  * "Prévoyez" les tests correspondant aux scénarii suivants (soit dans l'outil, soit sur papier en +  * "Prévoyez" les tests correspondant aux scénarii suivants (soit dans l'outil, soit sur papier
       -  "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.        -  "Bipbip" demande l'enregistrement de son parcours lundi. 
       -  "Bipbip" demande également l'enregistrement de son parcours et précise qu'il s'agit d'un entrainement à la course.       -  "Bipbip" demande également l'enregistrement de son parcours et précise qu'il s'agit d'un entrainement à la course.
-      - "Bipbip" demande à voir ses parcours triés par la durée : il a courru lundi pendant 20mn et mercredi 30mn. +      - "Bipbip" demande à voir ses parcours triés par la durée : il a couru lundi pendant 20mn et mercredi 30mn. 
       - "Bipbip" demande à voir ses parcours triés par la vitesse moyenne: il a courru lundi à 11km/h et mercredi 10km/h.        - "Bipbip" demande à voir ses parcours triés par la vitesse moyenne: il a courru 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.
Line 76: Line 81:
  
  
-=== Pour vous aider  ===+==== Pour vous aider  ====
  
-== Si vous avez du mal à identifier les "objets" de l'application ... ==+=== Si vous avez du mal à identifier les "objets" de l'application ... ===
  
 {{ :2015_2016:s2:td:courseapiedpk.scenariopointdevuepartiel.jpg?direct&200 |}} {{ :2015_2016:s2:td:courseapiedpk.scenariopointdevuepartiel.jpg?direct&200 |}}
  
 +    * Avez-vous besoin d'information supplémentaires sur la notion de Point? Comment faire? 
 +    * De quelles informations avez-vous besoin pour construire un Parcours?
 +    * 
  
-== Gestion du temps ==+== Obtenir le moment présent == 
 + 
 +<code java> 
 +import java.util.Date; 
 +................ 
 + //obtenir la date courante 
 + Date date = new Date(); 
 +</code> 
 + 
 +=== Gestion du temps ===
  
 Si vous voulez représenter la gestion du temps (mais vous pouvez vous en passer), voici une approche très simple :  Si vous voulez représenter la gestion du temps (mais vous pouvez vous en passer), voici une approche très simple : 
Line 90: Line 107:
 </code> </code>
  
-== Saisir des entiers ou des boolean au clavier ==+=== Saisir des entiers ou des boolean au clavier ===
 <code java> <code java>
 import java.util.Scanner; import java.util.Scanner;
Line 100: Line 117:
 </code> </code>
  
-== Vision Globale  ==+=== Vision Globale  ===
  
 Attention, votre code ne correspond probablement pas à cela !! Attention, votre code ne correspond probablement pas à cela !!
 +
 <code java> <code java>
-public Parcours creerParcours() throws InterruptedException{ +public Parcours creerParcours(Membre m) throws InterruptedException{  
- Scanner sc = new Scanner(System.in); + System.out.println("Creation de parcours "); 
- PointDate pCourant = null+ ... 
- Parcours parcours = new Parcours(); + .... 
- System.out.println("On commence ? (true or false)"); +                PointDate pCourant = saisirPointDate();
- boolean encore = sc.nextBoolean();; + Parcours parcours = new Parcours(pCourant); 
- int x = 0; + boolean encore = true;
- int y = 0;+
  while (encore){  while (encore){
- System.out.println(" X "); + pCourant = saisirPointDate();
- x = sc.nextInt(); +
- System.out.println(" Y "); +
- y = sc.nextInt(); +
-     //obtenir la date courante +
-     Date date = new Date(); +
- pCourant = new PointDate(x,y,date); +
  parcours.addPoint(pCourant);  parcours.addPoint(pCourant);
 + System.out.println("Distance parcourue : " + parcours.distance());
 + System.out.println("Durée depuis le départ : " + parcours.duree() + " soit :" + parcours.duree()/1000 + " secondes" );
 + ....
  System.out.println("On continue ? (true or false)");  System.out.println("On continue ? (true or false)");
  encore = sc.nextBoolean();  encore = sc.nextBoolean();
- Thread.sleep(10000);  //1000 milliseconds is one second.+ Thread.sleep(intervalle);  //1000 milliseconds is one second.
  }  }
  return parcours;   return parcours;
  }  }
-</code>+  
 + private PointDate saisirPointDate() { 
 + PointDate pCourant; 
 + int x; 
 + int y; 
 + System.out.println(" X "); 
 + x = sc.nextInt(); 
 + System.out.println(" Y "); 
 + y = sc.nextInt(); 
 + //obtenir la date courante 
 + Date date = new Date(); 
 + pCourant = new PointDate(x,y,date); 
 + return pCourant; 
 + }
  
 +</code>
  
-<html> 
-<!-- 
-==== Faîtes tout seul! ==== 
-  
-* Vous commencerez par modéliser puis vous vous intéresserez aux codes : 
-      * Nous avons besoin de manipuler des triangles. Un triangle c'est un polygone, évidemment.  
-      * On veut pouvoir créer un triangle en donnant ses trois sommets : new Triangle (p1, p2, p3) 
-      * On veut pouvoir savoir si un triangle est équilatérale.  
-      * Pour cela vous aurez besoin de calculer la distance d'un point relativement à un autre. 
-      * On ne peut pas ajouter un point à un triangle. 
  
---!> 
-</html> 
2015_2016/s2/td/td_classes-code-avancees.1457201417.txt.gz · Last modified: 2016/03/05 18:10 by blay