www.djouabri.com djouabri@djouabri.com Corrigés des Exercices Exercice: Interfaces graphiques
Exercice : Interfaces graphiques Les systèmes d exploitation tels que Microsoft Windows, Mac OS et Linux supportent des interfaces graphiques. Le but de cet exercice est de proposer une modélisation d un système permettant la création de différents composants d une interface graphique (boutons, barres de défilement et menus) en fonction du système d exploitation auquel ils sont destinés. Le modèle doit permettre de créer des composants sans devoir connaitre leurs classes concrètes. Le système doit être indépendant de la façon dont les composants évoluent.
Q1. Quel patron de conception est adapté à ce type de problème? Le système décrit des familles d objet devant être utilisés ensemble. Le patron de conception qui convient le mieux à ce type de problème est le patron Fabrique Abstraite.
Q2. Proposez une modélisation de l ensemble du système sous forme de diagrammes de classes. Le patron Fabrique Abstraite permet de définir une classe abstraite décrivant une interface commune pour la création de chaque variété d objets. Cette classe est nommée FabriqueComposant. Les classes qui l implantent fournissent le code des méthodes de création de chaque type d objet selon le modèle du système en cours. Ainsi, il faut définir une classe par système. Trois sous-classes sont créées : FabriqueComposantWindows, FabriqueComposantMacOS et FabriqueComposantLinux.
Q2. Proposez une modélisation de l ensemble du système sous forme de diagrammes de classes. La hiérarchie des fabriques est comme suit.
Q2. Proposez une modélisation de l ensemble du système sous forme de diagrammes de classes. Pour chaque type de composant graphique, il faut aussi créer une classe abstraite dont les sous-classes concrètes implantent les versions de ces composants selon le format des différents systèmes. Les classes abstraites Bouton, BarreDeDefilement et Menu ont comme sous-classes leurs différentes versions selon le système. Les sous-classes concrètes de Bouton sont BoutonWindows, BoutonLinux et BoutonMacOS. Une méthode de création par composant est ajoutée aux classes de fabrique. Les liens entre les classes de fabrication concrètes et les classes concrètes de composants qu elles créent sont représentés par des flèches en pointillés (relation de dépendance).
Q2. Proposez une modélisation de l ensemble du système sous forme de diagrammes de classes. Le diagramme de composant Bouton
Q2. Proposez une modélisation de l ensemble du système sous forme de diagrammes de classes. Le diagramme de composant BarreDeDefilement
Q2. Proposez une modélisation de l ensemble du système sous forme de diagrammes de classes. Le diagramme de composant Menu
Q2. Proposez une modélisation de l ensemble du système sous forme de diagrammes de classes. Le diagramme de composant graphique
Q2. Proposez une modélisation de l ensemble du système sous forme de diagrammes de classes. Le diagramme final est donc le suivant
Q2. Proposez une modélisation de l ensemble du système sous forme de diagrammes de classes. Enfin le client a accès uniquement aux classes abstraites des composants. Le diagramme final est donc le suivant
Le code Java introduisant les classes abstraites Bouton, BarreDeDefilement et Menu ainsi que leurs sous-classes est comme suit. Des attributs simples sont associés à chaque classe ainsi qu une méthode permettant d en afficher les caractéristiques.
L interface FabriqueComposant est ensuite introduite ainsi que ses trois classes d implantation pour chaque système d exploitation. Chaque classe d implantation crée les objets correspondant aux classes concrètes des composants
Le programme principal introduit dans la classe InterfaceGraphique utilise une fabrique Mac OS puis une fabrique Windows. Les sousclasses concrètes correspondant aux familles d objet n ont pas besoin d être connues par le client.
L exécution de ce programme produit le résultat suivant
4. En quoi consisterait l ajout d un nouveau système d exploitation? Le patron Abstract Factory offre une structure flexible facilitant l ajout ou le retrait de familles d objets. L ajout d un nouveau système d exploitation consiste à créer une fabrique concrète pour ce système ainsi que les produits concrets correspondants.