Projet IPA 2001 Java : Géométrie
I. Présentation du contexte
But du projet
Ce projet a comme but de définir un ensemble de classes et interfaces
utiles pour toute application dans le domaine de la géométrie.L'intérêt
pédagogique (technique en Java) est de manipuler les notions d'héritage,
d'objet membre, d'interface et de réutilisation de code. La géométrie
est un cadre idéal pour manipuler ces concepts.
Contenu
Le projet consiste en la représentation de formes géométriques
en 2 et 3 dimensions. Aucun dessin ne sera effectué par l'application,
seuls la représentation mémoire et l'affichage des paramètres
des formes seront pris en compte. Il faut concevoir le projet comme la réalisation
de classes utilitaires et d'une classe utilisatrice permettant de manipuler les
formes. En aucun cas, vous ne serez amené à employer les classes
Java permettant de faire du dessin en 2D et 3D.
II. Contenu du projet
Il est impératif
de bien relire vos notes de cours et les exemples associés concernant
l'héritage, les classes abstraites, les interfaces et les implémentations.
Dans un premier temps, le travail consiste à définir les classes
ou interfaces utilitaires suivantes. Si d'autres membres que ceux proposés
dans l'enoncé vous semblent intéressants, n'hésitez pas
à les ajouter mais justifiez leur ajout. Vous devrez définir les
constructeurs qui vous semblent indispensables. Il en faut au moins un par classe.
En justifiant votre point de vue, vous devrez également qualifier chaque
classe comme étant soit une classe "normale", soit une classe
abstraite, soit une interface. Chaque classe devra contenir la méthode
toString()
.
- La classe ou interface
Point
représente un point géométrique
en dimension quelconque, c'est-à-dire avec un nombre de coordonnées
défini lors de la construction de l'objet. Cette classe contient aux
moins les membres suivants :
coordonnées en dimension n
les méthodes deplacer()
et toString()
. Attention,
à vous de déterminer le prototype exact de ces méthodes.
- La classe ou interface
Vecteur
définie par la données
de 2 points et contenant la méthode norme()
calculant
la norme du vecteur (racine carrée de la somme du carré des
composantes).
- La classe ou interface
Forme2D
représente toute forme
géométrique dans un espace à 2 dimensions (plan). Elle
contient :
un centre ;
les méthodes surface()
et perimetre()
;
- La classe ou interface
Forme3D
représente toute forme
géométrique dans une espace à 3 dimensions. Elle contient
:
un centre ;
les méthodes surface()
et volume()
;
- Les classes ou interfaces
Cercle
, Ellipse
, Carre
,
Rectangle
, PolygoneRegulier
. Vous penserez à
réutiliser au maximum le code déjà écrit. Les
formes ainsi définies sont (évidemment) des formes 2D ; à
bon entendeur, salut !
- Les classes ou interfaces
Sphère
, Ellipsoïde
,
Cube
, Parallélépipède
, PolyèdreRegulier
.
Vous penserez à réutiliser au maximum le code déjà
écrit. Les formes ainsi définies sont (évidemment) des
formes 3D ; à bon entendeur, re-salut !
- La classe ou interface
Kandinsky2D
représente un ensemble
de formes 2D. Elle contient les membres suivants :
le ou les champs que vous jugerez utile
les méthodes surfaceTotale()
, ajouterForme()
et retirerForme()
. Vous déterminerez les prototypes exacts
de ces méthodes.
- La classe ou interface
Kandinsky3D
représente un ensemble
de formes 3D. Elle contient les membres suivants :
le ou les champs que vous jugerez utile
les méthodes surfaceTotale()
, volumeTotal()
, ajouterForme()
et retirerForme()
. Vous déterminerez les prototypes exacts
de ces méthodes.
Dans un second temps, vous écrirez un programme utilisant les classes
que vous avez définies précédemment et permettant ainsi
de les tester. Vous pouvez tester progressivement vos classes pour mieux y cerner
d'éventuels problèmes.
Commencez par définir les
liens entre les différentes classes que vous créerez avant d'écrire
le code de leurs méthodes. Seulement ensuite, vous écrire l'implantation
de chaque classe, c'est-à-dire le code des méthodes.
L'achèvement du projet donne une bonne vision de ce qu'est la réutilisabilité
en java à travers l'héritage et l'implantation d'une interface.
III. Soutenance et Compte-rendu
Vous devrez rendre un compte-rendu contenant :
- une présentation générale du programme réalisé,
- la liste des classes et les liens entre ces classes (héritage, implémentation),
- une analyse succinte des principaux problèmes à résoudre,
- le listing des fichiers de l'application.
La soutenance consiste en :
- la remise du compte-rendu,
- la présentation de l'application réalisée,
- une démonstration,
- expliquer quelques extraits du code choisis par celui qui effectue la recette.