This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
2015_2016:s2:td:td_classes-code-avancees [2016/03/05 19:12] blay [Votre application : SpyMe] |
2015_2016:s2:td:td_classes-code-avancees [2016/03/11 17:09] (current) bain [Questions] |
||
---|---|---|---|
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ésiennes, cependant 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 ...". |
+ | |||
+ | |||
+ | Pouvez-vous étendre votre application pour donner la vitesse moyenne entre deux points donnés d'un parcours? | ||
==== Questions ==== | ==== 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". | + | 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 82: | Line 87: | ||
{{ :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? | ||
+ | * | ||
+ | |||
+ | == Obtenir le moment présent == | ||
+ | |||
+ | <code java> | ||
+ | import java.util.Date; | ||
+ | ................ | ||
+ | //obtenir la date courante | ||
+ | Date date = new Date(); | ||
+ | </code> | ||
=== Gestion du temps === | === Gestion du temps === | ||
Line 103: | Line 120: | ||
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> | ||