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
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/27 15:25] (current)
blay [Des modèles aux codes et vis-versa]
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>​
 +
 +
 +<note tip>​**ObjectAid**
 +sous Install new software > add > http://​www.objectaid.com/​update/​current ...
 +
 +Puis après avoir relancé Eclipse, sous New > Other > Object Aid..> Classes .... ensuite vous posé simplement les classes à visualiser sur votre diagramme.
 +</​note>​
 ===== Je comprends ===== ===== Je comprends =====
  
Line 60: Line 71:
 {{:​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 101:
 ?> ?>
 </​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 131:
 } }
 </​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 155:
 ==== 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 192:
 </​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 282:
 {{:​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 320:
 </​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 366:
 </​code>​ </​code>​
  
 +</​panel> ​
 +</​accordion>​
 On ajoute des tests On ajoute des tests
 <code java> <code java>
Line 375: Line 410:
 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 435:
 } }
 </​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 444:
 </​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 507:
 </​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 532:
  
 </​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 558:
    - 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 601:
 </​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 611:
  excaLight.setBelongsTo(Revan);​  excaLight.setBelongsTo(Revan);​
 </​code>​ </​code>​
-===== A vous ====+===== 8) A vous ====
  
 /*  /* 
Line 563: Line 622:
    - 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 646:
  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 694:
  
 ===== 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.1550341582.txt.gz · Last modified: 2019/02/16 19:26 by blay