Mini Projet de Java 2ième année

But du projet : présenter graduellement le développement d'une application complexe, en l'occurrence un éditeur de dessins vectoriels.

Première étape : affichage d'un dessin en java, séparation modèle/vue

Question

Indications

Seconde étape : modification d'un dessin affiché. contrôle

Question

  1. Implémentez la possibilité de déplacer les éléments.
  2. Ajoutez la possibilité de visualiser le dessin à n'importe quelle échelle.

Indications

Modification d'un élément

Il y a plusieurs points à considérer :

Échelle

L'échelle intervient à deux niveaux : modèle UML

Troisième étape : sécurisation et automatisation. design pattern observateur.

Question

On veut maintenant afficher le dessin simultanément dans deux objets. Le premier sera à l'échelle 1, et permettra la manipulation du dessin ; le second sera à l'échelle 1/4, et servira de vue d'ensemble.

Indications

Pour faire cette question, on utilisera la classe Observable et l'interface Observer. Dans les questions précédentes, vous avez probablement appelé repaint explicitement après une modification. Normalement, c'est le contrôle (votre Listener) qui s'en est chargé. Un Observable est un objet qui prévient d'autres objets quand il est modifié. Ceux-ci sont typiquement des visualisations, qui se mettent alors à jour. L'intérêt de la chose est que la tâche de prévenir les visualisations n'est plus à la charge du contrôle. L'observable est doté de deux méthodes : L'observateur en java sera une interface, et l'observable une classe (éventuellement abstraite). En considérant l'architecture suivante :
On a la séquence suivante :
  1. un objet Données est modifié par un appel de la méthode modifier(...).
  2. les modifications ont lieu, puis la méthode appelle PrevenirObservateurs()
  3. pour tous les observateurs enregistrés, la méthode update() est appelée.
  4. en particulier, pour un observateur de type Visualisation, la méthode redessiner() sera appelée.
En java, on peut utiliser la classe Observable et l'interface Observer. Dans notre projet, on fera donc hériter la classe Dessin de Observable. Notez que cela ne résoud pas tout. Quand une Forme est modifiée (par exemple, si ses coordonnées sont changées), cette modification n'est a priori pas vue de Dessin. Une solution possible est que Forme soit aussi Observable, et, pour que le Dessin soit prévenu quand l'une de ses parties est modifiées, que Dessin soit à la fois un Observable (vis à vis de SimpleDrawView), et un Observer vis à vis de ses parties.

Quatrième étape : rationnalisation du contrôle.

Question

Indications

Cinquième étape : fonction undo ; design pattern commande

Question

Indications


Serge ROSMORDUC
Last modified: Mon Oct 6 17:43:42 CEST 2003