S3 : Conception et Programmation Objet Avancées
-
-
- Attention pensez au rendu de fin de module
-
Le téléchargement de ces outils peut être long, il doit avoir été fait avant le TD.
Et pour GIT, vous devez déjà l'avoir sur vos ordinateurs. Vous pouvez aussi installer un client GIT pour vous faciliter son utilisation (en principe..)
Mais vos environnements intègrent également une connexion à GIT…
Objectifs : Par le développement d'un mini-bus à messages (Twitter par exemple) nous mettons en place notre environnement de travail et rappelons les notions de base de la COO.
Il s'agit de construire les bases “rudimentaires” d'un “bus à messages”, pensez flux d'informations par exemple (flux RSS).
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”.
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”.
Nous allons à présent travailler sur les codes. Pour cela nous allons les générer à partir des modèles. Pour cette tâche, vous retournez sous Modelio. 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.
Voici ce que doit faire a minima votre programme principal, pour cela retourner sur “MonScenario.java” et modifier le main pour :
Ce programme ne peut pas tourner puisque quasi rien n'est implémenté, par contre vous pouvez vous aider d'IntelliJ 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.
Notre objectif est à présent de préparer les tests qui accompagneront notre développement. Pour cela, nous utiliserons l'environnement JUNIT. La structuration du projet en une partie principale et une partie test est, elle, exigée pour toute la suite de ce module.
protected Message mToTest; protected String content; @Before public void setUp() throws Exception { content = "mon message"; mToTest = new Message(content,b); } @Test public void setContenu() throws Exception { String nv = "newValue"; mToTest.setContenu("newValue"); assertEquals(" message contents is as expected",nv,mToTest.getContenu()); assertFalse(" message contents has been modified", mToTest.getContenu().equals(content)); }
Enfin, le premier rapport de tests s’affiche !
Un “bus à messages” s'appuie sur plusieurs design patterns 'Observeur/Observable“ et plus précisément “Publish/Subscribe”. Il existe aujourd'hui de nombreuses implémentations de ces systèmes permettant des communications asynchrones, où les consommateurs sont automatiquement notifiés de l'arrivée de message, où les consommateurs peuvent faire des demandes spécifiques, avec des systèmes de filtres complexes, etc.
Jalon de dépôt pour Mme Fornarino : donner comme nom du dépot : Gr<NumeroGroupe><Noms des étudiants>
Je sais :