~ / M2PGI / IHM / tps / 1-pvnrt /
© 2007—2008 - Renaud Blanch
L'objectif de ce TP est de s'initier à l'utilisation de l'architecture PAC en programmant une application simple. Le but est ici de :
Dans ce TP, nous allons créer une application qui permet de jouer avec la formule des gaz parfaits (PV = nRT).
Cette application simule un récipient fermé hermétiquement contenant 1 mole d'un gaz parfait.
Ce gaz est maintenu à une certaine température et à une certaine pression, le volume du récipient peut être modifié.
Le but est d'arriver à une application qui permet de simuler le changement d'une de ces variable et les répercutions de ce changement sur les autres valeurs en suivant la loi des gaz parfaits.
L'interface de notre application pourra avoir la forme suivante :
Par commodité, travaillez dans un répertoire IHM/TP1/
.
Utilisez un fichier par question, en important éventuellement le fichier de l'étape précédente pour réutiliser le travail accompli.
Nous allons tout d'abord nous intéresser au concept de température et réfléchir à sa modélisation par un agent PAC.
Réalisez un agent Temperature
représentant une température en kelvin.
On veut maintenant que la température soit affichée en degrés Celsius, mais reste stockée en kelvin car c'est dans cette unité que la formule des gaz parfaits est exprimée.
Précisez comment l'agent Temperature
doit être modifié, et réalisez ces modifications dans un nouvel agent Celsius
basé sur le code précédent.
On veut maintenant afficher la température et en kelvin, et en degré Celsius. On souhaite bien sûr que les deux vues soient cohérentes, c'est-à-dire que toute modification de la température au travers d'une des vues soit répercutée sur l'autre?
Spécifiez la structure d'agents PAC que vous allez adopter, ainsi que les messages qui transiteront entre eux.
Réalisez ensuite ce nouvel agent MultipleView
en réutilisant au maximum le code écrit aux questions précédentes.
Le but va maintenant être de réaliser l'interface du simulateur de la formule.
On vous fournit le noyau fonctionnel sous la forme du script PVNRT.tcl
à placer dans votre répertoire de travail.
Il place ses fonction et constantes à l'intérieur du namespace PVNRT
et s'utilise ainsi (voir le code pour plus de détails) :
% source PVNRT.tcl % puts "constants: n = $PVNRT::n, R = $PVNRT::R" constants: n = 1., R = 8.31 % PVNRT::equi 1 1 1 1 2.88270706107 0.346896156569
Spécifiez et réalisez un agent Formule
interfaçant ce noyau fonctionnel avec 3 agents représentant les variables Temperature
, Volume
et Pression
chacun dans leur fenêtre.
La température devra être affichée en degré Celsius et stockée en kelvin, le volume en mètres cubes (unité de la formule) et la pression affichée en bar et stockée en pascal (1 bar = 100 000 Pa).
Validez vos spécifications avec votre encadrant avant de passer à la réalisation.
On veut que les présentations des trois variables soient réunies dans une même fenêtre. Identifiez les modifications à effectuer et réalisez la nouvelle interface.
On veut, pour finir, que lorsque l'utilisateur appuie sur les touches <Control>
et <p>
en meme temps, l'interface se modifie pour passer du mode horizontal précédent à un empilement vertical.
Faire une seconde fois cette combinaison de touche doit ramener à l'état initial.
Identifiez le partie affectées par les modifications à effectuer puis réalisez ces modifications.
mise à jour : 10 octobre 2007