S3 : Conception et programmation objet avancée
-
- TDs : Description, Livrables, Evaluation
This is an old revision of the document!
Attention, les seules “vraies” corrections sont faîtes avec votre encadreur sur votre travail. Il s'agit ici seulement d'éléments pouvant aider à mieux comprendre le TD surtout si vous n'avez pas réussi à les faire.
Voici les fichiers XML correspondant aux diagrammes Visual Paradigm : archivevp.zip
Voici les codes java correspondant : codes.zip
La classe MonScenario à la fin du projet :
package busPk; import java.util.ArrayList; public class MonScenario { /** * @param args */ public static void main(String[] args) { //créer un bus de nom "Nice-Circulation" Bus monBus = new Bus("Nice-Circulation"); //créer un message annonçant "une attente de 5mn" Message m1 = new Message("Attente de 5mn"); //publier le message sur le bus, monBus.send(m1); //créer un message annonçant "un accident" Message m2 = new Message("Accident"); //publier le message sur le bus, monBus.send(m2); //lire les messages, ArrayList<Message> messages = monBus.getMessages(); // afficher le contenu des message. for (Message m : messages ) System.out.println("Message : " + m.getContent() ) ; } }
A partir de maintenant vous devez prendre l'habitude de travailler avec un gestionnaire de version, nous allons en particulier le faire depuis Eclipse.
https://svn-iutinfo.unice.fr/svn/users-XXX
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 Visual Paradigm. Aujourd'hui nous faisons le choix de générer les codes puis de travailler ces derniers dans 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'Eclipse pour que au moins il soit “syntaxiquement” juste et créer les bonnes méthodes si elles n'existent pas déjà, ou les appeler!
Vous pouvez à présent l'exécuter et il vous signale les méthodes non encore implémentées. 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. Bien sûr vous pouvez utiliser un autre environnement de tests si vous le désirez mais la structuration du projet en une partie principale et une partie test est, elle, exigée pour toute la suite de ce module.
MessageTest
.setUp()
et tearDown()
.
Enfin, le premier rapport de tests s’affiche !
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.
- Il sera possible de définir différentes formes de souscription.
Nous n'aborderons, hélas, pas les aspects distribués.
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.
Je sais :