Licence 3 Informatique – Génie Logiciel TP5: Patrons de conception 2

Ce TP explore les patrons de conception Observer et Décorateur à travers plusieurs exercices pratiques. Vous apprendrez à découpler des composants logiciels en respectant les principes SOLID, à utiliser les fonctionnalités d’Observable en Java 8, et à appliquer ces concepts dans un contexte concret, celui d’un concours de mangeurs de galettes.

D'après le document Licence 3 Informatique – Génie Logiciel TP5: Patrons de conception 2

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Licence 3 Informatique – Génie Logiciel TP5: Patrons de conception 2

Document source

Licence 3 Informatique – Génie Logiciel TP5: Patrons de conception 2

Programming, Design Patterns, Java · PDF · 3 pages

Afficher l'aperçu du document

Consulter le document original →

Ce TP explore les patrons de conception Observer et Décorateur à travers plusieurs exercices pratiques. Vous apprendrez à découpler des composants logiciels en respectant les principes SOLID, à utiliser les fonctionnalités d’Observable en Java 8, et à appliquer ces concepts dans un contexte concret, celui d’un concours de mangeurs de galettes. Pour réaliser ce TP, il est nécessaire de maîtriser les bases de la programmation orientée objet en Java et d’avoir des connaissances sur les tests unitaires, notamment avec Mockito.

Objectifs

  • Manipuler les patrons de conception Observable et Décorateur
  • Comprendre et appliquer les principes SOLID
  • Utiliser les fonctionnalités d’Observable en Java 8
  • Écrire des tests unitaires avec des objets Mock

Prérequis et mise en place

  • Connaissances en programmation orientée objet en Java
  • Environnement Java 8 ou supérieur
  • Bibliothèque Mockito pour les tests unitaires
  • Notions sur les patrons de conception Observer et Décorateur
  • Accès à un IDE ou un terminal pour coder et exécuter les tests

Exercice 1 : Le patron de conception Observable

Dans cet exercice, vous allez implémenter la partie affichage d’une station météo, un exemple classique du patron Observer. La station météo (WeatherData) récupère des données de température, humidité et pression, et notifie plusieurs afficheurs qui doivent afficher ces données.

La spécification initiale est incomplète et ne respecte pas les principes SOLID car la classe WeatherData est fortement couplée aux afficheurs. L’objectif est donc de proposer un diagramme de classes basé sur le patron Observer pour découpler WeatherData des afficheurs.

À faire :

  • Proposer un diagramme de classes respectant le patron Observer
  • Implémenter cette solution en Java
  • Utiliser des objets Mock pour écrire des tests unitaires validant le bon fonctionnement

Pourquoi : Cette étape permet de comprendre comment découpler les composants en respectant SOLID, en particulier le principe de responsabilité unique et le principe d’ouverture/fermeture.

Résultat attendu : Une classe WeatherData qui ne connaît pas directement les afficheurs, mais qui notifie des observateurs via une interface commune.

Exercice 2 : Utilisation d’Observable en Java 8

Depuis Java 8, le patron Observable est disponible dans le paquetage java.util. Vous devez reprendre l’exercice précédent en utilisant cette implémentation standard.

À faire :

  • Modifier le code précédent pour que WeatherData étende ou utilise java.util.Observable
  • Adapter les afficheurs pour qu’ils implémentent java.util.Observer
  • Modifier les tests unitaires pour prendre en compte cette nouvelle architecture
  • Réfléchir à l’utilisation de Mockito pour tester la partie observable

Pourquoi : Cela permet de comprendre comment utiliser les outils fournis par la JDK pour implémenter le patron Observer et comment adapter les tests en conséquence.

Résultat attendu : Une application fonctionnelle utilisant java.util.Observable et java.util.Observer, avec des tests unitaires adaptés.

Exercice 3 : Application du patron Observable au concours de galettes

Dans ce nouvel exercice, vous appliquez le patron Observable à un concours de mangeurs de galettes. Vous devez ajouter une classe Supporteur qui représente les spectateurs du concours. Ces supporteurs doivent applaudir à chaque élimination d’un concurrent.

À faire :

  • Modifier le diagramme de classes pour intégrer la classe Supporteur
  • Utiliser le patron Observable pour découpler les supporteurs du concours
  • Écrire les tests unitaires associés pour valider cette interaction

Pourquoi : Cet exercice illustre l’utilisation du patron Observer dans un contexte différent, renforçant la compréhension de son utilité pour gérer des événements et notifications.

Résultat attendu : Une classe Supporteur observant le concours, recevant une notification à chaque élimination, avec des tests unitaires validant ce comportement.

Exercice 4 : Finalisation du concours avec le patron Décorateur

Le concours de galettes s’agrandit avec de nombreux concurrents proposant toujours plus d’ingrédients. La conception actuelle basée sur des fabriques devient difficile à maintenir. Vous devez donc reprendre la conception en introduisant le patron Décorateur pour gérer les ingrédients des galettes.

À faire :

  • Modifier le diagramme de classes pour intégrer le patron Décorateur dans la gestion des ingrédients
  • Modifier le code de l’application en conséquence
  • Adapter les tests unitaires au fur et à mesure des modifications

Pourquoi : Le patron Décorateur permet d’ajouter dynamiquement des fonctionnalités (ici des ingrédients) sans modifier les classes existantes, améliorant la maintenabilité.

Résultat attendu : Une conception flexible où les galettes peuvent être décorées avec différents ingrédients, avec un code et des tests cohérents.

Résultats attendus

  • Une implémentation du patron Observer qui découple WeatherData des afficheurs
  • Une adaptation utilisant java.util.Observable et java.util.Observer en Java 8
  • Une extension du concours de galettes avec une classe Supporteur observant les éliminations
  • Une gestion des ingrédients des galettes basée sur le patron Décorateur
  • Des tests unitaires utilisant des objets Mock pour valider chaque étape

Pièges courants

  • Ne pas découpler correctement WeatherData des afficheurs, ce qui mène à un couplage fort et à une violation des principes SOLID
  • Oublier d’adapter les tests unitaires lors de la migration vers java.util.Observable
  • Ne pas utiliser d’interface commune pour les observateurs, rendant le code rigide
  • Confondre le rôle du patron Décorateur avec celui d’une simple extension ou héritage
  • Ne pas mettre à jour les tests lors de l’introduction du patron Décorateur, ce qui peut masquer des erreurs

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions