User Tools

Site Tools


2014_2015:s3:concprogobjet:td:td1

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
2014_2015:s3:concprogobjet:td:td1 [2014/08/27 15:42]
blay [Génération des codes (10 mn)]
2014_2015:s3:concprogobjet:td:td1 [2014/09/15 11:45] (current)
blay [Un projet java (5mn)]
Line 68: Line 68:
  
 ==== Un projet java (5mn)  ==== ==== Un projet java (5mn)  ====
 +
 +<note important>​On travaille avec Eclipse Luna qui se trouve sur le disque local.</​note>​
 +
    - Créer un projet java "//​busV1//" ​    - Créer un projet java "//​busV1//" ​
    - Placez vous dans la perspective "​Java"​ (//Window -> Open Perspective//​)    - Placez vous dans la perspective "​Java"​ (//Window -> Open Perspective//​)
    - Créer la classe "//​MonScenario//"​    - Créer la classe "//​MonScenario//"​
          * En sélectionnant le projet, //clique droit, new class//          * En sélectionnant le projet, //clique droit, new class//
-         * Bien sélectionner le  //main// et les commentaires sur la classe {{:​2014_2015:​s3:​concprogobjet:​td:​monscenario.png?​nolink&​200|MonScenario}}+         * Bien sélectionner le  //main// et les commentaires sur la classe {{:​2014_2015:​s3:​concprogobjet:​td:​monscenario.png?​direct&​200|MonScenario}}
  
 ==== Un projet sous le gestionnaire de version (10mn) ==== ==== Un projet sous le gestionnaire de version (10mn) ====
 +
 +<note important>​Pour cette séance, vous travaillez dans le répertoire personnel de l'un de vous, c-à-dire
 +  * Vous allez sur la forge,
 +  * Vous vous connectez
 +  * Vous allez dans configuration et là vous voyez le nom du dépôt
 +  * C'est ce nom que vous donnez
 +Pour la suite, nous verrons pour travailler dans un répertoire accessible à plusieurs étudiants et aux professeurs.</​note>​
 +
 A partir de maintenant vous devez prendre l'​habitude de travailler avec un gestionnaire de version, nous allons en particulier le faire depuis Eclipse. A partir de maintenant vous devez prendre l'​habitude de travailler avec un gestionnaire de version, nous allons en particulier le faire depuis Eclipse.
  
-  - Pour "​partager"​ votre travail dans SVN, sélectionner le projet (clique droit) et choisir //Team > Share Project//​((Basé sur http://​www.ibm.com/​developerworks/​opensource/​library/​os-ecl-subversion/​));​ sélectionnez //SVN// puis //Next//. Créer une nouvelle localisation puis saisir l'​adresse du dépôt SVN par exemple ''​https://​svn-iutinfo.unice.fr/​svn/​users-XXX''​ {{:​2014_2015:​s3:​concprogobjet:​td:​shareproject.png?​noLink&200|}}  +  - Pour "​partager"​ votre travail dans SVN, sélectionner le projet (clique droit) et choisir //Team > Share Project//​((Basé sur http://​www.ibm.com/​developerworks/​opensource/​library/​os-ecl-subversion/​));​ sélectionnez //SVN// puis //Next//. Créer une nouvelle localisation puis saisir l'​adresse du dépôt SVN par exemple ''​https://​svn-iutinfo.unice.fr/​svn/​users-XXX'' ​où il faut remplacer users-XXX ​ par l'​identifiant du dépôt ​{{ :​2014_2015:​s3:​concprogobjet:​td:​shareproject.png?​direct&200 |}}  
-  - Dans la nouvelle perspective,​ sélectionner "​MonScenario.java",​ clique droit puis commiter {{ :​2014_2015:​s3:​concprogobjet:​td:​commitinitial.png?​nolink&200 |}}+  - Dans la nouvelle perspective,​ sélectionner "​MonScenario.java",​ clique droit puis commiter {{ :​2014_2015:​s3:​concprogobjet:​td:​commitinitial.png?​direct&200 |}}
   - Vérifier que votre fichier est bien, à présent, accessible depuis la forge, pour cela connectez vous sur la forge si ce n'est pas encore fait.   - Vérifier que votre fichier est bien, à présent, accessible depuis la forge, pour cela connectez vous sur la forge si ce n'est pas encore fait.
   - Evidemment, l'​autre étudiant du binôme peut se connecter au même répertoire et faire un "​checkout"​ de cet espace.   - Evidemment, l'​autre étudiant du binôme peut se connecter au même répertoire et faire un "​checkout"​ de cet espace.
Line 89: Line 100:
  
   - Générer les codes {{ :​2014_2015:​s3:​concprogobjet:​td:​generateurimmediat.png?​direct&​200 |}}    - Générer les codes {{ :​2014_2015:​s3:​concprogobjet:​td:​generateurimmediat.png?​direct&​200 |}} 
-  ​- Sélectionner votre diagramme de classe en conception, 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!!),​ et **préciser bien comme répertoire pour la génération votre répertoire src sous Eclipse** {{ :​2014_2015:​s3:​concprogobjet:​td:​generationcodejava.png?​nolink&200 |}}+      ​- Sélectionner votre diagramme de classe en conception
 +      - 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!!), ​**et** **préciser bien comme répertoire pour la génération votre répertoire src sous Eclipse** {{ :​2014_2015:​s3:​concprogobjet:​td:​generationcodejava.png?​direct&200 |}}
   - Retourner sous Eclipse, sous la perspective Java, et faîtes un //refresh// (clique droit sur le projet). Si votre répertoire est mal organisé (nouveau package par exemple, déplacer simplement les codes comme vous le voulez, par glisser/​coller.)   - Retourner sous Eclipse, sous la perspective Java, et faîtes un //refresh// (clique droit sur le projet). 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"​ en utilisant simplement les petites boules jaunes sur le côté, mais **ne passez pas à l'​implémentation**,​ nous ferons cela un peu plus tard.   - Corriger vos codes pour qu'ils soient "​compilables"​ en utilisant simplement les petites boules jaunes sur le côté, mais **ne passez pas à l'​implémentation**,​ nous ferons cela un peu plus tard.
