User Tools

Site Tools


2017_2018: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 revisionPrevious revision
Next revision
Previous revision
2017_2018:s2:td:td_domaine_partie_2 [2018/02/18 19:07] – [Mise en facteur et Spécialisation : OutilElectrique (10mn)] blay2017_2018:s2:td:td_domaine_partie_2 [2018/03/05 16:43] (current) – [Utiliser une classe (25mn)] blay
Line 9: Line 9:
  
  
 +<callout type="info" icon="true">  
 +Il ne reste que 4 séances en tout. 
 +  * La semaine du 5 mars est consacrée à cette feuille de TD. 
 +  * La semaine du 12 mars est consacrée à des révisions pour l'examen. Vous devez les préparer pour que ces séances soient vraiment efficaces. 
 +</callout>
 ===== Classe : Code et modélisation ===== ===== Classe : Code et modélisation =====
 <note tip> <note tip>
Line 19: Line 23:
  
 <note>Exercices inspirés de http://www.fresnel.fr/perso/derrode/index.html (le site a disparu... et je n'en trouve plus trace...)</note> <note>Exercices inspirés de http://www.fresnel.fr/perso/derrode/index.html (le site a disparu... et je n'en trouve plus trace...)</note>
 +
 +<note warning>Vous rencontrez beaucoup de soucis avec Modelio. \\
 +Vous pouvez faire ce TD sur papier mais il vous manquera la génération des codes et le reverse-engineering des codes aux modèles. Vous devez alors voir précisément avec votre enseignant.\\
 +L'outil VisualParadigm est beaucoup plus stable. Cependant il vous faut la version de test professionnelle pour avoir le générateur de codes.Vous l'aurez au moins jusqu'à la fin du module.
 +</note>
 <html> <html>
 <!--  <!-- 
Line 30: Line 39:
 --!> --!>
 </html> </html>
-==== Classe ''TailleHaie'' (10mn) ====+==== Classe ''TailleHaie'' (20mn) ====
  
  
Line 117: Line 126:
 } }
 </code> </code>
-<note important> Maintenez le modèle et le code en cohérence((Code -> Java Round-trip)) .</note> +<note important> Maintenez le modèle et le code en cohérence((si outil : Code -> Java Round-trip)) .</note> 
-==== Classe ''Tondeuse'' (5mn) ====+==== Classe ''Tondeuse'' (10mn) ====
  
-Sur  le  même  modèle,  une  tondeuse  est  caractérisée  par  la  vitesse  de  rotation  de  sa  lame,  +Sur  le  même  modèle,  une  tondeuse  est  caractérisée  par   
-typiquement 1000 Tour/minute. On prévoira   +    * la  vitesse  de  rotation  de  sa  lame,  typiquement 1000 Tour/minute
-    * switchOn()+: méthode qui allume l’outil et fixe la cadence à 1000+    * une cadence; 
 +    * switchOn()+: méthode qui allume l’outil et fixe la cadence à 1000;
     * switchOff()+: méthode qui éteint l’outil et fixe la cadence à 0.      * switchOff()+: méthode qui éteint l’outil et fixe la cadence à 0. 
  
Line 145: Line 155:
    
   - Mettez en facteur les éléments qui peuvent l'être dans la modélisation UML en ajoutant une classe ''OutilElectrique''.   - Mettez en facteur les éléments qui peuvent l'être dans la modélisation UML en ajoutant une classe ''OutilElectrique''.
