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

  FORUM HardWare.fr
  Programmation
  Java

  Type objet

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Type objet

n°932088
joquetino
Posté le 26-12-2004 à 15:47:30  profilanswer
 

Bonjour à tous,  
 
J'ai un p'tit souci pour comparer le type d'objets. Je m'explique. J'ai un  
type Forme. Deux autres types, carre et rectangle, héritent de Forme.
J'ai une liste de type Forme.
Or, j'aimerai à partir de celle liste en construire une nouvelle, qui ne contient que les éléments de type carre.  
Existe t-il une fonction qui pourrait comparer les types, afin de résoudre mon problème?
 
Merci d'avance.

mood
Publicité
Posté le 26-12-2004 à 15:47:30  profilanswer
 

n°932090
sircam
I Like Trains
Posté le 26-12-2004 à 15:50:43  profilanswer
 

if (myObject instanceof Carre)
...
 
ou encore
 
myObject.getClass() à comparer à Carre.class()


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°932189
nraynaud
lol
Posté le 26-12-2004 à 21:33:52  profilanswer
 

sircam a écrit :

if (myObject instanceof Carre)
...
 
ou encore
 
myObject.getClass() à comparer à Carre.class()


tu veux une fessée ?

n°932301
maximew
Coffee and cigarettes and Cate
Posté le 27-12-2004 à 11:33:12  profilanswer
 

nraynaud a écrit :

tu veux une fessée ?


???
C'est tout à fait juste.


---------------
Mon Flickr
n°932314
benou
Posté le 27-12-2004 à 11:43:09  profilanswer
 

<nraynaud style="resumed">
instanceof c'est mal.
design patern visitor rulez
bande de nazes
</nraynaud>


---------------
ma vie, mon oeuvre - HomePlayer
n°932317
kadreg
profil: Utilisateur
Posté le 27-12-2004 à 11:44:14  profilanswer
 

maximew a écrit :

???
C'est tout à fait juste.


 
Je vote la suppression de instanceof de java pour que les gens apprennent la programmation correctement :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°932388
krosso
j'suis à la bourre
Posté le 27-12-2004 à 12:18:13  profilanswer
 

benou a écrit :

<nraynaud style="resumed">
instanceof c'est mal.
design patern visitor rulez
bande de nazes
</nraynaud>


 
Si vous avez le temps de nous mettre un petit exemple concret de ce DP pour le cas sus-cité...
 

n°932446
sircam
I Like Trains
Posté le 27-12-2004 à 13:11:05  profilanswer
 

Bande d'extrémistes :o
 
Qu'est-ce qui vous dit que les conditions d'applicabilité du pattern sont rencontrées ?
 
Je ne devrais pas me limiter à répondre à la question "Existe t-il une fonction qui pourrait comparer les types, afin de résoudre mon problème?", mais faut pas non plus pousser.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°932447
kadreg
profil: Utilisateur
Posté le 27-12-2004 à 13:17:07  profilanswer
 

sircam a écrit :


Qu'est-ce qui vous dit que les conditions d'applicabilité du pattern sont rencontrées ?


 
Qu'es-ce qui te dit qu'elles ne le sont pas ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°932449
sircam
I Like Trains
Posté le 27-12-2004 à 13:21:25  profilanswer
 

Je n'en sais rien, et c'est pour ça que je m'abstiens de crier aux nazes et de proférer des aphorismes à l'emporte-pièce :)


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
mood
Publicité
Posté le 27-12-2004 à 13:21:25  profilanswer
 

n°932450
the real m​oins moins
Posté le 27-12-2004 à 13:22:00  profilanswer
 

je voudrais pas mettre de l'huile sur le feu, mais c'est benou et lui seul qui a crié au naze [:cupra]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°932455
glod 2
Votre trajet, notre projet.
Posté le 27-12-2004 à 13:29:01  profilanswer
 

Ah tiens instanceof c'est mal ? :D M'en était jamais servi mais jme servais de getClass(), et jcrois que c'est mal aussi non ? :D
Y a quoi d'autre alors ? :o

n°932456
sircam
I Like Trains
Posté le 27-12-2004 à 13:32:11  profilanswer
 

the real moins moins a écrit :

je voudrais pas mettre de l'huile sur le feu, mais c'est benou et lui seul qui a crié au naze [:cupra]


Toi, n'en rajoute pas !  :sol:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°932459
benou
Posté le 27-12-2004 à 13:35:31  profilanswer
 

the real moins moins a écrit :

je voudrais pas mettre de l'huile sur le feu, mais c'est benou et lui seul qui a crié au naze [:cupra]


spamoi c'est nraynaud :o


