POA
- TD3 + Projet : Courbes
Le sujet ci-dessous donnera lieu à deux
séances de TD consacrées
à l'élaboration d'une version de départ. Le projet
consistera à en construire des extensions.
On veut construire une application permettant de visualiser des
fonctions numériques à une variable et dans un intervalle
donné, par exemple x
-> x sin(1/x) entre -Pi et Pi.
Pour cela, on représente les variations
d'une fonction f dont
l'argument et le résultat
sont de type double, sur un intervalle d'étude [x1, x2], à l'aide d'une instance
de
Variations
,
qui implémente l'interface
FunctionVariations
.
Cette représentation permet de calculer une
approximation
de l'intégrale de f
entre x1 et x2. Le but du TD est de l'utiliser
pour visualiser ces
variations sur une fenêtre graphique à l'aide de segments
successifs.
TD
Au cours du premier TD, on demande de réaliser un composant
graphique permettant de visualiser
les variations
de n'importe quelle fonction f
entre deux valeurs x1 et x2. Le choix
de la précision d'affichage se fera interactivement par le biais
d'un menu.
De plus, les informations suivantes seront affichées :
- position de la souris (relativement à la
représentation de la fonction, et si dans la fenêtre) ;
- portion du plan représentée par la zone
d'affichage ;
- approximation de l'intégrale de f entre x1 et x2, compte-tenu du nombre de
segments représentés.
Les composants graphiques utilisés sont les suivants :
- une JFrame contenant
- un JComponent pour le tracé de la courbe (fond vert)
- un JPanel contenant des JLabel pour l'affichage des valeurs
(fond orange)
- un JPanel contenant un JComboBox pour choisir la
précision (fond blanc)
Un second TD sera consacré à la réalisation d'une
fabrique de fonctions unaires, fournissant
- des fonctions unaires usuelles : sin, cos, x (identité),
constante ;
- des fonctions unaires obtenues par des opérations sur des
fonctions passées en paramètre : +, -, *, /, composition
- une fonction unaire à partir de son expression prefixe,
par exemple "* x sin * 2 x"
et à l'interfaçage de cette fabrique avec le
résultat du 1er TD.
Projet
Le projet consistera à satisfaire le cahier des charges suivant :
- implémenter une fonctionnalité de ``zoom'' (avant
et arrière) ;
- autoriser l'affichage simultané de plusieurs fonctions ;
- permettre l'utilisation de plusieurs fenêtres ;
- définir une fonction dans un fichier ;
- ...
Le point de départ sera
le corrigé des TD
précédents, dont le projet sera
une extension. Toute modification
du code fourni par le corrigé
devra être
particulièrement justifiée.
Des
séances de TD
vous permettront de discuter de vos choix de réalisation, de
solutions éventuelles, de vaincre ou de tenir compte du
scepticisme éventuel
de vos enseignants.
Règles
Le projet devra être réalisé par binôme.
Un seul monôme ou trinôme par groupe est autorisé.
Les binômes inter-groupe ne sont pas autorisés, sauf
dérogation dûment justifiée.
Le projet Eclipse zipé devra être remis le vendredi 11
décembre
avant 16h. Un rapport sera être remis le lundi 4 janvier à
10h au format PDF. Tout retard sera sanctionné.
Le rapport devra contenir
- les sources formatées (par exemple en utilisant
a2ps
),
et classées par ordre alphabétique ;
- une présentation du travail réalisé (10
pages max) contenant entre autre
- comment utiliser le logiciel ;
- un schéma de classes au format UML ;
- les alternatives envisagées ;
- les disfonctionnements constatés ;
- les réutilisations possibles.
Des présentations en salle machine du logiciel
réalisé seront organisées à partir du 5
janvier.
Critères d'évaluation
:
- Qualité du source, de la conception objet.
- Robustesse : protection contre les erreurs à
l'exécution.
- Ergonomie de l'interface graphique. Clarté de la
visualisation des informations.
- Initiative (il faut parfois lire le cahier des charges entre les
lignes).
- Originalité (rien n'est plus énervant que de voir
des clônes plus ou moins
camouflés du même programme).