Conception et programmation orientées objets avancées Le design pattern Commande (Command) Note : les problèmes proposés sont volontairement simples afin que vous vous focalisiez sur la conception (architecture) logicielle et non sur les détails techniques. Vous simulerez certaines situations demandées par des messages (ex : "le cuisinier prépare le plat") Problème 1 On souhaite créer un gestionnaire de taches capable d'enregistrer et exécuter des taches quelconques. Une tâche inclura un destinataire capable de l'exécuter et les instructions qui lui sont adressées. UML (diagramme des classes) On dispose du diagramme de classes suivant qui décrit les services rendus par le gestionnaire de taches, ainsi qu'un afficheur et un solveur d'équation du second degré. GestionnaireTaches +enregistrerTache(t) +retirerTache(t) +executerLaTache(t)() +executerUneTache() +executerToutesTaches() Afficheur +setMessage(unMessage:String) +affiche() l'opération executerUneTache() exécute la tache la plus ancienne Equation2 +Equation2() +init() +calculeDeterminant() +calculeRacines() +afficheSolutions() l'opération init() demande les coefficients (a, b, c) de l'équation Un client veut utiliser le gestionnaire de taches pour afficher le message "bonjour", le message "au revoir", et résoudre une équation du second degré. Dans le cadre du design pattern Commande : 1) A partir de l'énoncé, préciser qui est l'invocateur et qui sont les receveurs ? quelles sont les commandes ? 2) Compléter le diagramme des classes qui modélise ce problème. Java Traduire le diagramme des classes UML en java, sachant que vous disposez des classes Afficheur et Equation2 téléchargeables ici : http://lipn.univ-paris13.fr/~charnois/S3/files/commande/Afficheur.java http://lipn.univ-paris13.fr/~charnois/S3/files/commande/Equation2.java D. Bouthinon, T Charnois 1/2 Problème 2 Un restaurant emploie un gestionnaire de commandes pour enregistrer les commandes faites par les clients, et les transmettre au cuisinier qui les prépare. UML (diagramme des classes) On dispose du diagramme de classes suivant : GestionnaireCommande Restaurant +enregistrerEntree(Commande) +enregistrerPlat(Commande) +enregistrerDessert(Commande) +activerEntree() +activerPlat() +activerDessert() Cuisinier +preparerEntree() +preparerPlat() +preparerDessert() Dans le cadre du design pattern Commande : 1) Préciser qui est l'invocateur et qui est le receveur et qui est le client de l'invocateur ? 2) Compléter en totalité le diagramme en distinguant les commandes d'entrée, les commandes de plat et les commandes de dessert ? Décrivez les requêtes qu'elles encapsulent. Java Traduire les diagrammes des classes UML en java. D. Bouthinon, T. Charnois 2/2