-  - En fonction de vos choix, déterminer s'il s'agit d'une classe abstraite ou non. ((Un attribut privé n'est pas accessible par les sous-classes, vous devez donc utiliser les accesseurs.)) +  - Pour les plus avancés, en fonction de vos choix, déterminez s'il s'agit d'une classe abstraite ou non. ((Un attribut privé n'est pas accessible par les sous-classes, vous devez donc utiliser les accesseurs.)) 
-  - Modifier la modélisation et les codes en conséquences.+  - Modifier la modélisation et les codes en conséquence.(( 
 +<code java>  
 +public abstract class OutilElectrique { 
 + private int cadence = 4500; 
 + 
 + public int getCadence() { 
 + return this.cadence; 
 +
 +  
 + protected void setCadence(int cadence){ 
 + this.cadence = cadence; 
 +
 + 
 + public OutilElectrique() { 
 + this.cadence = 0; 
 +
 + 
 + public boolean isOn(){ 
 + return cadence != 0; 
 +
 + 
 + public void switchOff() { 
 + cadence = 0; 
 +
 + 
 + public abstract void switchOn(); 
 + 
 + @Override 
 + public String toString() { 
 + return "OutilElectrique [cadence=" + cadence + "]"; 
 +
 + 
 +
 +</code> 
 + 
 +Pour la classe qui étend :  
 + 
 +<code java> 
 +public class TailleHaie extends OutilElectrique{ 
 + 
 + public void switchOn() { 
 + this.setCadence(4500); 
 +
 + 
 + //Constructeur 
 + public TailleHaie(){ 
 + this.setCadence(0); 
 +
 +
 +</code> 
 +))
   - Réécrire  en  conséquence  les classes  ''TailleHaie'' et ''Tondeuse''.     - Réécrire  en  conséquence  les classes  ''TailleHaie'' et ''Tondeuse''.  
   - Relancer vos tests **sans les modifier**! Ils doivent toujours fonctionner!   - Relancer vos tests **sans les modifier**! Ils doivent toujours fonctionner!
  
-==== Spécialisation et Enuméré (10 mn) ====+<accordion  collapsed="true"> 
 +/* ---------------- 
 +*/ 
 +<panel title="Facultatif sur les énumérés" 
 +==== (Facultatif) Spécialisation et Enuméré  (10 mn) ====
 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. 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//, ... 
Line 177: Line 241:
      
 <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>
 +
 +</panel>
 +</accordion>
 ==== Utiliser  une classe (25mn) ==== ==== Utiliser  une classe (25mn) ====
  
Line 190: Line 257:
   - Compléter  les codes correspondants.   - Compléter  les codes correspondants.
   - Eventuellement par reverse-engineering, reconstruisez votre modèle.   - Eventuellement par reverse-engineering, reconstruisez votre modèle.
-  - Evidemment tester votre programme. Voici un exemple de trace possible à l'exécution des tests.+  - Evidemment tester votre programme. Voici un exemple de trace possible à l'exécution des tests. 
 <code> <code>
 =========================TESTS Jardinier =================== =========================TESTS Jardinier ===================
Line 205: Line 272:
  
  
-<note warning>Cela fait 1hSi vous avez mis plus d'une heure pour arriver là vous êtes en retard ! </note>+Pour vous aider :  
 +  * Vous ne pouvez pas modifier le nom du Jardinier donc vous devez lui donner un nom à la création, pour cela vous créez un constructeur :  
 +<code> 
 +   public class Jardinier{ 
 +        // Un constructeur qui prend le nom en parametre 
 + public Jardinier(String nom) { 
 + this.nom = nom; 
 +
 +</code> 
 +  * Pour créer un jardinier maintenant, vous devez lui donner un nom. 
 +<code> 
 +Jardinier monJardinier = new Jardinier("R2-D2"); 
 +</code> 
 +  * Pour visualiser un objet java, vous pouvez redéfinir son affichage en implémenentant une méthode ''String ToString()'' par exemple :  
 +<code> 
 + public String toString() { 
 + String s = "Je suis " +  nom ; 
 + if (outil== null) 
 + s += " : je n'ai pas d'outil "; 
 + else 
 + s += ", je tiens : " +  outil ; 
 + return s; 
 + }
  
 +</code>
 ===== Allons plus loin ===== ===== Allons plus loin =====
  
2017_2018/s2/td/td_domaine_partie_2.1518980861.txt.gz · Last modified: 2018/02/18 19:07 by blay