POA - TD1 : Formes

Eclipse

Pour l'ensemble des TP, eclipse est l'environnement de développement préconisé. Nous vous invitons dès à présent à vous référer à la documentation sur le site officiel www.eclipse.org mais également aux nombreux tutoriels disponibles sur Internet pour prendre en main cet outil.
Pour configurer correctement votre environnement pour ce premier TP, vous devez :

Héritage et Délégation

On souhaite écrire un programme pour manipuler des formes géométriques :
on doit disposer de méthodes donnant leur périmètre, leur surface, leur centre de gravité.
on doit pouvoir leur appliquer différentes transformations géométriques :
  1. Chercher dans l'API Java (http://java.sun.com/javase/6/docs/api/) les classes relatives aux points. Comprendre et justifier l'arborescence des classes.
  2. On considère la classe Rectangle ci-jointe. Ecrire une classe Cercle sur le même modèle et une classe TestFormes possédant une méthode main testant les deux classes Rectangle et Cercle.
  3. Quel problème constatez-vous sur la classe Cercle ? Proposer une solution.
  4. Ecrire une classe Formes possédant une méthode de classe afficher qui affiche une forme en utilisant la méthode toString() de celle-ci (affichage de ses caractéristiques sur la sortie standard). Quel problème constatez-vous ? Proposer une solution.
  5. Ecrire une classe Carre. Quelles peuvent être les relations entre cette classe et la classe Rectangle ?
  6. On souhaite maintenant colorer les formes avec une couleur de fond et une couleur d'encre. Comment rajouter ce service sans modifier le code existant et en évitant toute duplication ?

Vue

  1. Rajouter une méthode privée messageBouger() qui affiche un message "Je bouge en x,y" et qui devra être appelée à chaque mouvement d'une forme. 
  2. On souhaite remplacer le clonage du point dans le renvoi du centre de gravité par l'usage d'une vue. Cela signifie que tout action sur le point renvoyé aura un effet sur le centre de gravité de la forme. Rappelez le concept de vue et proposez une solution qui conserve la contrainte de la question précédente.