User Tools

Site Tools


2018_2019:s3:concprogobjet:td:s3atd1

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:s3:concprogobjet:td:s3atd1 [2018/09/06 18:07]
blay ToDo checked: Quels sont les grands cas d'utilisation? Vous pouvez les faire simplement sur Papier.
2018_2019:s3:concprogobjet:td:s3atd1 [2018/09/06 22:04]
blay [Pour communiquer]
Line 1: Line 1:
 +
 +
 ====== TD1 : Prise en main de l'​environnement de développement ====== ====== TD1 : Prise en main de l'​environnement de développement ======
  
Line 78: Line 80:
 ===== Comprendre le contexte de l'​application : 5mn ===== ===== Comprendre le contexte de l'​application : 5mn =====
  
-  - <todo #blay:2018-09-06> ​Quels sont les grands cas d'​utilisation?​ Vous pouvez les faire simplement sur Papier.</​todo>​+  - {{fa>​arrow-circle-right?​24}} ​Quels sont les grands cas d'​utilisation?​ Vous pouvez les faire simplement sur Papier.
  
 ===== De l'​analyse à la conception du bus logiciel ===== ===== De l'​analyse à la conception du bus logiciel =====
Line 85: Line 87:
 ==== Analyse : 15mn  ==== ==== Analyse : 15mn  ====
  
-  - <todo> Commencez par créer un projet (Attention à bien sélectionner **Java Project**)</​todo> ​sous [[:​modelio|MODELIO]] +  - {{fa>arrow-circle-right?​24}} ​Commencez par créer un projet (Attention à bien sélectionner **Java Project**) sous [[:​modelio|MODELIO]] 
-  - <todo> Définissez un diagramme de classes de niveau Analyse.</​todo> ​ +  - {{fa>arrow-circle-right?​24}} ​Définissez un diagramme de classes de niveau Analyse. 
-  - <todo> Définissez,​ par cas d'​utilisation,​ un diagramme de séquence élémentaire mettant en jeu les objets de votre système **et compléter** votre diagramme de classes au fur et à mesure. Pour cela utilisez, évidemment des lignes de vie qui font référence à des classes et les messages qui vous permettent d'​identifier les méthodes et mettre à jour vos diagrammes de classes.</​todo>​  +  - {{fa>arrow-circle-right?​24}} ​Définissez,​ par cas d'​utilisation,​ un diagramme de séquence élémentaire mettant en jeu les objets de votre système **et compléter** votre diagramme de classes au fur et à mesure. Pour cela utilisez, évidemment des lignes de vie qui font référence à des classes et les messages qui vous permettent d'​identifier les méthodes et mettre à jour vos diagrammes de classes.
  
 <note tip> <note tip>
Line 95: Line 96:
   * Votre modélisation tient-elle compte de l'​absence de messages en attente?   * Votre modélisation tient-elle compte de l'​absence de messages en attente?
 </​note>​ </​note>​
 +
 ==== Conception : 15mn  ==== ==== Conception : 15mn  ====
  
  
-  - <todo> Compléter votre modèle à classes pour préparer l'​implémentation : </​todo>​+  - {{fa>arrow-circle-right?​24}} ​Compléter votre modèle à classes pour préparer l'​implémentation : 
         * Réfléchir au sens des relations         * Réfléchir au sens des relations
         * Vérifier les "​couplages"​         * Vérifier les "​couplages"​
Line 105: Line 107:
  
 <note tip> <note tip>
-Attention, ce tout petit exemple sera très largement étendu par la suite. Prenez-donc un soin particulier pour bien construire un modèle qui respecte les propriétés DRY et de faibles couplages...</​note>​+Attention, ce tout petit exemple sera très largement étendu par la suite. Prenez-donc un soin particulier pour bien construire un modèle qui respecte les propriétés DRY((don’t repeat yourself)) ​et de faibles couplages...</​note>​ 
 ===== Mise en oeuvre ===== ===== Mise en oeuvre =====
  
