Forum Clubic

Aide programmation java

Salut,

J’ai un exercice de programmation java pour lequel j’ai un léger problème.
Lors de l’exécution du programme, le résultat me semble faux.

Si les personnes ayant plus d’expérience dans la programmation en java peuvent éventuellement m’indiquer différents changement à effectuer ainsi que les erreurs, je suis preneur.

Le sujet en question:
http://img11.hostingpics.net/pics/699562sujetclubic.jpg

J’ai posté tous ce que j’ai fait sur le site piratepad, site qui vous permettra de modifier directement mon code et ajouter des remarques si nécessaires. https://www.piratepad.ca/p/Demande_aide_clubic

Merci d’avance à tous ceux qui m’aideront.

Bonjour,
quelqu’un peut il m’aider ?

Si tu souhaites un coup de main, il faut que tu présentes un problème précis. Là tu dis “le résultat me semble faux” mais tu ne présentes pas le résultat obtenu et tu n’expliques pas pourquoi ça te semble faux.

De plus, ton invitation à “modifier directement ton code” sonne un peu à la manière d’un “faites le boulot à ma place et je viendrai récupérer le résultat”.

Si ton sujet est un exercice scolaire, il vaut mieux qu’on t’aide à comprendre tes erreurs et que tu fasses les corrections toi-même pour que ça te permette de comprendre et d’apprendre.

J’ai proposé de passer par piratepad pour faciliter l’échange à vrai dire. Je le laisse néanmoins pour montrer mes différentes classes crées à ceux voulant m’apporter de l’aide.

Cela est faux, car lors de l’exécution de la classe Test, j’obtient le résultat là: Figure@37efd36
Il me semble que lorsque j’ai une exécution dont le résultat est sous cette forme, c’est du au toString.

Mais débutant en java, je ne sais pas comment modifier mes différentes classes pour avoir le bon résultat qui s’affiche.
Edité le 17/11/2013 à 18:59

Ton résultat est tout à fait normal. toString est définie dans Object et renvoie le nom de la classe de ton objet (“a” est une instance de “Figure”) suivie de “@” suivie d’un hash de ton objet.

Tu espérais obtenir quoi comme résultat à la place ?

Si tu souhaites un résultat différent à l’appel de toString, il faut que tu surcharges toString dans la classe Figure.

La classe Test me servant à vérifier les classes précédentes,je me suis dit qu’une fois exécuté, cela m’indiquer les longueurs de la figure ( 0.0 et 0.0 ainsi que la couleur orange de la figure).

Concernant ma méthode statique Instances(), je n’ai aucune idée sur la véracité de ce que j’ai fait, car j’ai suivi un exemple trouvé sur le net pour la faire, n’ayant pas encore abordée cette notion. Elle vous semble cohérente ?

<< il faut que tu surcharges toString>> : Cela signifie quoi ?
Edité le 17/11/2013 à 19:10

Réfléchis à ce qui se passe quand tu appelles la méthode toString sur l’objet “a” !

“a” est une instance de Figure.

La JVM recherche la méthode toString dans la classe Figure, mais comme ce n’est pas là qu’est définie la méthode toString, la JVM remonte dans les classes dont Figure hérite pour trouver la méthode toString. En l’occurrence, c’est dans la classe Object qu’est définie toString, et ça renvoie ce que je disais plus haut : le nom de la classe sur laquelle a été appelée la méthode, puis un “@”, puis un hash.

Donc nulle part tu n’appelles une méthode qui te renvoie des informations sur le “x”, le “y” ou la couleur de ta Figure. Si tu veux accéder à ces informations, il faut donc que tu appelles getX ou getY qui sont des accesseurs publics aux attributs “x” et “y” qui sont privés.

Surcharger consiste à redéfinir une méthode qui a été définie dans une superclasse. Autrement dit, l’appel à toString tel que tu le fais actuellement ne te donne pas le résultat qui t’intéresse, donc tu peux redéfinir toString dans la classe Figure afin que toString te donne les informations que tu veux.