User Tools

Site Tools


2018_2019:s2:td:td_classe_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
Last revision Both sides next revision
2018_2019:s2:td:td_classe_code [2019/02/16 19:26]
blay [5) Relation Bidirectionnelle]
2018_2019:s2:td:td_classe_code [2019/02/25 09:13]
blay
Line 5: Line 5:
 **Objectifs :**  **Objectifs :** 
      - Faire un lien direct entre la modélisation des classes et les codes correspondants.      - Faire un lien direct entre la modélisation des classes et les codes correspondants.
- + <note important>​Nous faisons le lien entre modèles et codes.  
-<note important>​Nous faisons le lien entre modèles et codes.  +Vous pouvez travailler les codes uniquement au niveau du papier ​(mais c'est peut-être dommage).
-Vous pouvez travailler les codes uniquement au niveau du papier.+
 Vous devez essentiellement comprendre les grands principes. Vous devez essentiellement comprendre les grands principes.
 </​note>​ </​note>​
 +
 +<alert type="​success"​ icon="​glyphicon glyphicon-time"​ dismiss="​true">​
 +TD de 4 h.\\
 +Il n'y a pas de rendus associé à ce TD, cependant il doit faire partie du carnet de bord.
 +Donc notez bien les points qui vous semblent difficiles, les remarques qu'il vous semble important de diffuser, etc.
 +</​alert>​
 +
 +
  
 ===== Je comprends ===== ===== Je comprends =====
Line 60: Line 67:
 {{:​2017_2018:​s2:​td:​engine-1attr.png?​200|}} {{:​2017_2018:​s2:​td:​engine-1attr.png?​200|}}
  
 +<​accordion ​ collapsed="​true">​ 
 +<panel icon="​glyphicon glyphicon-download" ​ title="​Les codes correspondants">​
 Le concept d'"​Engin"​ modélisé ici sous la forme d'une classe contient à présent un attribut qui permet d'​exprimer la puissance. Il sera représenté par le code suivant :  Le concept d'"​Engin"​ modélisé ici sous la forme d'une classe contient à présent un attribut qui permet d'​exprimer la puissance. Il sera représenté par le code suivant : 
  
Line 89: Line 97:
 ?> ?>
 </​code>​ </​code>​
 +
 +</​panel> ​
 +</​accordion>​
  
 === Complétons ce code === === Complétons ce code ===
  
 Pour pouvoir accéder à cet attribut nous allons à présent dans le code définir des //​accesseurs//​. Pour pouvoir accéder à cet attribut nous allons à présent dans le code définir des //​accesseurs//​.
 +
 +<​accordion ​ collapsed="​true">​
 +<panel icon="​glyphicon glyphicon-download"​ title="​Ajout des accesseurs">​
  
 Le code de la classe Engin en java devient : Le code de la classe Engin en java devient :
Line 113: Line 127:
 } }
 </​code>​ </​code>​
 +</​panel> ​
 +</​accordion>​
  
 A partir de ce code, nous pouvons à présent créer une "​instance"​ de la classe "​Engine"​ et lui affecter une puissance de 2000. A partir de ce code, nous pouvons à présent créer une "​instance"​ de la classe "​Engine"​ et lui affecter une puissance de 2000.
Line 135: Line 151:
 ==== 3) Je sais passer du modèle d'une classe avec un attribut et une méthode au code ==== ==== 3) Je sais passer du modèle d'une classe avec un attribut et une méthode au code ====
 {{:​2017_2018:​s2:​td:​engine-stop.png?​200|}} {{:​2017_2018:​s2:​td:​engine-stop.png?​200|}}
 +
 +<​accordion ​ collapsed="​true">​
 +<panel icon="​glyphicon glyphicon-download"​ title="​Les codes correspondants">​
  
 **Code généré en java** **Code généré en java**
Line 169: Line 188:
 </​code>​ </​code>​
  
 +</​panel> ​
 +</​accordion>​
 Une proposition d'​implémentation en java pour ''​stop''​ :  Une proposition d'​implémentation en java pour ''​stop''​ : 
  
Line 257: Line 278:
 {{:​2017_2018:​s2:​td:​14450576294_886eb4b940_b.jpg?​300 |}} {{:​2017_2018:​s2:​td:​14450576294_886eb4b940_b.jpg?​300 |}}
 {{:​2017_2018:​s2:​td:​capture_d_e_cran_2018-02-11_a_01.14.10.png?​500|}} {{:​2017_2018:​s2:​td:​capture_d_e_cran_2018-02-11_a_01.14.10.png?​500|}}
 +
 +<​accordion ​ collapsed="​true">​
 +<panel icon="​glyphicon glyphicon-download"​ title="​Les codes correspondants">​
 +
  
 **Code java correspondant ** **Code java correspondant **
Line 291: Line 316:
 </​code>​ </​code>​
  
 +</​panel>​  
 +</​accordion>​
  
 Complétons la classe ''​Engine''​ pour manipuler les pilotes. Complétons la classe ''​Engine''​ pour manipuler les pilotes.
 +<​accordion ​ collapsed="​true">​
 +<panel icon="​glyphicon glyphicon-download"​ title="​Les codes correspondants">​
 +
 <code java> <code java>
 public class Engine { public class Engine {
Line 333: Line 362:
 </​code>​ </​code>​
  
 +</​panel> ​
 +</​accordion>​
 On ajoute des tests On ajoute des tests
 <code java> <code java>
Line 375: Line 406:
 La classe ''​Pilot''​ générée est donc modifiée. La classe ''​Pilot''​ générée est donc modifiée.
 Remarquez que la multiplicité de 1 cette fois-ci crée un attribut simple de type Engine Remarquez que la multiplicité de 1 cette fois-ci crée un attribut simple de type Engine
 +
 +<​accordion ​ collapsed="​true">​
 +<panel icon="​glyphicon glyphicon-download"​ title="​Les codes correspondants">​
  
 <code java> <code java>
Line 397: Line 431:
 } }
 </​code>​ </​code>​
 +</​panel> ​
 +</​accordion>​
  
 Pour tester nous ajoutons à présent l'​engin defiance comme celui conduit par l'​amiral //nammo// Pour tester nous ajoutons à présent l'​engin defiance comme celui conduit par l'​amiral //nammo//
