Devoir de programmation objet
Licence d’Informatique & ILOG1
19 janvier 2004
Tous les devoirs doivent être remis à votre chargé de TD (en main
propre, dans son casier ou par e-mail), au plus tard le 13 février
2004. Tout devoir rendu après cette date sera considéré comme
non fait.
1 Objectif du devoir
Le but est de mettre en pratique les concepts de la programmation orientée objet et plus particulièrement :
- bien structurer le code d’une application en classes et méthodes ;
- écrire et commenter un programme afin qu’il puisse être réutilisé ;
- utiliser correctement l’héritage et le polymorphisme ;
- utiliser la programmation par contrat.
2 Présentation du sujet
Il s’agit de réaliser un logiciel de dessin très simple, en utilisant le travail que vous avez réalisé à
l’occasion du devoir de Génie Logiciel. Pour réduire la quantité de travail nécessaire, le code
source en JAVA d’une version préliminaire du logiciel vous est fourni (disponible à l’adresse
http://marc.champesme.free.fr/POO/devoir/logicielDessin.tar.gz).
3 Travail demandé
Le devoir doit être réalisé individuellement : chaque étudiant devra rendre sa propre version du logiciel sur
laquelle il sera évalué. Le travail à réaliser consiste à :
- Adapter le code des classes Figure, Segment, FigRectangle, ZoneDessin et ajouter les classes nécessaire
afin de pouvoir prendre en compte la totalité des fonctionnalités demandées pour le devoir de Génie
Logiciel (couleur de contour, couleur de remplissage, épaisseur du contour...). Vous vous limiterez
cependant aux caractéristiques des figures élémentaires et des scènes, en définissant les classes
correspondant aux figures élémentaires suivantes :
- les rectangles (comme sous-classe de ”ligne polygonale”) ;
- les ellipses ;
- les segments (comme sous-classe de ”ligne polygonale”) ;
- les ”lignes polygonales de longueur quelconque (Liste de points)” ;
Ainsi qu’à la notion de scène telle qu’elle est définie dans le devoir de Génie Logiciel : ”Une scène est
constituée par une liste ordonnée de figures élémentaires l’affichage s’effectue en parcourant
cette liste dans l’ordre. Par conséquent, la première figure de la liste est la plus éloignée de la
scène.”
- Compléter la classe Fenetre afin de pouvoir tester les modifications apportées au logiciel ;
- Il n’est pas demandé de modifier l’interface du logiciel, cependant, les améliorations apportées à l’interface
du logiciel pourront faire l’objet de points ”bonus” (i.e. hors barème).
Avertissement La classe FigRectangle, de même que les classes Rectangle ou rectangle2D de la bibliothèque
standard JAVA modélisent un cas très particulier de rectangle (i.e. les rectangles dont les côtés sont parallèles
aux axes) et ne correspondent pas à la notion de rectangle que vous devez modéliser. La notion de rectangle que
vous devez modéliser doit prendre en compte toutes les figures correspondant à la notion géométrique générale de
rectangle, c’est-à-dire, toute figure :
- possédant 4 côtés ;
- et dont les côtés opposés sont de longueur identique ;
- et telle que deux côtés successifs sont perpendiculaires.
4 Evaluation
Compte tenu de l’objectif fixé, ce n’est pas la richesse en fonctionnalité, mais plutôt la qualité de la réalisation
qui sera évaluée.
La qualité de la réalisation sera évaluée selon les critères suivants :
- architecture de l’application : bonne répartition du code en classes, bon usage de l’héritage, bonne
séparation entre le code gérant l’interface utilisateur et le reste du code...
- conception et réalisation favorisant la réutilisabilité du code ;
- utilisation adéquate de la programmation par contrat (dans la définition des assertions et
l’implémentation des méthodes) ;
- bonne documentation des classes ;
- fonctionnement de l’application : absence de bogue (y compris lorsque l’exécution se fait avec contrôle
des assertions activé).
5 Documents à rendre par chaque étudiant
Chaque étudiant rend une disquette et un rapport sur papier contenant :
- Description des modifications apportées à l’application initiale (fichier sur la disquette + version
imprimée) ;
- La documentation (produite par jmldoc ou en cas de difficultés par javadoc) des classes (fichiers
html sur la disquette) ;
- Le code de toute l’application (uniquement sous forme de fichiers sur la disquette).
6 Standards de programmation
-
Commentaires
- Les commentaires doivent être rédigés en respectant les règles suivantes :
- Tous les commentaires doivent être en français ;
- Chaque classe, méthode ou champ public doit posséder son propre commentaire au format javadoc.
-
Choix des identificateurs
- Tous les identificateurs doivent être en français. Les seules exceptions
admises sont les préfixes get et set pour les méthodes servant à consulter ou modifier un champ
particulier.
-
Assertions
- Vous devez définir un invariant pour chaque classe et, sauf cas particulier (qui doit rester rare),
toute méthode doit posséder une pré-condition et une post-condition.
Vous devez vous efforcer d’écrire les assertions en JML de façon à ce qu’elles puissent être activées à
l’exécution. Cependant certaines assertions ne peuvent être décrites de manière satisfaisante en JML, dans
ce cas, les assertions pourront être écrites en français.
-
Visibilité / masquage d’information
- Toutes les classes et les méthodes doivent être déclarées public et tous
les attributs doivent être déclarés private. Il est néanmoins admis que les attributs final soient déclarés
public.
Toute exception à cette règle devra être clairement justifiée dans les commentaires.
-
Variables de classe
- L’usage de variables de classes devra être réservé à des cas exceptionnels (par exemple
variables final).