---------------
ma vie, mon oeuvre - HomePlayer
n°932467
sircam
I Like Trains
Posté le 27-12-2004 à 13:42:22  profilanswer
 

Glod 2 a écrit :

Ah tiens instanceof c'est mal ? :D M'en était jamais servi mais jme servais de getClass(), et jcrois que c'est mal aussi non ? :D
Y a quoi d'autre alors ? :o


Beh, y'a "Visitor pattern rulez, instanceof suckz", you know man [:suomi]
 
Sérieusement, je ne serais pas aussi catégorique. Si tu te retrouves, un peu partout, à mélanger des instanceof ou des getClass() avec du code dont ça ne devrait pas être le soucis, alors il est conseillé de visiter le pattern mentionné.
 
Par contre, si les conditions d'applicabilité du pattern ne sont pas remplies, ou que les méthodes ici décriées ne sont utilisées qu'avec parcimonie et de manière ponctuelle et séparée du reste, et que tu sais ce que tu fais, alors je ne vois pas d'obstable à les employer.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°932469
kadreg
profil: Utilisateur
Posté le 27-12-2004 à 13:44:34  profilanswer
 

sircam a écrit :

et que tu sais ce que tu fais


 
 
On écrit pas du code pour soi, mais pour celui qui va le maintenir :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°932470
glod 2
Votre trajet, notre projet.
Posté le 27-12-2004 à 13:44:41  profilanswer
 

Bah ça m'est arrivé qu'une ou 2 fois, et c'était quand jfaisais mon projet qui construisait une base de donnée à partir d'un objet donc j'étais obligé d'introspecter et de getClasser :D
 
ok :jap:

n°932478
sircam
I Like Trains
Posté le 27-12-2004 à 13:52:23  profilanswer
 

kadreg a écrit :

On écrit pas du code pour soi, mais pour celui qui va le maintenir :o


Par "tu sais ce que tu fais", j'entends que tu as une maitrise suffisante pour faire ce choix en connaissance de cause. Choix qui, dans le cas d'espèce, te semble a priori adapté.
 
Fatalement, il sera compréhensible à celui qui fera la maintenance, car une utilisation raisonnée de instanceof / getClass() ne nuira pas à la compréhension.
 
Il reste toujours les commentaires, que tu peux taper en abondance pour justifier et expliquer une implémentation particulière.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°932480
benou
Posté le 27-12-2004 à 13:53:56  profilanswer
 

krosso a écrit :

Si vous avez le temps de nous mettre un petit exemple concret de ce DP pour le cas sus-cité...


je dis pas que c'est adapté à ce cas, mais ca donnerait en gros ca.
 
modifs à faire sur les objets existants :

Code :
  1. public interface FormeVisitor() {
  2.    public void visitingForme(Forme f);
  3.    public void visitingCarre(Carre c);
  4.    public void visitingRectangle(Rectangle r);
  5. }
  6. /** pour faciliter l'écriture des visitor */
  7. public interface FormeVisitorAdapter() {
  8.    public void visitingForme(Forme f) {}
  9.    public void visitingCarre(Carre c) {}
  10.    public void visitingRectangle(Rectangle r) {}
  11. }
  12. public class Forme {
  13.    //...
  14.    public void visit(FormeVisitor visitor) {
  15.       visitor.visitingForme(this);
  16.    }
  17. }
  18. public class Carre extends Forme {
  19.    //...
  20.    public void visit(FormeVisitor visitor) {
  21.       visitor.visitingCarre(this);
  22.    }
  23. }
  24. public class Rectangle extends Forme {
  25.    //...
  26.    public void visit(FormeVisitor visitor) {
  27.       visitor.visitingRectangle(this);
  28.    }
  29. }


 
utilisation :  

Code :
  1. public List<Carre> keepOnlyCarre(List<Forme> formeList) {
  2.       final List<Carre> carreList = new ArrayList<Carre>();
  3.       FormeVisitor visitor = new FormeVisitorAdapter() {
  4.          public void visitingCarre(Carre c) {
  5.             carreList.put(c);
  6.          }
  7.       }
  8.       for (Forme f : formeList) {
  9.           f.visit(visitor);
  10.       }
  11.       return carreList;
  12.    }


 
 
Le DP Visiteur est un peu lourd à mettre en place, et faut aire un effort pour s'y faire au début, mais dès qu'on est amené à souvent différencier le traitement en fonction du type de l'objet, il se révèle vite efficace !


---------------
ma vie, mon oeuvre - HomePlayer
n°932483
benou
Posté le 27-12-2004 à 13:55:31  profilanswer
 

