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().

  1. 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.

  2. 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).

  3. 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() ;

  4. 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() ;

  5. 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 !

  6. 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 !

  7. 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.

  8. 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 :

La soutenance consiste en :