User Tools

Site Tools


2016_2017:s2:td:td_domaine_partie_2

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
2016_2017:s2:td:td_domaine_partie_2 [2017/02/12 21:50]
blay [D'un diagramme de séquence au code]
2016_2017:s2:td:td_domaine_partie_2 [2018/01/21 23:22] (current)
blay [Classes : modélisation et codage]
Line 8: Line 8:
  
 <​note>​Ce TD est évalué sur toute sa durée et plus spécifiquement sur le dernier exercice.</​note>​ <​note>​Ce TD est évalué sur toute sa durée et plus spécifiquement sur le dernier exercice.</​note>​
 +
  
  
Line 38: Line 39:
  
   - Dessiner la représentation UML de cette classe.  ​   - Dessiner la représentation UML de cette classe.  ​
-  - Générer ou écrivez le code java correspondant à cette classe((Code->​Java-roundtrip .. l'​objectif est de maintenir la cohérence entre le modèle et le code)). On prévoira un constructeur qui initialise le tailleHaie dans l’état éteint, avec une cadence de 0.   Les exceptions levées dans le corps des méthodes générées permettent de signaler les méthodes encore non implémentées. Vous devez retirer les levées d'​exception en implémentant les méthodes.+  - [[http://​mbf-iut.i3s.unice.fr/​doku.php?​id=modelio#​generer_les_codes|Générer]] ou écrivez le code java correspondant à cette classe. On prévoira un constructeur qui initialise le tailleHaie dans l’état éteint, avec une cadence de 0.   Les exceptions levées dans le corps des méthodes générées permettent de signaler les méthodes encore non implémentées. Vous devez retirer les levées d'​exception en implémentant les méthodes.
   - On veut pouvoir connaître la cadence du ''​TailleHaie''​.   - On veut pouvoir connaître la cadence du ''​TailleHaie''​.
   - Tester votre code. Si vous n'avez pas encore vu la notion de Test en java vous pouvez mettre vos tests dans une classe dédiée comportant un ''​main''​ et votre test peut ressembler à ce qui suit.   - Tester votre code. Si vous n'avez pas encore vu la notion de Test en java vous pouvez mettre vos tests dans une classe dédiée comportant un ''​main''​ et votre test peut ressembler à ce qui suit.
Line 198: Line 199:
  
   - Définissez les classes et les codes associés.   - Définissez les classes et les codes associés.
 +  - Si à présent nous voulons modifier une position de delta sur l'axe des X, des Y, en diagonale, que faîtes-vous?​
 +  - Si nous voulons à présent que notre véhicule soit repéré par des coordonnées GPS ou polaires au lieu de coordonnées cartésiennes... Que devez_vous modifier? ​
 <​code>​ <​code>​
 ===================TESTS Vehicules =================== ===================TESTS Vehicules ===================
Line 209: Line 212:
  
  
-==== D'un diagramme de séquence au code (10 mn ) ==== 
  
-{{:​2016_2017:​s2:​td:​diagseq2code_2017-02-12_a_21.36.44.png?​300|}} +==== Le robot conduit le véhicule ​(20mn) ​====
- +
-Définir un code qui correspond au début de scénario ci-dessus. +
- +
- +
- +
- +
-==== Le robot conduit le véhicule ====+
 On peut donner un véhicule au robot. Il l'​initialise quand il le reçoit. 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"​((la méthode toCharArray() appliquée sur une String renvoie un tableau de "​Char"​)). ​ On peut demander au robot de se déplacer selon un schéma donné : "​XYXX"​((la méthode toCharArray() appliquée sur une String renvoie un tableau de "​Char"​)). ​
Line 242: Line 237:
 </​code>​ </​code>​
  
-==== Un robot facteur ====+==== D'un diagramme de séquence au code (10 mn) ==== 
 + 
 +{{:​2016_2017:​s2:​td:​diagseq2code_2017-02-12_a_21.36.44.png?​300|}} 
 + 
 +Définir un code qui correspond au début de scénario ci-dessus. 
 + 
 + 
 + 
 + 
 +===== Un robot facteur ​=====
  
 Nous sommes très content de notre robot jardinier. Nous sommes très content de notre robot jardinier.
Line 256: Line 260:
  
  
-=== Courrier ===+==== Courrier ​====
  
 Un courrier est défini par une adresse et un contenu. Un courrier est défini par une adresse et un contenu.
Line 269: Line 273:
 Exemple de tests et de trace :  Exemple de tests et de trace : 
 <​code>​ <​code>​
-Courrier c new Courrier("​Avenue Fabron, Nice","​Bravo ", 3); +String adresseOrigine ​= "​Avenue Fabron, Nice"
-System.out.println("​Courrier adresse illisible " + c.getAdresse());​ +Courrier mail = new Courrier(adresseOrigine,"​Bravo ", 3); 
-System.out.println("​Courrier contenu illisible " + c.getContenu());​ +System.out.println("​Courrier adresse illisible " + mail.getAdresse());​ 
 +System.out.println("​Courrier contenu illisible " + mail.getContenu());​
 </​code>​ </​code>​
 <​code>​ <​code>​
Line 282: Line 287:
 **QUESTIONS** **QUESTIONS**
   - Commencer par créer la classe ''​Encriptor''​ en recopiant "​simplement"​ le code donné plus bas.   - Commencer par créer la classe ''​Encriptor''​ en recopiant "​simplement"​ le code donné plus bas.
 +  - Regarder le code de tests de courrier : 
 +       - A quoi correspond d'​après vous le 3 ?
 +       - Pourquoi la réponse à ''​getAdresse''​ est-ce un texte crypté? ​
   - Dans l'​ordre que vous voulez, répondez à ces deux questions, et tester votre code.   - Dans l'​ordre que vous voulez, répondez à ces deux questions, et tester votre code.
       - Quel est le modèle de la classe ''​Courrier''? ​       - Quel est le modèle de la classe ''​Courrier''? ​
Line 287: Line 295:
  
  
-=== Decrypteur ===+==== Decrypteur ​====
 Pour lire le courrier il faut utiliser un décrypteur,​ c'est un outil électrique. Pour lire le courrier il faut utiliser un décrypteur,​ c'est un outil électrique.
 Quand il est allumé, si on lui présente un courrier, et on lui donne la clef, il nous donne l'​adresse en claire, sinon il renvoie l'​adresse telle que. Quand il est allumé, si on lui présente un courrier, et on lui donne la clef, il nous donne l'​adresse en claire, sinon il renvoie l'​adresse telle que.
-Donc à chaque lecture, un ''​Encryptor''​ est créé avec la clef en paramètre. 
  
 Exemple de tests et de trace :  Exemple de tests et de trace : 
 <​code>​ <​code>​
-Decrypteur decrypteur ​= new Decrypteur(); +Decryptor decryptor ​= new Decryptor(); 
-System.out.println("​pas de lecture si non demarre " + decrypteur.read(c,3)); +System.out.println("​pas de lecture si non demarre " + decryptor.readAddress(mail,3)); 
-decrypteur.switchOn();​ +decryptor.switchOn();​ 
-System.out.println("​lecture efficiente ​" +  ​decrypteur.read(c,3) + " : " +decrypteur.read(c,3).equals(origine) ); +System.out.println("​lecture efficiente " +  ​decryptor.readAddress(mail,3) + " : " + decryptor.readAddress(mail,3).equals(adresseOrigine) ); 
 </​code>​ </​code>​
  
Line 307: Line 315:
  
 **QUESTIONS** **QUESTIONS**
-  - Quelles sont les méthodes de la classe ''​Decrypteur''​ ? +  - Quelles sont les méthodes de la classe ''​Decryptor''​ ? Quelle est la relation entre ''​Decryptor''​ et ''​OutilElectrique''​ ? 
-  - Implémenter la classe ''​Decrypteur''​.+  - La classe ''​Decryptor''​a besoin de créer un ''​Encyptor''​ à chaque appel en lecture en lui passant la bonne clef. 
 +  - Implémenter la classe ''​Decryptor''​.
  
-=== Facteur ===+==== Facteur ​====
 Notre robot facteur peut  avoir un véhicule pour se déplacer et un décrypteur pour lire le courrier. Quand on lui remet un courrier, on lui donne la clef pour lire le courrier. Notre robot facteur peut  avoir un véhicule pour se déplacer et un décrypteur pour lire le courrier. Quand on lui remet un courrier, on lui donne la clef pour lire le courrier.
  
 +Exemple de tests et de trace simple: ​
 +<​code>​
 +System.out.println("​===================TESTS Facteur ==================="​);​
 +Facteur facteur = new Facteur("​Hermes"​);​
 +//Une distribution simple
 +facteur.distribue(mail,​3);​
 +String adresse = facteur.lire();​
 +System.out.println("​Je dois aller à " + adresse);
 +facteur.setVehicule(charriot);​
 +facteur.deplacer("​XXYYY"​);​
 +Courrier courrierDepose = facteur.depose();​
 +System.out.println("​Courrier"​ + courrierDepose +" deposé à l'​adresse : " + adresse );
 +System.out.println("​Je suis en  [20,30]: " + charriot.getPosition());​
 +</​code>​
 +<​code>​
 +Je dois aller à Avenue Fabron, Nice
 +CourrieroutilsPK.Courrier@511d50c0 deposé à l'​adresse : Avenue Fabron, Nice
 +Je suis en  [20,30]: [20,30]
 +Je dois aller à Avenue Fabron, Nice
 +Courrier deposé à l'​adresse : Avenue Fabron, Nice
 +Je suis en  [20,30]: [20,30]
 +</​code>​
 +
 +**QUESTIONS**
 +  - Quel est le modèle de la classe ''​Facteur''? ​
 +  - Quelles sont les méthodes que doit avoir un Facteur?
 +  - Qu'ont en commun un ''​Facteur''​ et un ''​Jardinier''?​
 +  - Implémenter la classe ''​Facteur''​
 +  - Le facteur a-t-il bien lâché le courrier une fois déposé ? Que faîtes-vous si vous demandez au facteur de lire le courrier alors qu'il n'en a plus ? Par exemple :
 +<​code> ​
 +adresse = facteur.lire();​
 +System.out.println("​Je dois aller à " + adresse);
 +</​code>​
 +<​code>​
 +Je dois aller à Rentre chez toi
 +</​code>​
 +
 +==== Facteur encore ====
 +
 +Evidemment notre facteur ne distribue pas un seul courrier.
  
 Exemple de tests et de trace :  Exemple de tests et de trace : 
 <​code>​ <​code>​
 System.out.println("​===================TESTS Facteur ==================="​);​ System.out.println("​===================TESTS Facteur ==================="​);​
 +//3 courriers sont remis à notre facteur avec pour chacun la clef pour lire leur adresse.
 Courrier c2 = new Courrier("​Petit Prince Planete","​Je veux etre ton ami ",2); Courrier c2 = new Courrier("​Petit Prince Planete","​Je veux etre ton ami ",2);
 Courrier c3 = new Courrier("​Pere Noel","​Je voudrais un robot voyageur ",5); Courrier c3 = new Courrier("​Pere Noel","​Je voudrais un robot voyageur ",5);
  
 Facteur facteur = new Facteur("​Hermes"​);​ Facteur facteur = new Facteur("​Hermes"​);​
-facteur.distribue(c,3);+facteur.distribue(mail,3);
 facteur.distribue(c2,​2);​ facteur.distribue(c2,​2);​
 facteur.distribue(c3,​2);​ facteur.distribue(c3,​2);​
Line 369: Line 419:
  
 **QUESTIONS** **QUESTIONS**
-  - Quel est le modèle de la classe ​''​Facteur''​? Qu'ont en commun un ''​Facteur''​ et un ''​Jardinier''​+  - Que devez-vous modifier pour que le ''​Facteur'' ​remplisse bien son rôle ?  
-  - Quelles sont les méthodes que doit avoir un Facteur? +  - Améliorer ​la classe ''​Facteur''​ 
-  - Implémenter ​la classe ''​Facteur''​+ 
 + 
 +==== CODES ====
  
 === Encrypteur === === Encrypteur ===
2016_2017/s2/td/td_domaine_partie_2.1486932612.txt.gz · Last modified: 2017/02/12 21:50 by blay