S3 : Conception et Programmation Objet Avancées
-
- Attention pensez au rendu de fin de module
Il s'agit de construire les bases “rudimentaires” d'un “Forum” (on fera mieux la semaine prochaine).
Il existe beaucoup de modèles de “bus” (ici utilisé pour réaliser un forum) : 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).
Attention, il s'agit d'un exemple concret mais c'est bien la notion de Forum que l'on vous demande dans un premier temps de mettre en oeuvre.
L'agence “oogle-stade” (Administrateur) crée un forum “OGCN”.
Mario (Producteur) poste un message WaitAndSee: “a quoi cela sert de courir?” sur le forum “OGCN”.
Walter (Consommateur) demande s'il y a de l'information sur le forum et obtient le message WaitAndSee.
Walter(Consommateur) pose la même question et obtient le même message.
Alban(Consommateur) pose la même question et obtient le même message.
Walter (Producteur) poste un message Yes : “Tout à fait d'accord!”.
Youcef (Producteur) poste un message PFFF : “Vous rigolez?”.
Les messages postés il y a plus de 30s sont détruits par “oogle-stade”.
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.
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. Vous avez déjà utilisé JUnit l'an dernier, il devrait s'agir uniquement de rappels.
Sous ECLIPSE
MessageTest
.setUp()
et tearDown()
.Enfin, le premier rapport de tests s’affiche !
Voici un exemple de code de test pour Junit 4 (@BeforeEach and @BeforeAll are the JUnit 5 equivalents of @Before and @BeforeClass. These annotations were renamed with clearer names to avoid confusion.)
protected Message mToTest; protected String contents; @Before public void setUp() throws Exception { contents = "mon message"; mToTest = new Message(contents); } @Test public void setContents() throws Exception { String nv = "newValue"; mToTest.setContenu("newValue"); assertEquals(" message contents is as expected",nv,mToTest.getContents()); assertFalse(" message contents has been modified", mToTest.getContents().equals(content)); }
Voici ce que devra faire a minima votre programme principal, pour cela retourner soit dans le folder de tests créez un fichier “testMonScenario.java” qui contient un main, soit ajoutez des tests pour vérifier le scénario suivant:
Vous pouvez compléter cet exemple par l'exemple donné plus haut.
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.
Terminez la mise en oeuvre du forum en complétant les tests au fur et à mesure.
Pensez à tester :
Je sais :