TD Programmation par objets - Java, Licence3 - Module ULIN504, Université de Montpellier II- Resp. J. Ferber

TD 3: Tableau et Surcharge

 

1 Tableau de type primitif

 

Exos 1: On veut coder le jeu du Morpion. Pour cela, écrivez le code de la classe Morpion. Celle-ci doit posséder les méthodes suivantes :

- void nouvellePartie() : vide la grille du jeu.

- char joueurCourant() : retourne le symbole du joueur courant ('X' ou 'O').

- boolean jouer(int l,int c) : le joueur courant joue à la position (l,c), la méthode retourne false si le coup n'est pas valide.

- boolean gagner() : retourne true ssi le dernier joueur a gagné.

- void affiche() : affiche la grille à l'écran en mode console, pour cela utiliser les caractères: | - X et O.  
Par exemple:  

   
l\c 1 2  3
   1   X|   |  
        ------
   2   X|O|  
        ------
   3   O|  |X

  (NB: ce programme sera complété en TP).

   

2 Tableau d'objets et surcharge

 

Exos 2: Définir une classe Point qui modélise un point dans un espace à 2 dimensions (on supposera que les coordonnées sont représentées sous forme d'entiers). En plus des accesseurs cette classe doit fournir une méthode distance telle que, si p et q sont des instances de Point :

    p.distance(q) -> retourne la distance qui sépare les points p et q.
    p.distance()  -> retourne la distance de p par rapport à l'origine.

NB: Math.sqrt(double d) retourne la valeur de la racine carrée de d.

Exos 3: Définir une classe Polygone qui modélise un polygone dans un espace à 2 dimensions. Le nombre de cotés du polygone est donné en paramètre de construction et ne pourra pas être changé par la suite, par contre les points définissant les extrémités du polygone pourront être manipulés. Pour cela la classe doit fournir les méthodes: 

- int nbrCotes() , retourne le nombre de cotés du polygone.

- Point getPoint(int n) , retourne le point numéro n (si le polygone contient N points on numérote les points de 0 a (N-1)).

- void changePoint(int n, Point p) et void changePoint(int n, int x, int y)  pour changer la valeur d'un point.

  Remarque: on fera attention de NE PAS définir un attribut nbrCotes dans la classe Polygone!

Exos 4: Ajouter à la classe Polygone la méthode perimetre qui calcule et retourne la valeur du périmètre du polygone.

Exos 5: Ecrire un programme qui instancie un polygone à 6 cotés. Puis qui modifie les coordonnées d'un des points extrémités choisi au hasard. Les nouvelles coordonnées de ce point doivent chacune être tirées aléatoirement dans l'intervalle [0;300]. L'opération est répétée avec un autre point jusqu'à ce que le périmètre du polygone atteigne (ou dépasse) la valeur 600.
NB:
La fonction Math.random() retourne une valeur décimale aléatoire comprise dans l'intervalle [0;1[ .