Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1518 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  probleme d'héritage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme d'héritage

n°1280676
blaise_lap​orte
Posté le 10-01-2006 à 17:08:56  profilanswer
 

Voila, j'ai un gros probleme avec l'héritage d'une classe abstraite.
J'ai l'impression que c'est moi qui est pas compris quelque chose, mais j'arrive pas à voir quoi...
 
J'ai une classe abstraite Courbe qui me definie une ArrayList et des méthode pour la manipuler.
De cette classe hérite deux autre classe, CourbeMesure et CourbeGraph
 
Le probleme me vient de CourbeGraph dont voici le constructeur:
 

Code :
  1. public CourbeGraph(Courbe courbe, Graphics2D g2, Dimension dim){
  2.  super();
  3.  this.listePoint = courbe.getListePoint();
  4.  this.dim = dim;
  5.  this.g2 = g2;
  6. //Utilisé pour les tests:
  7.                 System.out.println("this :\n" +this.toString());
  8.  System.out.println("courbe :\n" +courbe.toString());
  9.  System.out.println("this.equals(courbe) :" +this.equals(courbe));
  10. // this.paint();
  11.  this.addPoint(30,5);
  12.  System.out.println("this :\n" +this.toString());
  13.  System.out.println("courbe :\n" +courbe.toString());


 
(Cette classe possede une méthode paint() pour peindre la courbe dans le Graphics2D, mais est ignorée dans ce probleme)
 
L'ennui étant que si je fais une modification de l'objet CourbeGraph (this.addPoint(30,5);), l'objet Courbe reçut en parametre est lui aussi modifié! Pourtant, ce ne sont pas les même objet (this.equals(courbe) : false)
 
Je me doute bien qu'il doit sagir d'une lacune de ma part, mais j'ai beau relire mes bouquin, j'arrive pas à comprendre...
 
Merci de votre aide


Message édité par blaise_laporte le 10-01-2006 à 17:10:34
mood
Publicité
Posté le 10-01-2006 à 17:08:56  profilanswer
 

n°1280705
casper78
Posté le 10-01-2006 à 17:20:40  profilanswer
 


Il me semble, d'après le code que je vois, que ton objet CourbeGraph partage le même tableau de points  
que l'objet courbe reçu en paramètre. Donc,si tu changes (en ajoutant un point par exemple) ce tableau, cela  
le change pour tes deux objets. :heink:  
 
Pour résoudre le problème, il faudrait pour ton objet CourbeGraph que tu fasses une copie de courbe.getListePoint().
 
En espérant que cela t'aide

n°1280728
blaise_lap​orte
Posté le 10-01-2006 à 17:33:34  profilanswer
 

C'est ce que j'avais pensé également, c'est pour cela que j'ai mis la ligne  

Code :
  1. this.listePoint = courbe.getListePoint();


getListePoint() me renvoie l'ArrayList listePoint de l'objet courbe. Donc, d'aprés moi, la listePoint de ma class CourbeGraph est une copie de seul de courbe, mais ne pointe pas sur la même reference.
 
Je pense donc que l'erreur est ailleur (mais je peux me tromper)

n°1280748
souk
Tourist
Posté le 10-01-2006 à 17:45:01  profilanswer
 

blaise_laporte a écrit :

C'est ce que j'avais pensé également, c'est pour cela que j'ai mis la ligne  

Code :
  1. this.listePoint = courbe.getListePoint();


getListePoint() me renvoie l'ArrayList listePoint de l'objet courbe. Donc, d'aprés moi, la listePoint de ma class CourbeGraph est une copie de seul de courbe, mais ne pointe pas sur la même reference.
 
Je pense donc que l'erreur est ailleur (mais je peux me tromper)


oui tu te trompes, ce n'est pas une copie, c'est la meme reference [:itm]

n°1280764
blaise_lap​orte
Posté le 10-01-2006 à 17:55:33  profilanswer
 

Trabadja lamacoere!!!!
 
C'est bon, j'ai compris. Comme de bien entendu, bétise toute simple!!
 
Pour info, si d'autre ont le même probleme:
Dans getListePoint(), je faisais:  

Code :
  1. return listePoint;


alors qu'en faisant

Code :
  1. return new ArrayList<PointMesure>(listePoint);


Je resoue mon probleme!
 
Merci!

n°1281200
blaise_lap​orte
Posté le 11-01-2006 à 11:49:50  profilanswer
 

Du coup, j'ai un doute.
 
Dans java, une méthode get() doit elle renvoyer l'objet ou une copie de l'objet?
 
Je m'explique: j'ai ma méthode getListePoint() qui va renvoyer l'ArrayList listePoint, mais par convention, celle-ci doit elle faire  

Code :
  1. return listePoint;


ou bien:

Code :
  1. return new ArrayList<PointMesure>(listePoint);


 
merci.

n°1283238
kissmytoe
Posté le 13-01-2006 à 19:07:30  profilanswer
 

On ne fais jamais de new dans un get. on fait que retourner


---------------
Yes! A girl in computer science!

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  probleme d'héritage

 

Sujets relatifs
[EasyPHp 1.8.0.1] Problème avec sql et l'heritageConstructeur destructeur probleme avec heritage
[DEBUTANT] Problème héritageprobleme heritage
probleme d'héritagePetit problème avec un héritage : constructeur incorrect ?
[problème c++] Conteneur STL et héritageProbleme heritage/surcharge d'operateur
Probleme d'heritage et de surcharge en C#[ Python ] Problème héritage # 4 (- update- )
Plus de sujets relatifs à : probleme d'héritage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR