User Tools

Site Tools


2014_2015:s2:td:td_classes-code

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
2014_2015:s2:td:td_classes-code [2015/04/18 08:26]
blay [Tester]
2014_2015:s2:td:td_classes-code [2015/05/01 09:56] (current)
blay [Utilisation d'une classe : Chemin et Trajet]
Line 86: Line 86:
  
 ==== Spécialisation et Enuméré (10 mn) ==== ==== Spécialisation et Enuméré (10 mn) ====
-La tondeuse a plusieurs vitesses de traction possibles : arret, lent, moyenne ​ou rapide. Il est possible de changer la vitesse de la tondeuse. Au démarrage, sa vitesse est toujours à l'​arrêt. Lorsque l'on éteint la tondeuse sa vitesse passe à arrêt.+La tondeuse a plusieurs vitesses de traction possibles : arret, lent, moyen ou rapide. Il est possible de changer la vitesse de la tondeuse. Au démarrage, sa vitesse est toujours à moyenne. Lorsque l'on éteint la tondeuse sa vitesse passe à arrêt.
   - Modifier le modèle de la classe Tondeuse pour tenir compte de cette nouvelle information. Les Vitesses sont un //​énuméré//​. Créer une //​enumeration//​ dans le modèle, lui ajouter les ''​enumerate literal''​ //arret//, ...    - Modifier le modèle de la classe Tondeuse pour tenir compte de cette nouvelle information. Les Vitesses sont un //​énuméré//​. Créer une //​enumeration//​ dans le modèle, lui ajouter les ''​enumerate literal''​ //arret//, ... 
   - Générer vos codes.   - Générer vos codes.
   - Ecrivez les codes correspondant. Pour accéder dans votre code par exemple à l'​énuméré "​arret",​ vous écrirez par exemple, ''​v = Vitesse.arret;''​   - Ecrivez les codes correspondant. Pour accéder dans votre code par exemple à l'​énuméré "​arret",​ vous écrirez par exemple, ''​v = Vitesse.arret;''​
-  - **Etendez** les tests précédents pour vérifier que vos codes font bien ce qui est attendu. Vous devez lancer TOUS les tests. Vous constatez à ce stade que la vérification de la réussite ou non des tests est plus "​longue",​ c'est pourquoi aujourd'​hui on utilise des méthodes de tests qui systématise les verifications ​et signalent spécifiquement les erreurs.+  - **Etendez** les tests précédents pour vérifier que vos codes font bien ce qui est attendu. Vous devez lancer TOUS les tests. Vous constatez à ce stade que la vérification de la réussite ou non des tests est plus "​longue",​ c'est pourquoi aujourd'​hui on utilise des méthodes de tests qui systématise les vérifications ​et signalent spécifiquement les erreurs.
  
 <code java> <code java>
Line 99: Line 99:
  //Il est possible de changer la vitesse de la tondeuse. ​  //Il est possible de changer la vitesse de la tondeuse. ​
  maTondeuse.switchOn();​  maTondeuse.switchOn();​
- System.out.println("​Vitesse de Tondeuse au démarrage ​attendue "+ Vitesse.arret +"​==>"​ + maTondeuse.getVitesse());​ + System.out.println("​Vitesse de Tondeuse au démarrage attendue "+ Vitesse.moyen +"​==>"​ + maTondeuse.getVitesse());​
- maTondeuse.setVitesse(Vitesse.moyen);​ +
- System.out.println("​Vitesse de Tondeuse ​attendue "+ Vitesse.moyen +"​==>"​ + maTondeuse.getVitesse());​+
  maTondeuse.setVitesse(Vitesse.rapide);​  maTondeuse.setVitesse(Vitesse.rapide);​
  System.out.println("​Vitesse de Tondeuse attendue "+ Vitesse.rapide +"​==>"​ + maTondeuse.getVitesse());​  System.out.println("​Vitesse de Tondeuse attendue "+ Vitesse.rapide +"​==>"​ + maTondeuse.getVitesse());​
Line 109: Line 107:
  maTondeuse.setVitesse(Vitesse.rapide);​  maTondeuse.setVitesse(Vitesse.rapide);​
  maTondeuse.switchOn();​  maTondeuse.switchOn();​
- System.out.println("​Vitesse de Tondeuse au démarrage attendue (alors que on a modifie sa vitesse "+ Vitesse.arret +"​==>"​ + maTondeuse.getVitesse());​+ System.out.println("​Vitesse de Tondeuse au démarrage attendue (alors que on a modifie sa vitesse "+ Vitesse.moyen +"​==>"​ + maTondeuse.getVitesse());​
  maTondeuse.switchOff();​  maTondeuse.switchOff();​
 </​code>​ </​code>​
   ​   ​
 <note tip>​N'​hésitez pas à ajouter des commentaires dans vos codes, ils sont conservés par le java round-trip! </​note>​ <note tip>​N'​hésitez pas à ajouter des commentaires dans vos codes, ils sont conservés par le java round-trip! </​note>​
-==== Utiliser ​ une classe ====+==== Utiliser ​ une classe ​(25mn) ​====
  
-Il  sagit  de  ​créer ​ une  représentation ​ UML  ​d’une ​ classe  ​''​Jardinier'' ​ dont  les  attributs ​ seront ​ ​le  ​prénom ​ du  ​jardinier ​ ​et ​ l’outil ​ électrique  ​quil  ​doit ​ utiliser ​ pour  travailler ​ (un  ​taille haie  ou  une  tondeuse).  ​Au  moment ​  de   sa   ​création  on   ​suppose ​  ​que ​ le  jardiner ​  n’  pas   d’outil  en  main.   ​L’outil ​ à   ​utiliser ​ sera  transmis ​ comme  argument ​ à une méthode ​''​startTravail''​(…).  ​Prévoyez ​ également ​ une  méthode ​ ''stopTravail''​(…) Quand le jardinier stoppe le travail, il ne lâche pas l'outil+Il s'agit de développer à présent un robot "​Jardinier"​. 
-  - Complétez ​ la  ​représentation ​ UML  ​des  liens  entre  les  classes.+On peut donner un outil à un jardinier, lui demander de travailler ou d'arrêter de travailler.  
 +  * Nos robots ont tous un nom qui leur est donné à la création. Il n'est pas possible de le modifier par la suite. 
 +  * Si on donne un outil au jardinier ​alors qu'il en a déjà ​un, il prend le nouvel outil et relâche l'​ancien outil. 
 +  * Si on lui demande ​de travailler sans lui avoir donné d'​outilil répond par //"​Donnez-moi un outil!"//​. S'​il ​un outil en main, il le démarre et répond par "Je démarre " suivi de la description de l'outil démarré. 
 +  * Si on lui demande d'arrêter de travailler, il répond par //"​Merci,​ la journée a été dure!"//​S'il a un outil en main, il l'arrête et le "​lâche"​. 
 + 
 +  - Donner une représentation ​ UML  ​du problème du ''​Jardinier''​.
   - Générer les codes correspondants. Si les résultas ne vous satisfont pas, corriger votre modèle. En particulier,​ vous devrez utiliser la navigation entre les classes.   - Générer les codes correspondants. Si les résultas ne vous satisfont pas, corriger votre modèle. En particulier,​ vous devrez utiliser la navigation entre les classes.
   - Compléter ​ les codes correspondants.   - Compléter ​ les codes correspondants.
-  - Ecrire un  petit  ​programme  ​principal ​ qui  teste  votre  classe ​on demande au jardinier de commencer à travailler en lui donnant ​un taille Haiequ'il démarrePuis on lui demande de s'arrêter ​de travailler. Il arrête le taille Haiepuis le relâche+  - Eventuellement par reverse-engineering,​ reconstruisez votre modèle. 
- +  - Evidemment tester votre programme. Voici un exemple de trace possible à l'​exécution des tests. 
 +<​code>​ 
 +=========================TESTS Jardinier =================== 
 +Bonjour Je suis R2-D2 : je n'ai pas d'​outil  
 +Début ​ du travail pour le jardinier : Donnez-moi un outil! 
 +On lui a donné la tondeuse : Je suis R2-D2, je tiens : Tondeuse [vitesse=arret,​ cadence=0] 
 +Debut du travail pour le jardinier : Je démarre : Tondeuse [vitesse=moyen,​ cadence=1000] 
 +Arret du travail pour le jardinier : Merci, la journée a été dure! 
 +  La tondeuse doit être à l'​arrêt ​Tondeuse [vitesse=arret,​ cadence=0] 
 + Le jardinier ​n'a plus d'​outil : Je suis R2-D2 : je n'ai pas d'​outil 
 +</​code>​ 
 + 
 +  - Et si nous voulions représenter plusieurs sortes ​de Robot, que ferions-nous?​ Et si tout robot était ​un Outil Electrique ?  
 +===== Devoir facultatif pendant les vacances ===== 
 + 
 + 
 +A présent notre robot peut utiliser un véhicule. 
 + 
 +Un ''​véhicule''​ a une ''​position''​ (XY en entier). 
 +Il peut se déplacer sur l'axe des x ou des y. 
 +Il peut être initialisé,​ ce qui le place en position (0,0). 
 + 
 +Un ''​charriot''​ est un véhicule qui se déplace d'un delta de 10 à chaque ​demande de déplacement : s'il est en (0,0), déplacer le chariot sur X l'​amène en (10,0), puis en déplacement sur XY l'​amène en (20,10). 
 + 
 +Une ''​fusee''​ est un véhicule qui se déplace d'un delta de 100 à chaque demande de déplacement. 
 + 
 +On peut donner un véhicule au robot. Il l'​initialise quand il le reçoit. 
 +On peut demander au robot de se déplacer selon un schéma donné : "​XYXX"​. Le robot déplacera alors le véhicule de X puis de Y puis de X puis de X. 
 + 
 +Quand le robot arrête ​de travailler il ramène ​le véhicule en position initiale. 
 + 
 +Voici un exemple de trace obtenue en testant ce qui est demandé. 
 + 
 +<​code>​ 
 +=========================TESTS Jardinier & Vehicule =================== 
 +===================TESTS Vehicules =================== 
 +Chariot => Vehicule [position=[0,0]] 
 +Avance sur X : Chariot => Vehicule [position=[10,​0]] 
 +Avance sur Y : Chariot => Vehicule [position=[10,​10]] 
 +Fusee => Vehicule [position=[0,​0]] 
 +Avance sur X : Fusee => Vehicule [position=[1000,​0]] 
 +Avance sur Y : Fusee => Vehicule [position=[1000,​1000]] 
 +===================TESTS jardinier & Vehicules =================== 
 +Pas de vehicule : Je suis R2-D2 : je n'ai pas d'​outil ​ je n'ai pas de vehicule  
 +Avec un charriot : Je suis R2-D2 : je n'ai pas d'​outil , j'ai ce vehicule Chariot => Vehicule [position=[0,​0]] 
 +Deplacement du jardinier en XYX, on attend (0,​0),​(10,​0) (10,10) (20,10)  
 + [0,0] 
 + [10,0] 
 + [10,10] 
 + [20,10] 
 +Debut du travail pour le jardinier : Je démarre : Tondeuse [vitesse=moyen,​ cadence=1000] 
 +Position du charriot attendue en (0,0): [0,0] 
 +Deplacement du jardinier en YYX on l'​attend en (10,20) avec la tondeuse 
 + Je suis R2-D2, je tiens : Tondeuse [vitesse=moyen,​ cadence=1000],​ j'ai ce vehicule Chariot => Vehicule [position=[10,​20]] 
 +Arret du travail pour le jardinier : Merci, la journée a été dure! 
 + Je suis R2-D2 : je n'ai pas d'​outil , j'ai ce vehicule Chariot => Vehicule [position=[0,​0]] 
 +</​code>​ 
 + 
 + 
 +<box round rgb(185,​211,​238) rgb(198,​226,​255) 95%|TD Noté facultatif: remis à votre encadreur par mail ayant pour sujet((Sans cet intitulé les rendus ne seront pas évalués!!)) "[S2] modeles : //Groupe// : //Membres du binôme//"​ avec en attachement un document contenant vos diagrammes et votre code. Le fichier des diagrammes sera nommé TP_N_NumeroduTP_NomEtudiant1_NomEtudiant2 sans compression : 8 mai 2015 23h59>  
 + 
 +{{:​omgl:​acsi:​cours7.gif|}} ​ Rendre le diagramme de classe et le code correspondant à l'​exercice,​ y compris les tests. 
 +</​box>​ 
 ===== Reverse et agrégation ===== ===== Reverse et agrégation =====
  
Line 131: Line 198:
 ==== Utilisation d'une classe : Chemin et Trajet ==== ==== Utilisation d'une classe : Chemin et Trajet ====
  
-   * On définit un chemin comme ayant un point de départ ​et un point d'​arrivée et un intitulé. +   * On définit un chemin comme ayant un point de départun point d'​arrivée et un intitulé. 
-   * Un point peut appartenir à plusieurs ​segments+   * Un point peut appartenir à plusieurs ​chemins
-   * On veut connaitre la distance que représente un chemin.+   * On veut connaitre la distance que représente un chemin ​(cfsi besoin [[http://​fr.wikipedia.org/​wiki/​Distance_entre_deux_points_sur_le_plan_cart%C3%A9sien|Calcul de distance]])
    * Un trajet est une suite ordonnée de chemins tels que le point de départ d'un chemin est le point d'​arrivée du chemin suivant.    * Un trajet est une suite ordonnée de chemins tels que le point de départ d'un chemin est le point d'​arrivée du chemin suivant.
  
-   - Modéliser les concepts de Chemin et de Trajet ​et codez les.+   - Modéliser les concepts de Chemin et de Trajet ​ 
 +   - Codez-les.
  
 ==== La classe ''​Polygone''​ ==== ==== La classe ''​Polygone''​ ====
2014_2015/s2/td/td_classes-code.1429338367.txt.gz · Last modified: 2015/04/18 08:26 by blay