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 :
- paramétrer la variable d'environnement JAVA_HOME
à /usr/lib/jvm/java-6-sun/
et inclure $JAVA_HOME/bin
dans votre variable d'environnement PATH ;
- lancer eclipse ;
- indiquer comme workspace
le répertoire dans lequel vous travaillerez. Il est
recommandé d'utiliser différents espaces de travail selon
l'activité (TD POA, Projet ...). Par exemple, utilisez ~/liens/travail/POA/workspace.
- créer un projet Formes.
Vérifier dans le dialogue que le JRE utilisé a bien comme
version 1.6.
- y
inclure un paquetage formes.
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 :
- une translation de vecteur (x,
y),
- une translation positionnant le centre de gravité
en un point P donné,
- des changements de taille en
fonction de la forme considérée
- 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.
- 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.
- Quel problème constatez-vous sur la classe Cercle ?
Proposer une solution.
- 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.
- Ecrire une classe Carre.
Quelles peuvent être les relations entre cette classe et la
classe Rectangle
?
- 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
- 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.
- 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.