kadreg a écrit :

On écrit pas du code pour soi, mais pour celui qui va le maintenir :o


justement, pour peu que le gars connaisse pas ce DP, il va en chier pour comprendre !! [:ddr555]


---------------
ma vie, mon oeuvre - HomePlayer
n°932484
maximew
Coffee and cigarettes and Cate
Posté le 27-12-2004 à 13:56:36  profilanswer
 

Honnetement, je crois que même pour la personne qui maintient le code, un petit instanceof ne gène pas du tout à la compréhension.
Le code et la technique sont une chose, le principe et le concept en sont une autre. Et pour ce qui est de la maintenance, c'est surtout la 2eme qui importe...


Message édité par maximew le 27-12-2004 à 14:08:19

---------------
Mon Flickr
n°932486
kadreg
profil: Utilisateur
Posté le 27-12-2004 à 13:58:12  profilanswer
 

maximew a écrit :

Honnetement, je crois que même pour la personne qui maintient le code, un petit instanceof ne gène pas du tout à la compréhension.


 
Généralement, le instanceof  va poser problème bien plus tard, puisqu'on a une instance qui va suivre un chemin non prévu, et pas être traité.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°932493
maximew
Coffee and cigarettes and Cate
Posté le 27-12-2004 à 14:07:24  profilanswer
 

benou a écrit :

justement, pour peu que le gars connaisse pas ce DP, il va en chier pour comprendre !! [:ddr555]


Oui, enfin dans ce cas, ca n'excuse pas! Un analyste programmeur se doit d'à peu près tous les connaitre!


---------------
Mon Flickr
n°932495
lorill
Posté le 27-12-2004 à 14:09:24  profilanswer
 

mouahahah. si y'en a un sur 10 qui en a ne serait-ce qu'entendu parler, ca serait déja pas mal

n°932497
the real m​oins moins
Posté le 27-12-2004 à 14:13:15  profilanswer
 

benou a écrit :

spamoi c'est nraynaud :o


pas du tout


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°932580
benou
Posté le 27-12-2004 à 15:47:06  profilanswer
 

tout le monde s'en fout de mon exemple de Visiteur avec du jdk1.5 dedans [:ruisseau de larmes]
 


et c'est moi qui suis 1er degrès  :pfff:


---------------
ma vie, mon oeuvre - HomePlayer
n°932593
the real m​oins moins
Posté le 27-12-2004 à 16:32:12  profilanswer
 

ha, on peut insulter les autres gratuitement maintenant?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°932595
benou
Posté le 27-12-2004 à 16:33:36  profilanswer
 

the real moins moins a écrit :

ha, on peut insulter les autres gratuitement maintenant?


nan, faut payer, mais comme c'est moi qui récolte les sous ...


---------------
ma vie, mon oeuvre - HomePlayer
n°932609
glod 2
Votre trajet, notre projet.
Posté le 27-12-2004 à 17:10:41  profilanswer
 

benou a écrit :

tout le monde s'en fout de mon exemple de Visiteur avec du jdk1.5 dedans [:ruisseau de larmes]
 
 
et c'est moi qui suis 1er degrès  :pfff:


on a rien compris jcrois :D

n°932616
benou
Posté le 27-12-2004 à 17:17:22  profilanswer
 

Glod 2 a écrit :

on a rien compris jcrois :D


en gros :  
* Un visiteur c'est un objet qui saura faire un certain traitement pour un certain nombre de types d'objets. (cf interface du visiteur)
* chacun de ces types d'objets doit être prévu pour être visité par ce visiteur (méthode visiting de chaque objet qui appelle la bonne méthode du visiteur)
* l'utilisation du DP visiteur consite à créer un Visiteur qui représente le traitement à effectuer pour chaque type d'objet, et à visiter le ou les objets concerné avec ce visiteur.
 
ca permet de faire un traitement spécifique en fonction du type de l'objet sans jamais avoir à tester le type de l'objet ...
 
edit : dans l'exemple j'ai créé un adapteur, mais c'est pas indispensable ...


Message édité par benou le 27-12-2004 à 17:18:34

---------------
ma vie, mon oeuvre - HomePlayer
n°932650
nraynaud
lol
Posté le 27-12-2004 à 18:07:18  profilanswer
 

benou a écrit :

je dis pas que c'est adapté à ce cas, mais ca donnerait en gros ca.
 
modifs à faire sur les objets existants :

