User Tools

Site Tools


2015_2016: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
2015_2016:s3:concprogobjet:td:td1 [2015/07/21 10:29]
blay [Présentation de l'application]
2015_2016:s3:concprogobjet:td:td1 [2015/09/09 16:02] (current)
blay [Développement (20mn)]
Line 1: Line 1:
 ====== TD1 : Prise en main de l'​environnement de développement ====== ====== TD1 : Prise en main de l'​environnement de développement ======
-<note warning>​SVN OU GIT A PRIORI PAS FAIT AVANT CETTE ANNE</​note>​+
  
 **Objectifs :** Par le développement d'un mini-bus à messages nous mettons en place notre environnement de travail et rappelons les notions de base de la COO. **Objectifs :** Par le développement d'un mini-bus à messages nous mettons en place notre environnement de travail et rappelons les notions de base de la COO.
Line 8: Line 8:
 ===== Présentation de l'​application ===== ===== Présentation de l'​application =====
  
-<​note>​Un **bus à messages** permet à un "​producteur"​ d'​envoyer un "​message"​(texte,​ contenu multimedia, ...)  ​à ​des destinataires nommésCeux-ci ​peuvent lire les messages quand ils le veulent. Selon les modèles de bus, les destinaires ​sont notifiés immédiatement du message (twitter par exemple), ou bien doivent aller eux-même chercher leurs messages (email par exemple). +<​note>​Un **bus à messages** permet à un "​producteur"​ d'​envoyer un "​message"​(texte,​ contenu multimedia, ...) vers des consommateursLes consommateurs ​peuvent lire les messages quand ils le veulent. Selon les modèles de bus, les consommateurs ​sont notifiés immédiatement du message (//twitter par exemple//), ou bien doivent aller eux-même chercher leurs messages (//email par exemple//). 
-Ces modèles d'​architectures sont très utilisés pour faciliter des communications asynchrones et l'​envoi d'​informations à un groupe de destinataires (pensez au principe des tags sous Twitter par exemple).+ 
 +Il existe beaucoup de modèles de "​bus"​ : choix des consommateurs par filtrage sur le message, abonnement des consommateurs à des boîtes spécialisées,​ envoi des messages à la demande des consommateurs,​ dés qu'un message est lu, il n'est plus accessible aux autres consommateurs,​ ... Ces modèles d'​architectures sont très utilisés pour faciliter des communications asynchrones et l'​envoi d'​informations à un groupe de destinataires (pensez au principe des tags sous Twitter par exemple). 
 + 
 +[[http://​docs.oracle.com/​cd/​E19798-01/​821-1841/​bnced/​index.html| en savoir plus]]
 </​note> ​ </​note> ​
  
-Il s'agit de construire les bases "​rudimentaires"​ d'un "bus à messages"​.+Il s'agit de construire les **bases "​rudimentaires"​ d'un "bus à messages"​**, //pensez flux d'​informations par exemple (flux RSS).//
   * Un agent peut créer un bus.   * Un agent peut créer un bus.
   * Des producteurs émettent des messages vers un bus.    * Des producteurs émettent des messages vers un bus. 
Line 23: Line 26:
 Attention, il s'agit d'un exemple concret mais c'est bien la notion de bus que l'on vous demande dans un premier temps de mettre en oeuvre. Attention, il s'agit d'un exemple concret mais c'est bien la notion de bus que l'on vous demande dans un premier temps de mettre en oeuvre.
  
-L'​agence "​oogle-Agency"​ (//Agent//) crée un bus logiciel "​Nice-circulation"​. +L'​agence "​oogle-Agency"​ (//Agent//) crée un bus logiciel "​Nice-circulation"​.\\ 
-La voiture A (//​Producteur//​) émet un message //mAttente : "​Attente de 5mn"// ​vers du bus logiciel "​Nice-circulation"​. La voiture B (//​Consommateur//​) ​ demande s'il y a de l'​information sur le bus logiciel et obtient le message //​mAttente//​. ​ La voiture B (//​Consommateur//​) pose la même question et obtient le même message. La voiture B (//​Producteur//​) émet un message //mAccident : "​Accident sortie Saint-Augustin"//​. ​+La voiture A (//​Producteur//​) émet un message //mAttente : "​Attente de 5mn"// ​sur le bus logiciel "​Nice-circulation"​. ​\\ 
 +La voiture B (//​Consommateur//​) ​ demande s'il y a de l'​information sur le bus logiciel et obtient le message //​mAttente//​. ​\\ 
 +La voiture B (//​Consommateur//​) pose la même question et obtient le même message. ​\\ 
 +La voiture B (//​Producteur//​) émet un message //mAccident : "​Accident sortie Saint-Augustin"//​. ​\\
  Les messages postés il y a plus de 30s sont détruits par "​oogle-Agency"​. ​  Les messages postés il y a plus de 30s sont détruits par "​oogle-Agency"​. ​
  
Line 34: Line 40:
 </​html>​ </​html>​
  
-==== En savoir plus : ==== +
-  * http://​docs.oracle.com/​cd/​E19798-01/​821-1841/​bnced/​index.html+
  
 ===== Comprendre le contexte de l'​application : 5mn ===== ===== Comprendre le contexte de l'​application : 5mn =====
Line 46: Line 51:
 ==== Analyse : 15mn  ==== ==== Analyse : 15mn  ====
  
-  - Sous Visual ​Paradigme, commencer par créer un "​modèle"​ : //​bus-analyse//​. Pour cela, vous pouvez par exemple, ouvrir le volet "​Explorateur de modèles"​ //​(Apercu->​Volet)//​ qui est très utile. ​ Cette approche nous permettra de clairement identifier les éléments produits par l'​analyse et ceux produits par la conception. ​+  - Sous Visual ​Paradigm, commencer par créer un "​modèle"​ : //​bus-analyse//​. Pour cela, vous pouvez par exemple, ouvrir le volet "​Explorateur de modèles"​ //​(Apercu->​Volet)//​ qui est très utile. ​ Cette approche nous permettra de clairement identifier les éléments produits par l'​analyse et ceux produits par la conception. ​
     {{:​2014_2015:​s3:​concprogobjet:​td:​vueexplorateurmodeles.png?​direct&​200|Visualisation partielle de la vue "​Explorateur de modèles"​ à la fin de ce TD }}     {{:​2014_2015:​s3:​concprogobjet:​td:​vueexplorateurmodeles.png?​direct&​200|Visualisation partielle de la vue "​Explorateur de modèles"​ à la fin de ce TD }}
-  - Définissez un modèle à classes de niveau Analyse.+  - Définissez un diagramme de classes de niveau Analyse.
   - 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 "​Call"​ qui vous permettent d'​identifier les méthodes d'​appels et mettent automatiquement à jour vos diagrammes de classes {{:​2014_2015:​s3:​concprogobjet:​td:​creationoperation.png?​direct&​200|}}   - 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 "​Call"​ qui vous permettent d'​identifier les méthodes d'​appels et mettent automatiquement à jour vos diagrammes de classes {{:​2014_2015:​s3:​concprogobjet:​td:​creationoperation.png?​direct&​200|}}
  
Line 59: Line 64:
 ==== Conception : 15mn  ==== ==== Conception : 15mn  ====
  
-   - **Dérivation du diagramme** : Pour bien différencier votre modèle d'​analyse du modèle de conception, **dériver** votre diagramme. Pour cela vous vous placez dans le diagramme de classes, par un clique droit, vous sélectionnez "//​utilities//"​ tout en bas -> //Transitez vers un nouveau diagramme// {{ :​2014_2015:​s3:​concprogobjet:​td:​transiterdiagrammeanalyseconception.png?​direct&​200 |}} puis créez un modèle //​Bus-Conception// ​ pour bien distinguer vos éléments. Attention à présent de bien travailler dans le modèle en conception {{:​2014_2015:​s3:​concprogobjet:​td:​deuxmodeles.png?​direct&​200|}} 
   - Compléter votre modèle à classes pour préparer l'​implémentation :    - 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
Line 80: Line 84:
          * 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?​direct&​200|MonScenario}}          * Bien sélectionner le  //main// et les commentaires sur la classe {{:​2014_2015:​s3:​concprogobjet:​td:​monscenario.png?​direct&​200|MonScenario}}
 +
 +
 +
 +
 +<​html>​
 +<​!-- ​
  
 ==== Un projet sous le gestionnaire de version (10mn) ==== ==== Un projet sous le gestionnaire de version (10mn) ====
Line 96: Line 106:
   - 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.
 +
 +
 +
 +--!>
 +</​html>​
  
  
Line 109: Line 124:
   - 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.
 +<​html>​
 +<!--
   - Quand il n'y a plus d'​erreurs,​ mémoriser les codes dans SVN (pour s'​entraîner ;-) ) . Donc cette fois-ci simplement, //clique droit// sur le package (car évidemment,​ vous travaillez bien dans un package), puis //Team// puis //commit//. Il vous propose directement les fichiers à ajouter au commit. N'​oublier de mettre un message.   - Quand il n'y a plus d'​erreurs,​ mémoriser les codes dans SVN (pour s'​entraîner ;-) ) . Donc cette fois-ci simplement, //clique droit// sur le package (car évidemment,​ vous travaillez bien dans un package), puis //Team// puis //commit//. Il vous propose directement les fichiers à ajouter au commit. N'​oublier de mettre un message.
 +--!> 
 +</​html>​
  
  
Line 119: Line 137:
   - créer un bus de nom "​Nice-Circulation",​   - créer un bus de nom "​Nice-Circulation",​
   - créer un message annonçant "une attente de 5mn"   - créer un message annonçant "une attente de 5mn"
-  - publier le message sur le bus, 
   - créer un message annonçant "un accident"​   - créer un message annonçant "un accident"​
-  - publier le message sur le bus, 
   - lire les messages,   - lire les messages,
   - afficher le contenu des message.   - afficher le contenu des message.
Line 148: Line 164:
 {{ :​2014_2015:​s3:​concprogobjet:​td:​testok.png?​direct&​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.
  
  
Line 162: Line 178:
  
 ===== EVALUATION de CE TD =====  ===== EVALUATION de CE TD ===== 
-  - Tous les étudiants ont donné accès à leur professeur sur un de leur espace. +
-  - Tous les étudiants ont bien sauvegardé dans leur espace SVN. +
-  - Tous les étudiants ont au moins une fois fait un commit dans cet espace de travail.+
   - Le programme est fonctionnel et le scénario de base est bien réalisé.   - 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.2011-10-10.3543/​BoiteDepot-blay-20150731120912764725?​mode_etudiant=true&​menu=sujets
 ===== Je sais ===== ===== Je sais =====
    
Line 173: Line 189:
   * Créer un projet sous Eclipse, et le structurer correctement.   * Créer un projet sous Eclipse, et le structurer correctement.
   * Générer le code à partir d'un modèle de classes en UML.   * Générer le code à partir d'un modèle de classes en UML.
-  * Connecter mon code à un répertoire SVN. 
   * Structurer mon projet pour intégrer les tests unitaires. ​   * Structurer mon projet pour intégrer les tests unitaires. ​
   * Utiliser Eclipse pour améliorer mon développement en utilisant les outils d'aide au développement.   * Utiliser Eclipse pour améliorer mon développement en utilisant les outils d'aide au développement.
 </​box>​ </​box>​
  
2015_2016/s3/concprogobjet/td/td1.1437467385.txt.gz · Last modified: 2015/07/21 10:29 by blay