Page 37 sur 1366
Posté : 04 mai 2006 20:03
par toox
Ozzy a écrit :Ce n'est pas si étonnant que ça : quand tu passes 1 objet en paramètre d'une méthode et que tu le modifies dans celle-ci, il ressort modifié alors qu'une variable entière (par ex), tu ne peux pas la modifier. C'est comme les pointeurs et ça correspond d'ailleurs à ce que tu as dit avec &A (qui n'existe pas en java).
Ouais par paramètre d'accord. Bon bah c'est comme tout hein, faut pratiquer pour pas perdre le fil (vu mon métier j'ai un peu honte quand même, bref...)
Pour ceux qui comprennent rien, c'est avec ce genre de gymnastique de chiffres et de lettres qu'on vous fait des programmes informatiques. On peut pas faire plus simple comme explication...
Posté : 04 mai 2006 20:26
par ajacques
Ozzy a écrit :Ce n'est pas si étonnant que ça : quand tu passes 1 objet en paramètre d'une méthode et que tu le modifies dans celle-ci, il ressort modifié alors qu'une variable entière (par ex), tu ne peux pas la modifier. C'est comme les pointeurs et ça correspond d'ailleurs à ce que tu as dit avec &A (qui n'existe pas en java).
Moi j'pense surtout que tu devrais te débrouiller autrement, parce qu'en arriver à vouloir "copier" un objet qui aura donc deux noms, c'est vraiment pas propre DU TOUT !
Ton problême doit pouvoir se règler autrement.
ajacques, dogma
Posté : 04 mai 2006 20:53
par Ozzy
Ce n'est pas un problème que j'ai, c'est une question que je me pose et, comme j'ai maintenant la réponse, ça ne devrait pas devenir un problème puisque je vais soigneusement éviter de me retrouver dans cette situation ! (de plus, c'est juste pour la culture, je ne suis pas informaticien pro donc aucune boite ne chutera ou aucune fusée n'explosera en vol à cause de moi )
Posté : 04 mai 2006 22:34
par nicobi
Toox : oui j'en suis sûr, pour bénéficier d'une nouvelle case mémoire tu es obligé de faire un "new"
Ajacques : oui tu as raison
Sinon pour conclure en Java, il existe la méthode clone() qui permet de dupliquer l'objet en créant une "copie" de l'objet initial en rendant la copie totalement indépendante de l'original (tu récupères les méthodes et les attributs de classes à leurs valeurs lors du clonage).
Posté : 05 mai 2006 01:41
par Manukay
Qui a posté ça :
http://img150.exs.cx/img150/2100/premonition0cx.jpg" onclick="window.open(this.href);return false;
?
Posté : 05 mai 2006 09:32
par Ozzy
Dernier truc pour Nicobi (merci encore) : si je veux initialiser un tableau T avec le contenu d'un autre S, il faut donc absolument que j'évite T=S et donc que je passe par un remplissage case par case ? (avec for)
Posté : 05 mai 2006 10:04
par ajacques
Dernier truc pour Nicobi (merci encore) : si je veux initialiser un tableau T avec le contenu d'un autre S, il faut donc absolument que j'évite T=S et donc que je passe par un remplissage case par case ? (avec for)
Ca dépend y a quoi dans ton tableau ? Si tu utilises Java il faut que tu "penses" objet, donc pour ton tableau, ça devrait être tout simplement un Vecteur (classe
Vector) ou une collection. Après ça t'en fais ce que tu veux de ton tableau, tu peux y mettre des objets, tu peux le copier, insérer des éléments ...
Mais sinon si tu veux absolument faire une copie de ton tableau, tu as toujours la fonction clone(), que tous les objets ont.
Posté : 05 mai 2006 10:24
par Ozzy
Pour l'instant, je me dois de rester simple (comme tout débutant) donc int [] S ; S = new int[n] et disons que je veux classer les éléments de S dans T mais en gardant S. (ou des tableaux à plusieurs dimensions pour travailler sur des matrices genre problèmes itératifs).
Mais vector ou tableau, ce sont des objets donc on est dans la logique précédente, non ? Faut que je voie Clone(), mais ça a l'air chiadé.
Posté : 05 mai 2006 10:28
par le retour de le Natza
De mémoire, Benco l'année dernière.
Posté : 05 mai 2006 10:31
par ajacques
Ozzy a écrit :Pour l'instant, je me dois de rester simple (comme tout débutant) donc int [] S ; S = new int[n] et disons que je veux classer les éléments de S dans T mais en gardant S. (ou des tableaux à plusieurs dimensions pour travailler sur des matrices genre problèmes itératifs).
Mais vector ou tableau, ce sont des objets donc on est dans la logique précédente, non ? Faut que je voie Clone(), mais ça a l'air chiadé.
Arf ... en fait c'est pas chiadé, c'est juste le langage objet, donc une fois qu'on a pigé le fonctionnement c'est très rapide. Pour répondre à ta question, si tu as des tableaux "classiques" comme ça, alors oui le plus simple est de faire une boucle for pour les copier.
Mais pourquoi utiliser Java dans ce cas ? Ce serait comme prendre un bazooka pour écraser un moustique !
Posté : 05 mai 2006 10:44
par Ozzy
C'est juste que j'apprends Java en liaison avec ma culture personnelle. En plus, ce langage me fascine. Encore plus d'ailleurs après cet échange (dont je te remercie au passage).
Posté : 05 mai 2006 10:52
par nicobi
Pour développer en Java je te conseille l'utilisation de
BlueJ, tu dessines tes classes ou tes interfaces (des rectangles), tu traces les héritages et implémentations, et ça te crées une base de code trés propres.
C'est idéal pour apprendre le Java avec de bonnes bases

Posté : 05 mai 2006 10:56
par ajacques
Et tu en es où dans l'apprentissage ?
Je pense que tu peux trouver des "cours", ou tutoriels sur Java et la programmation Objet, parce que plus que la syntaxe, c'est surtout le concept qu'il est important de comprendre. Le reste vient tout seul après !
Moi je n'utilise plus Java, mais ça me manque ...
Posté : 05 mai 2006 12:26
par Ozzy
J'ai "le livre de Java 1er langage" chez Eyrolles, c'est bien fait mais c'est vrai que "la philosophie objet" n'est pas spécialement mise en valeur par rapport au reste.
J'ai téléchargé BlueJ. Et quelques trucs sur Java mais la pédagogie de ces documents est incertaine.
Avec vos conseils, j'ai passé la 1ère étape et maintenant, comme dit Villepin à Chirac, "je passe au plan B, Jacques".
Posté : 05 mai 2006 13:18
par toox
En fait en lisant Nicobi et ajacques je me rappelle des bonnes valeurs du langage objet... Merci !
En gros pour cloner proprement deux variables il te faudrait avoir une syntaxe du genre "B.nouvellesValeurs(A.dumpDeCetObjet());"
Et le mieux pour apprendre l'objet c'est encore Smalltalk avec Squeak pour ceux qui connaissent

Tout mais vraiment TOUT est objet !