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 revision Previous revision
Next revision
Previous revision
2015_2016:s2:td:td_classes-code-avancees [2016/03/05 19:07]
blay [La classe ''Polygone'' (15mn)]
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 35: Line 36:
  
 <note tip>​Même acquis que précédemment et prise en compte des structures (Tableau, ArrayList pour représenter des "​suites"​).</​note>​ <note tip>​Même acquis que précédemment et prise en compte des structures (Tableau, ArrayList pour représenter des "​suites"​).</​note>​
-==== La classe ''​Polygone'': ​ V2 ====+==== La classe ''​Polygone'': ​ V2 (10mn) ​====
   * Pour   ​remplir ​ le   ​tableau ​ de  points, ​ on  a besoin d'​une ​ première ​ méthode ​ ''​addPoint'' ​ qui  ajoutera ​ un  point  à  ceux  déjà ​ présents.  ​   * Pour   ​remplir ​ le   ​tableau ​ de  points, ​ on  a besoin d'​une ​ première ​ méthode ​ ''​addPoint'' ​ qui  ajoutera ​ un  point  à  ceux  déjà ​ présents.  ​
   - Etendez votre modélisation de la classe ''​Polygone''​ en UML.    - Etendez votre modélisation de la classe ''​Polygone''​ en UML. 
Line 42: Line 43:
   - Que retenez-vous de cet exercice? Quand se fait le choix de la structure?   - Que retenez-vous de cet exercice? Quand se fait le choix de la structure?
  
 +<note tip>Le choix de l'​implémentation dépend de ce que l'on fait des objets.</​note>​
  
  
- +===== Votre application : SpyMe =====
-==== Votre application : SpyMe ====+
  
 <note warning>​Attention cette fois-ci, la description de l'​étude de cas n'est pas complètement structurée;​ la structure des classes en particulier exige une analyse "​globale"​ de l'​étude de cas.</​note>​ <note warning>​Attention cette fois-ci, la description de l'​étude de cas n'est pas complètement structurée;​ la structure des classes en particulier exige une analyse "​globale"​ de l'​étude de cas.</​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.1457201270.txt.gz · Last modified: 2016/03/05 19:07 by blay