Code :
  1. public interface FormeVisitor() {
  2.    public void visitingForme(Forme f);
  3.    public void visitingCarre(Carre c);
  4.    public void visitingRectangle(Rectangle r);
  5. }
  6. /** pour faciliter l'écriture des visitor */
  7. public interface FormeVisitorAdapter() {
  8.    public void visitingForme(Forme f) {}
  9.    public void visitingCarre(Carre c) {}
  10.    public void visitingRectangle(Rectangle r) {}
  11. }
  12. public class Forme {
  13.    //...
  14.    public void visit(FormeVisitor visitor) {
  15.       visitor.visitingForme(this);
  16.    }
  17. }
  18. public class Carre extends Forme {
  19.    //...
  20.    public void visit(FormeVisitor visitor) {
  21.       visitor.visitingCarre(this);
  22.    }
  23. }
  24. public class Rectangle extends Forme {
  25.    //...
  26.    public void visit(FormeVisitor visitor) {
  27.       visitor.visitingRectangle(this);
  28.    }
  29. }


 
utilisation :  

Code :
  1. public List<Carre> keepOnlyCarre(List<Forme> formeList) {
  2.       final List<Carre> carreList = new ArrayList<Carre>();
  3.       FormeVisitor visitor = new FormeVisitorAdapter() {
  4.          public void visitingCarre(Carre c) {
  5.             carreList.put(c);
  6.          }
  7.       }
  8.       for (Forme f : formeList) {
  9.           f.visit(visitor);
  10.       }
  11.       return carreList;
  12.    }


 
 
Le DP Visiteur est un peu lourd à mettre en place, et faut aire un effort pour s'y faire au début, mais dès qu'on est amené à souvent différencier le traitement en fonction du type de l'objet, il se révèle vite efficace !


tu fumes ?
 
joquetino> tu vas en faire quoi de ta liste de carrés ?

n°932658
benou
Posté le 27-12-2004 à 18:39:52  profilanswer
 

non. Tu peux préciser ta pensée ? [:itm]


---------------
ma vie, mon oeuvre - HomePlayer
n°932728
joquetino
Posté le 27-12-2004 à 21:30:50  profilanswer
 

Je vois que mon pb déchaîne les passions .....
 
nraynaud>> la liste de carrés étais un exemple pour présenter mon problème, qui s'est résolu grâce à votre aide.
 
Par contre, un nouveau est apparu :
 
J'ai une JTable dans lequel j'ai insérer des éléments.
Les éléments en question sont des Integer.  
table est ma JTable.  
 
Integer p=(Integer) table.getModel().getValueAt(j,2);
System.out.println(p);
 
 
Or il me met : java.lang.ClassCastException
 
Pourquoi je ne peux faire ce cast?


Message édité par joquetino le 27-12-2004 à 21:32:01
n°932832
joquetino
Posté le 28-12-2004 à 00:57:27  profilanswer
 

Je viens de m'aperçveoir de quelque chose.  
Cela me met une erreur que lorsque j'édite ma JTable.
Y a t-il quelque chose de particulier à déclarer dans ce cas?

n°932841
joquetino
Posté le 28-12-2004 à 01:19:30  profilanswer
 

Bizarrement en faisant,  
Object p=res2.getModel().getValueAt(j,2);
System.out.println(p);
 
Il m'affiche bien un nombre dans la console.
Mais moi j'ai besoin de cette valeur pour l'enregistrer.
J'ai essayé de caster de cette façon,  
Integer po=(Integer) p;
 
Mais ça ne fonctionne tjrs pas.
 

n°932842
the real m​oins moins
Posté le 28-12-2004 à 01:20:20  profilanswer
 

100 balles que c'est un String


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°932843
joquetino
Posté le 28-12-2004 à 01:29:16  profilanswer
 

C'est en effet ça. 3 heures que je suis dessus.
Merci.

n°932846
the real m​oins moins
Posté le 28-12-2004 à 01:37:17  profilanswer
 

[:joce]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°932852
Taz
bisounours-codeur
Posté le 28-12-2004 à 01:56:02  profilanswer
 

y a un truc genre issubclassof ?

n°932882
lorill
Posté le 28-12-2004 à 09:23:15  profilanswer
 

ben y'a instanceof

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  Type objet

 

Sujets relatifs
Initiation à la programmation "objet"[C / GTK] erreur avec G_TYPE_CHECK_INSTANCE
conversion de type en openCVrecupération d'un input type = file
Initialisation d'un objet de type TOracleDataSet (Delphi - DOA)nombre d'objet ds un doc XML (avec un parseur de type DOM)
Instanciation d'objet dont le type est connu au runtime[java] savoir de quel type d objet il sagis...
[c++] comment recuperer le type dynamique d'un objet?[JAVA] Evenements - recuperation du type de l'objet...
Plus de sujets relatifs à : Type objet


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