Les opérateurs


Autres opérateurs


Semaine


Itératives


Derniers tests sur les bases de Java


Héritage et polymorphisme

Sujet n°1

Attributs :

  1. x et y sont de type entiers, j'ai décider de les déclarer constantes (final) parce que d'après la définition, ces coordonnées ne change jamais. Si vous estimez que plus tard, il sera possible de rajouter une méthode qui permettra entre autre de changer ces coordonnnées, il est alors préférable d'enlever ce mot final. Toutefois, il faut garder à l'esprit, qu'il faut toujours se protéger au maximum dans la phylosophie de l'encapsulation pour éviter une mauvaise utilisation d'une personne externe à votre projet.
  2. Dans ce contexte, la classe Cercle représente systématiquement des cercles de rayon 50, il vaut mieux que l'attribut rayon soit également une constante. Pour les mêmes raisons, il n'est peut-être pas utile de faire une réservation mémoire systématique pour chacun des objets, il est plus intéressant que cet attribut soit un attribut de classe en plassant le mot static.
  3. La classe Cercle doit être capable d'elle même d'afficher son tracé sur le panneau client de la fenêtre, il est alors nécessaire de récupérer le contexte graphique. Ce contexte est représenté par la classe Graphics. L'attribut surface représente donc le contexte d'affichage du panneau, et faut que l'affichage soit systématiquement sur ce dernier, il faut donc que surface soit constante.
  4. nombre représente le nombre d'objets de la classe Cercle créés et c'est un attribut de classe. Lors de l'instauration de la classe Cercle la première fois , nombre est initialisé à 0. L'instauration de la classe s'effectue au moment de la création du premier objet. Par la suite, les membres statiques ne sont plus utilisés, sauf si ces derniers sont manipulés par un constructeur.

Méthodes :

  1. Dans cet exercice, on ne peut pas se passer de constructeur. Il est nécessaire pour déterminer les coordonnées du cercle et pour récupérer le contexte d'affichage. De plus, il est utile pour comptabiliser le nombre de cercles déjà créés.
  2. Comme comportement, la classe Cercle doit être capable de s'afficher. Nous utilisons les deux méthodes qui nous concerne issues de la classe Graphics.

Sujet n°2

Lorsque nous plaçons une fenêtre au dessus de l'application et que nous l'enlevons, le système doit réafficher la fenêtre et son contenu. C'est le cas du Panneau qui se réaffiche en appelant la méthode prévue à cet effet qui est paintComponent. A chaque fois que cette méthode est appelée, on demande de créer et d'afficher deux nouveaux cercles (anonymes). Il est alors normal de trouver une numérotation un petit peu fantaisiste. La solution consiste alors à faire la création des objets cercles une fois pour toute en dehors de cette méthode, mais tout de même, à l'intérieur de la classe Panneau. Ces deux cercles deviennent alors des attributs de la classe et lorsqu'on demande d'afficher le panneau, on demande d'afficher les cercles déjà construits. Toutefois, il faut penser à faire passer le contexte d'affichage (qui n'est connu qu'à ce moment là) pour que les cercles s'affichent sur le panneau. Voici une solution possible :

Vous remarquez que j'ai rajouté l'attribut numéro. Enlevez-le et faites le test pour voir la conséquence de cet oubli et tirez-en les conclusions nécessaires.

Sujet n°3

Puisque les tableaux de cercles sont des attributs, il est nécessaire de bien les initialiser pendant la création pour permettre un affichage des plus rapide au moment de l'appel de la méthode paintComponent. Il faut d'abord créer le tableau et l'initialiser. Ensuite, il faut créer et initialiser chacun des objets relatif à Cercle et placer la référence dans chacune des cases du tableau (les objets sont des références). Comme nous sommes obligés de faire une initialisation relativement complexe qui nécessite plusieurs instructions avec notamment une itération, il faut utiliser un bloc d'initialisation, ou bien, utiliser un constructeur par défaut en sachant qu'alors il est nécessaire de récupérer le constructeur parent (notion d'héritage qui sera traitée plus tard). J'ai choisi la première solution.

Sujet n°4

 

Dans les exercices précédents, les attributs ne changés jamais pendant toute la durée de vie de l'objet. C'est pour cette raison que ces derniers étaient déclarés final. dans cet exercice, la rayon se modifie au court du temps, c'est donc un attribut classique. Nous désirions un initialisation par défaut de tous les attributs et dans ce cas de figure, il n'est pas nécessaire d'avoir un seul constructeur.

Sujet n°5

Sujet n°6

Sujet n°7

Sujet n°8

Sujet n°9


Interface


Classe Anonyme