Line 404: Line 440:
 </​code>​ </​code>​
  
-Nous décidons à présent que l'on ne veut pas que n'​importe qui affecte un engin à un pilote (on passe la méthode setDrivenEngine en Protected) et que lorsque l'on affecte un pilote à un engin alors il en devient pilote. Nous modifions nos codes comme suit.+Nous décidons à présent que l'on ne veut pas que n'​importe qui affecte un engin à un pilote (on passe la méthode setDrivenEngine en Protected) et que lorsque l'on affecte un pilote à un engin alors il en devient pilote. Nous modifions nos codes. 
 +<​accordion ​ collapsed="​true">​ 
 +<panel icon="​glyphicon glyphicon-download"​ title="​Les codes correspondants">​ 
 + 
  
 <code java> <code java>
Line 463: Line 503:
 </​code>​ </​code>​
  
- +</​panel> ​ 
 +</​accordion>​ 
 +Nous testons ce code. 
 +<code java> 
 + @Test 
 + void testSetDriver() { 
 + Engine defiance = new Engine(); 
 + Pilot nammo =  new Pilot(); 
 + defiance.addPilotAtRank(nammo,​ 0); 
 + assertEquals(defiance,​ nammo.getDrivenEngine(),"​The pilot of an engine drives it"​);​ 
 +
 +</​code>​
 Nous utilisons ce code. Nous utilisons ce code.
 <code java> <code java>
Line 478: Line 528:
  
 </​code>​ </​code>​
-===== A vous  =====+===== 6) A vous : appliquez tout seul ce qui précède ​=====
    
 {{:​2017_2018:​s2:​td:​capture_d_e_cran_2018-01-21_a_23.23.59.png?​200|}} {{:​2017_2018:​s2:​td:​capture_d_e_cran_2018-01-21_a_23.23.59.png?​200|}}
Line 504: Line 554:
    - Quel code correspond au diagramme de classe UML ci-dessus ?    - Quel code correspond au diagramme de classe UML ci-dessus ?
 */ */
-===== Je sais passer du modèle d'une relation d'​héritage au code ====+===== 7) Je sais passer du modèle d'une relation d'​héritage au code ====
  
 {{:​2017_2018:​s2:​td:​star-wars-the-old-republic-girl-warrior-lightsabers-battle-smoke-wallpaper-hd.jpg?​300 |}} {{:​2017_2018:​s2:​td:​star-wars-the-old-republic-girl-warrior-lightsabers-battle-smoke-wallpaper-hd.jpg?​300 |}}
 {{:​2017_2018:​s2:​td:​weapons.png?​400|}} {{:​2017_2018:​s2:​td:​weapons.png?​400|}}
 +
 +<​accordion ​ collapsed="​true">​
 +<panel icon="​glyphicon glyphicon-download"​ title="​Les codes correspondants au diagramme">​
  
  
Line 544: Line 597:
 </​code>​ </​code>​
  
 +</​panel> ​
 +</​accordion>​
  
 Je peux accéder au propriétaire d'une arme quelconque. Je peux accéder au propriétaire d'une arme quelconque.
Line 552: Line 607:
  excaLight.setBelongsTo(Revan);​  excaLight.setBelongsTo(Revan);​
 </​code>​ </​code>​
-===== A vous ====+===== 8) A vous ====
  
 /*  /* 
Line 563: Line 618:
    - Quel code correspond au diagramme de classe UML ci-dessus ?    - Quel code correspond au diagramme de classe UML ci-dessus ?
    - Imaginez que l'on veuille pouvoir demander à une ''​Armada''​ d'​attaquer,​ quelle méthode devez-vous ajouter?    - Imaginez que l'on veuille pouvoir demander à une ''​Armada''​ d'​attaquer,​ quelle méthode devez-vous ajouter?
 +   - <​accordion ​ collapsed="​true">​
 +<panel icon="​glyphicon glyphicon-download"​ title="​Voici le code de cette nouvelle méthode, si besoin">​
 +
    - Voici le code de cette nouvelle méthode :     - Voici le code de cette nouvelle méthode : 
 <code java> <code java>
Line 584: Line 642:
  sithArmada.attack();​  sithArmada.attack();​
 </​code>​ </​code>​
-===== Je sais passer du code au modèle =====+ 
 +</​panel>​  
 +</​accordion>​ 
 +===== 9) Je sais passer du code au modèle =====
  
 <​code>​ <​code>​
Line 629: Line 690:
  
 ===== Complétez le diagramme de séquence ===== ===== Complétez le diagramme de séquence =====
-Compléter les deux diagrammes pour introduire : +Compléter les diagrammes ​de classes et séquence ​pour introduire : 
       - les armadas attaquent. Chaque armada demande à ses engins d'​attaquer.       - les armadas attaquent. Chaque armada demande à ses engins d'​attaquer.
  
2018_2019/s2/td/td_classe_code.txt · Last modified: 2019/02/27 15:25 by blay