Line 117: Line 130:
  
     - Ajoutez un nouveau dossier de sources nommé //tests// au même niveau d’arborescence que src     - Ajoutez un nouveau dossier de sources nommé //tests// au même niveau d’arborescence que src
-         * sur le projet, faire un //new source-folder//,​ et l'​appeler //tests// {{ :​2014_2015:​s3:​concprogobjet:​td:​newsourcefolder.png?​nolink&200 |}}  +         * sur le projet, faire un //new source-folder//,​ et l'​appeler //tests// {{ :​2014_2015:​s3:​concprogobjet:​td:​newsourcefolder.png?​direct&200 |}}  
-    - Dans le menu contextuel de, par exemple la classe //​Message//,​ cliquez sur //New – 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?​nolink&200 |}} Dans le panneau qui s'​affiche {{ :​2014_2015:​s3:​concprogobjet:​td:​messagetest.png?​nolink&200 |}}+    - Dans le menu contextuel de, par exemple la classe //​Message//,​ cliquez sur //New – 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 //tests//.           * Changez le dossier Source folder pour //tests//.
Line 129: Line 142:
     - Dans le menu contextuel, cliquez sur //Run As – JUnit test//.     - 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?​nolink&200 |}}+{{ :​2014_2015:​s3:​concprogobjet:​td:​testok.png?​direct&200 |}}
 ====  Développement (20mn) ​ ==== ====  Développement (20mn) ​ ====
   - Terminez la mise en oeuvre du bus en complétant les tests au fur et à mesure et en n'​oubliant pas de commiter.   - Terminez la mise en oeuvre du bus en complétant les tests au fur et à mesure et en n'​oubliant pas de commiter.
Line 137: Line 150:
  
  
-===== Suites prévues pour ce projet =====  
- 
-  * //​Objectifs ​ : refactoring,​ incrémentalité et agilité// : Le bus est maintenant composée de boîtes à messages :  
-Le bus gère des "​boîtes à message"​. Plusieurs producteurs peuvent émettre des messages vers une même boîte, plusieurs consommateurs peuvent lire les messages dans une boite. ​ 
-Dans le scénario de base, la voiture A a choisi d'​émettre son message vers la queue "Etat Des Routes"​. Les consommateurs déclarent les boîtes qui les intéressent. Ils peuvent lire les messages qui les intéressent sur une boîte donnée ou obtenir tous les messages qui les intéressent indépendamment des boîtes. ​ Plusieurs types de messages? Qui est responsable de créer les messages? Qui connait les boîtes de messages ?  
-  * //Objectifs : Apprentissage d'une famille courante de patterns (fabrique, builder) mais uniquement par l'​usage,​ la formalisation se fera en S4//: Les messages pouvant être de différentes natures, un bus devient "​porteur"​ d'une fabrique à messages. 
-  * //Objectifs : Prise en compte des IHMs et mise en place du pattern MVC à tous les niveaux// : Définir les interfaces graphiques qui nous permettraient d'​accéder "​simplement"​ à un bus pour émettre, lire et effacer des messages uniquement. 
-  * //Objectifs : Prise en considération des responsabilités uniques// : Routage en fonction des messages : La voiture A emet un message et le bus décide de la ou des boîtes à messages concernées. 
-  * //Objectifs : mise en oeuvre du pattern DAO + différents modèles de persistance + intégration par les interfaces + travail en équipe// : Les messages seront rendus persistants. Pour certaines boîtes les messages sont persistants,​ pour d'​autres non :  ​ 
-  * Il est assez surprenant d'​effacer les messages au bout d'un certain temps alors que certains consommateurs ne les ont pas lu et de redonner le même message au même consommateur qui l'a déjà lu. Que feriez-vous pour : a) ne pas redonner le même message au même consommateur;​ b) donner les messages aux consommateurs qui ne les ont pas encore lu? quel écueil( le bus ne connait pas ses consommateurs!) ? quelle solution envisageriez-vous (un consommateur se déclare, une file d'​attente par consommateur,​ et le message est détuit lorsque plus aucune file n'y fait référence)? ​ 
-- Il sera possible de définir différentes formes de souscription. 
- 
-Nous n'​aborderons,​ hélas, pas les aspects distribués. 
  
 ==== Pour aller plus loin ==== ==== Pour aller plus loin ====
2014_2015/s3/concprogobjet/td/td1.1409146928.txt.gz · Last modified: 2014/08/27 15:42 by blay