-==== Un projet java (5mn)  ====+==== Un projet java (3mn)  ====
  
  
-   - Créez un projet ​**MAVEN** ( **voir comment faire ici [[https://​mbf-iut.i3s.unice.fr/​doku.php?id=eclipse#​creer_un_projet_maven|avec eclipse]] ​[[https://​mbf-iut.i3s.unice.fr/​doku.php?​id=intellij#​creer_un_projet_maven|avec intelliJ]]** )  +  ​{{fa>​arrow-circle-right?24}} [[2018_2019:s3:​concprogobjet:​td:​s3atd1:​creationProjet|Créez un projet java]]  
-         - Nom du projet : busV1 +
-         - GroupID = fr.unice.iut.info.coo +
-         - ArtefactID = bus +
-   - La structure contient  +
-          - src -> main -> Java ... +
-          - test -> java -> ... +
-          - Exécutez le main et les tests...  +
-   - Ok maintenant vous êtes prêts.+
  
  
Line 154: Line 150:
 Aujourd'​hui nous faisons le choix de générer les codes puis de travailler ces derniers sans chercher, au moins pour l'​instant,​ à maintenir les modèles en cohérence. Aujourd'​hui nous faisons le choix de générer les codes puis de travailler ces derniers sans chercher, au moins pour l'​instant,​ à maintenir les modèles en cohérence.
  
-  - Générez les codes (voir [[https://​mbf-iut.i3s.unice.fr/​doku.php?​id=modelio#​generer_les_codes|ici]] ​et choisissez comme répertoire de génération ​celui sous src/​main/​java/​fr/​unice/​iut/​info/​coo +  - {{fa>​arrow-circle-right?​24}} Génération des codes (voir [[https://​mbf-iut.i3s.unice.fr/​doku.php?​id=modelio#​generer_les_codes|ici]] ​
-  ​- ​      - Sélectionner votre diagramme de classe en conception;​ +          - Choisissez votre répertoire de génération ​des codes sous src 
-      - Vérifier que vous avez bien toutes les classes prévues;  +          - Préciser si vous voulez travailler avec des vecteurs ou autres (Réfléchissez!!) {{ :​2014_2015:​s3:​concprogobjet:​td:​generationcodejava.png?​direct&​200 |}} 
-      ​- Préciser si vous voulez travailler avec des vecteurs ou autres (Réfléchissez!!), **et** **préciser bien comme répertoire pour la génération votre répertoire** (si besoin, spécifiez le nom du package fr.unice.iut.info.coo directement dans le code généré) {{ :​2014_2015:​s3:​concprogobjet:​td:​generationcodejava.png?​direct&​200 |}} +  - {{fa>​arrow-circle-right?​24}} ​ Vérifier que vous avez bien toutes les classes prévues qui ont été générées; ​  
-  - Retourner sous votre IDE. Si votre répertoire est mal organisé (nouveau package par exemple, déplacer simplement les codes comme vous le voulez, par glisser/​coller.) +  - {{fa>​arrow-circle-right?​24}}  ​Retourner sous votre IDE. Si votre répertoire est mal organisé (nouveau package par exemple, déplacer simplement les codes comme vous le voulez, par glisser/​coller.) 
-  - Corriger vos codes pour qu'ils soient "​compilables"​ :  +  - {{fa>​arrow-circle-right?​24}}  ​Corriger vos codes pour qu'ils soient "​compilables"​ :  
-          -  ​Afin ​que les annotations de Modelio soient comprises, ajouter {{:​javadesigner.jar|}} comme une library du projet ​+          - ou en éliminant les annotations (@...) 
 +          - ou en faisant en sorte que les annotations de Modelio soient comprises, ajouter {{:​javadesigner.jar|}} comme une library du projet ​
                  * sous [[https://​mbf-iut.i3s.unice.fr/​doku.php?​id=eclipse#​ajouter_un_jar_externe|Eclipse]] ​                  * sous [[https://​mbf-iut.i3s.unice.fr/​doku.php?​id=eclipse#​ajouter_un_jar_externe|Eclipse]] ​
-                 * sous IntelliJ 
-                      - déposer sous idea/​libraries... puis sélectionner le .jar et l'​enregistrer comme une librairie utilisée par le projet 
-                      - **ou bien** placez vous sur le projet puis avec le menu contextuel (clique droit) > Open module Setting > Librairies et ajouter le .jar 
 <​html>​ <​html>​
 <!-- <!--
Line 173: Line 167:
  
  
-==== Mise en place du programme principal préliminaire (10mn) ==== 
  
-Voici ce que doit faire a minima votre programme principal, pour cela retourner dans le fichier de test et ajouter un cas de test : "​testMonScenario.java" ​ ou des tests pour :  
-  - créer un bus de nom "​Nice-Circulation",​ 
-  - créer un message annonçant "une attente de 5mn" 
-  - créer un message annonçant "un accident"​ 
-  - récupérer les messages sur le bus de nom "​Nice-Circulation",​ 
-  - afficher le contenu des messages. 
- 
- 
-Ce programme ne peut pas tourner puisque quasi rien n'est implémenté,​ par contre vous pouvez vous aider de votre IDE pour qu'au moins il soit "​syntaxiquement"​ juste et créer les bonnes méthodes si elles n'​existent pas déjà, ou les appeler! ​ 
- 
-A la fin de ce TD, évidemment,​ il fonctionnera. 
  
  
Line 195: Line 177:
 Vous avez déjà utilisé JUnit l'an dernier, il devrait s'agir uniquement de rappels. ​ Vous avez déjà utilisé JUnit l'an dernier, il devrait s'agir uniquement de rappels. ​
  
-<​accordion ​ collapsed="​true">​ +**Sous ECLIPSE** 
-/---------------- +    - {{fa>arrow-circle-right?​24}} ​Dans le menu contextuel de, par exemple la classe //​Message//,​ cliquez sur //New – Others - Java - JUnit Test Case//​((Cette partie du TD reprend en partie le tutoriel JUNIT : http://​www.junit.fr/​2011/​11/​20/​tutoriel-eclipse-junit-mon-premier-test-automatique/​)). {{ :​2014_2015:​s3:​concprogobjet:​td:​junittestcase.png?​direct&​200 |}} Dans le panneau qui s'​affiche {{ :​2014_2015:​s3:​concprogobjet:​td:​messagetest.png?​direct&​200 |}}
-*/ +
-<panel title="​Eclipse"  ​> +
-    ​- Dans le menu contextuel de, par exemple la classe //​Message//,​ cliquez sur //New – Others - Java - JUnit Test Case//​((Cette partie du TD reprend en partie le tutoriel JUNIT : http://​www.junit.fr/​2011/​11/​20/​tutoriel-eclipse-junit-mon-premier-test-automatique/​)). {{ :​2014_2015:​s3:​concprogobjet:​td:​junittestcase.png?​direct&​200 |}} Dans le panneau qui s'​affiche {{ :​2014_2015:​s3:​concprogobjet:​td:​messagetest.png?​direct&​200 |}}+
           * Sélectionnez le bouton radio //New JUnit 4 test//.           * Sélectionnez le bouton radio //New JUnit 4 test//.
-          * Changez le dossier Source folder pour //​bus/​src/​test/​java//​.+          * Changez le dossier Source folder pour celui de tests
           * Nommez la classe ''​MessageTest''​.           * Nommez la classe ''​MessageTest''​.
           * Cochez les cases ''​setUp()''​ et ''​tearDown()''​.           * Cochez les cases ''​setUp()''​ et ''​tearDown()''​.
Line 207: Line 186:
           * Eclipse va remarquer que la bibliothèque de //JUnit// est absente du projet et vous propose d’ajouter automatiquement cette dernière au projet.           * Eclipse va remarquer que la bibliothèque de //JUnit// est absente du projet et vous propose d’ajouter automatiquement cette dernière au projet.
           * Dans le panneau qui apparaît, cliquez sur OK.           * Dans le panneau qui apparaît, cliquez sur OK.
-    -  Eclipse a maintenant créé automatiquement le squelette de la classe de test. Il ne reste plus alors qu’à remplir cette dernière.  +    -  ​{{fa>​arrow-circle-right?​24}} ​Eclipse a maintenant créé automatiquement le squelette de la classe de test. Il ne reste plus alors qu’à remplir cette dernière. ​**Voir un exemple de code ci-dessous.** 
-    - Dans le menu contextuel, cliquez sur //Run As – JUnit test//.+    - {{fa>​arrow-circle-right?​24}}  ​Dans le menu contextuel, cliquez sur //Run As – JUnit test//.
 Enfin, le premier rapport de tests s’affiche !  Enfin, le premier rapport de tests s’affiche ! 
 {{ :​2014_2015:​s3:​concprogobjet:​td:​testok.png?​direct&​200 |}} {{ :​2014_2015:​s3:​concprogobjet:​td:​testok.png?​direct&​200 |}}
- +   ​- ​{{fa>arrow-circle-right?24}} Visualiser ​la couverture de tests {{ :​2018_2019:​s3:​methodo:​td:​coverage.png?​direct&​300 |}} 
-</​panel>​ +
- +
- +
-<panel title="​IntelliJ" ​ > +
-    ​- ​Pour créer des tests sur votre classe //​Message//,​ suivez les instructions sous https://​www.jetbrains.com/​help/​idea/​2016.2/​creating-tests.html. La classe de test créée se trouve sous test/​java/​... +
-          * Cochez les cases ''​setUp()''​ ((est exécutée avant tout test)) et ''​tearDown()''​ ((est exécutée après tout test)). +
-    -  IntelliJ a maintenant créé automatiquement le squelette de la classe de test. Il ne reste plus alors qu’à remplir cette dernière. +
-</​panel>​ +
-</​accordion> +
- +
-  +
-   <​todo>​ Complétez la classe de Test à présent et l'​exécuter. </​todo>​ Voir un exemple de code ci-dessous. +
-   - <​todo>​ Vérifier ​la couverture de votre code (menu contextuel, ​coverage ​as) si vous êtes sous EclipseVous pouvez aussi les voir sous properties. </​todo> ​+
  
 Voici un exemple de code de test. Voici un exemple de code de test.
Line 250: Line 216:
  
  
 +
 +
 +==== Mise en place d'un programme principal préliminaire (10mn) ====
 +
 +{{fa>​arrow-circle-right?​24}} ​ Voici ce que devra faire a minima votre programme principal, pour cela retourner dans le fichier de test et ajouter un cas de test : "​testMonScenario.java" ​ ou des tests pour : 
 +  - créer un bus de nom "​Nice-Circulation",​
 +  - créer un message annonçant "une attente de 5mn"
 +  - créer un message annonçant "un accident"​
 +  - récupérer les messages sur le bus de nom "​Nice-Circulation",​
 +  - afficher le contenu des messages.
 +
 +
 +Ce programme ne peut pas tourner puisque quasi rien n'est implémenté,​ par contre vous pouvez vous aider de votre IDE pour qu'au moins il soit "​syntaxiquement"​ juste et créer les bonnes méthodes si elles n'​existent pas déjà, ou les appeler! ​
 +
 +A la fin de ce TD, évidemment,​ il fonctionnera.
  
 ====  Développement (20mn) ​ ==== ====  Développement (20mn) ​ ====
-  ​- Terminez la mise en oeuvre du bus en complétant les tests au fur et à mesure.+{{fa>​arrow-circle-right?​24}}  ​Terminez la mise en oeuvre du bus en complétant les tests au fur et à mesure.
  
  
-Pensez à tester : +{{fa>​arrow-circle-right?​24}}  ​Pensez à tester : 
   * Retrouver un bus de nom donné   * Retrouver un bus de nom donné
  
Line 269: Line 250:
 </​accordion>​ </​accordion>​
  
-===== EVALUATION de CE TD =====  
- 
-  - Le programme est fonctionnel et le scénario de base est bien réalisé. 
-  - Les modèles sont cohérents avec le code. 
  
-[[http://​jalon.unice.fr/​cours/​blay/​Cours-blay-20160929210709/​BoiteDepot-blay-20160929210839376812?​mode_etudiant=false|Jalon de dépôt pour Mme Blay-Fornarino : donner comme nom du dépot : Gr<​NumeroGroupe><​Noms des étudiants>​]] Pour les groupes de Mme Blay-Fornarino date limite 26 septembre minuit 
 ===== Je sais ===== ===== Je sais =====
    
2018_2019/s3/concprogobjet/td/s3atd1.txt · Last modified: 2018/09/06 22:05 by blay