Identifiant :
Mot de passe :

Patrons de conception

Encapsulation d'action

Enoncé du problème :

Modéliser un didacticiel pour apprendre à programmer une calculette. Cette calculette exécute les quatre opérations arithmétiques de base. Le but de ce didacticiel est de permettre de saisir un ensemble d’opérations à effectuer séquentiellement. Le didacticiel présente un bouton par opération arithmétiques, et deux champs de saisie pour les opérandes. Après chaque clic sur un bouton d’une opération, l’utilisateur a alors le choix de recommencer ou d’exécuter la suite d’opérations pour obtenir le résultat. Il est probable que ce didacticiel évolue afin de permettre à l’utilisateur de supprimer la dernière opération de la liste et de prendre en compte l’opération de modulo.

Solution optimale :

Diagramme de classes :

Diagramme de classes

A classical instantiation of the pattern.

Solution alternative 1 :

Diagramme de classes :

Diagramme de classes

This solution grants all the management to the System class but separates the real operation in different classes. So, the solution is valid, but imposes a lot of communications between the System class and the operations classes. Moreover, System does not memorize the operation but an identifier from OperationType. So, the System class must test all the identifiers during the computeOperation that is problematic if there are a lot of operations.

Cliquez ici pour voir le patron abîmé déduit de cette solution alternative

Les têtes de mule
Cédric BOUHOURS
Cédric BOUHOURS
Cédric BOUHOURS