L’examen consiste à rédiger le code source de cette applet.
Notions utilisées :
Une forme tourne en boucle, elle est pré-dessinée dans une image de double-buffering.
Il est souhaitable qu’elle déborde légèrement de l’image pour bien en révéler les limites.
L’image découpe et recadre en quelque sorte l’animation.
Pour réaliser le mouvement rotatif, vous aurez besoin de quelques notions de trigonométrie.
Le logiciel comporte trois classes.
Le panneau central définit l’image de double-buffering et les différents paramètres de l’animation.
Il contient aussi les getters et setters qui permettent de modifier les variables de l’animation,
les couleurs de la forme, du fond de l’image de double-buffering et de fond du panneau central.
L’étudiant veillera à ce qu’il soit correctement encapsulé
Une fois le panneau central créé, l’applet créera le panneau de contrôle, auquel elle donnera le panneau central afin
que le panneau de contrôle puisse lui donner les ordres en fonction des événements qui affectent ses glissières et case à cocher.
Applet et panneau de contrôle peuvent donc être couplés.
L’utilisation du pattern Observer n’est pas nécessaire.
Le panneau de contrôle contiendra son propre écouteur d’événements.
N’en créez qu'un seul, ne faites pas de classes internes anonymes, (une classe interne anonyme par objet à écouter), ce qui serait fort lourd vu le temps qui vous est imparti.
Attention toutefois que ce n’est pas le même type d’écouteur pour les glissières et pour la case à cocher.
Vous devez donc créer deux écouteurs d’événements dans le panneau de contrôle, et rien que ces deux-là.
Puisque le panneau de contrôle a reçu le panneau principal contenant l'animation par son constructeur, il sait lui donner les ordres adéquats depuis ses gestionnaires d’événements.
Je ne vous en dirai pas plus, tout ceci a été vu au cours.
Commencez par concevoir l’applet, avec ses méthodes de base.
Ensuite, faites le panneau contenant l’animation.
Avec l’image de double buffering et le thread qui l’anime.
Les variables essentielles sont le pas (l’angle d’avancement entre chaque image) et le délai d'attente du thread.
Donnez-leur des valeurs par défaut.
Incorporez le thread dans le panneau et constatez que l’animation tourne.
Si vous avez déjà ça, vous avez un quart des points. L’examen n’est pas encore réussi, mais la base y est.
Ensuite, tant que vous êtes dans le panneau d’animation, faites des getters et setters pour les variables de contrôle :
Les getters et setters seront indispensables : Le panneau de contrôle les invoquera pour manipuler l’animation.
Attention que le panneau de contrôle peut dire n’importe quoi.
Lorsque vous rédigerez vos setters, veillez à ce que les valeurs reçues restent bien dans les limites admissibles, que vous définirez.
Le panneau d’animation ne doit pas se laisser aveuglément piloter par les glissières du panneau de contrôle.
Une fois que vous aurez rédigé votre panneau d’animation,
l’aurez incorporé à l’applet et vu l’animation tourner, concevez alors votre panneau de contrôle.
Il ne contient que six objets : Trois labels, deux glissières et une case à cocher.
Il contient ausi les gestionnaires d’événements qui les écoutent
Le gestionnaire d’événements du panneau de contrôle ne fera pas que passer les valeurs des glissières au panneau d’animation. Il l’interrogera sur les valeurs de ces paramètres, pour les afficher dans les labels en regard des glissières.
C’est ainsi qu’on verra que vos objets sont intelligents :
Il ne suffit pas de leur passer un paramètre pour qu’ils l’acceptent.
Par exemple : concevez une glissière qui délivre des valeurs entre 10 et 1500 millisecondes de temps de sommeil du thread.
Alors que le panneau de l’animation (qui encapsule le thread) n’accepte que les valeurs comprises entre 20 et 800 millisecondes.
Utilisez intelligemment l’encapsulation pour protéger vos objets des valeurs interdites.
Lorsque le panneau de contrôle contrôlera effectivement l’animation, l’examen sera réussi.
Vous aurez prouvé votre maîtrise de la programmation orientée objet événementielle et des threads.
Ensuite, s’il vous reste encore du temps, faites une barre de menus capable de modifier la forme (rond ou carré), creuse ou pleine, ainsi que les couleurs de forme, de fond de l’image de double-buffering et de fond du panneau d’animation.
Si vous n’avez pas eu le temps de faire la barre et les menus, ce n’est pas grave.
Bon travail !
Christian Mascart