POA
- TD3 + Projet : Graphes
Le sujet ci-dessous donnera lieu à trois
séances de TD consacrées
à l'élaboration d'un éditeur de graphes. Le projet
consistera utiliser cet éditeur pour éditer des automates
en utilisant également le TD 2.
Partie 1
Au cours de cette première partie, on demande de réaliser
un composant
graphique permettant de créer des cercles et de les bouger.
Les composants graphiques
utilisés sont une JFrame contenant un JComponent.
Voici les étapes à suivre :
- Créer une classe GraphFrame héritant de JFrame et
une classe GraphComponent héritant de JComponent. Une GraphFrame
contiendra un GraphComponent. D'autre part, les instances de
GraphComponent auront une taille par défaut de 500x500.
- Rendre les instances de GraphComponent instances de
MouseInputListener. Tracer l'écoute des évènements
"souris" sur un GraphComponent dans la sortie standard.
- Dessiner dans le GraphComponent un cercle de rayon 5 et modifier
la gestion des évènements pour que lorsque
l'on clique sur le cercle, "Gagné" s'affiche sur la sortie
standard.
- Modifier la gestion des évènements pour que le
cercle soit créé lorsque l'on presse le bouton de la
souris, s'il n'existe pas
déjà, puis déplacé si l'on drague avant de
relâcher.
- Gérer l'existence de plusieurs cercles.
Partie 2
- Proposer une version utilisant l'API Java2D.
On utilisera des Ellipse2D
pour les cercles.
- Rajouter des ascenseurs au GraphComponent.
- Ajouter une barre de menu permettant d'ouvrir et de fermer de
nouvelles fenêtres, et de quitter l'application. Utiliser un
dialogue de confirmation avant de quitter.
- Ajouter une barre d'outil sur le coté gauche. Placer dans
cette barre des boutons permettant de choisir des formes
différentes : cercle, carré ... On utilisera un GridLayout
dans la barre d'outils.
Partie 3
- Comment facilement ajouter de nouvelles formes : petits
carrés, gros cercles ... ?
- Modifier la gestion des évènements pour que si la
touche "alt" est enfoncée lorsque l'on presse le bouton de la
souris, une arête (segment
de droite) soit crée entre deux formes. S'il n'existe pas de
forme au point
où l'on appuie et/ou au point où l'on relâche, une
nouvelle forme sera créée.
- Modifier la gestion des évènements pour que si l'on
appuie sur la barre d'espace durant la création d'une
arête, cela crée un point de brisure. Les points de
brisures seront affichés sous la forme de cercles vides que l'on
pourra déplacer.
Partie 4
- Utiliser le bouton de droite pour supprimer des
éléments : formes, arêtes, points de brisure.
- Numéroter les sommets.
- Ajouter des étiquettes sur les arêtes.
- Ajouter des flèches sur les arêtes.
Projet
Le projet consistera à satisfaire le cahier des charges suivant
:
- utiliser l'éditeur
de graphes pour créer un
automate en utilisant également le TD2 ;
- sauvegarder les automates dans des fichiers et permettre leur
chargement. On utilisera en particulier le composant JFileChooser ;
- visualiser la reconnaissance d'un mot dans l'éditeur.
Le point de départ sera le corrigé des TD
précédents, dont le projet sera
une extension. Il est donc demandé de ne pas modifier le code
existant, sauf si vous pouvez montrer que c'est la seule solution
acceptable.
Vous pouvez également améliorer la qualité de
l'éditeur (couleurs, tracés des arêtes,
interdiction d'arcs multiples ou de boucles sans points de brisure...).
Toutefois, la note sera plus basée sur la
qualité du code et du rapport que sur la quantité.
Notez que durant la réalisation de ce projet, deux
séances de TD devront
vous permettre de discuter de vos choix de réalisation, de
discuter 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 code devra être remis le vendredi 12 décembre
avant 16h. Tout retard sera sanctionné. Le rapport sera à
remettre avant le 2 janvier à 12h, sous forme d'un fichier PDF
envoyé par email.
Ce 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.
Le code devra être remis sous la forme d'une archive (.zip) du
projet Eclipse.
Des présentations orales devant machine seront organisées.
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).