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

  FORUM HardWare.fr
  Programmation
  Java

  comment un objet peut il acceder au attributs de l'objet appelant ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment un objet peut il acceder au attributs de l'objet appelant ?

n°408559
karim63
Posté le 26-05-2003 à 22:32:38  profilanswer
 

Le seul moyen est il de passer le pointeur de l'objet appelant en parametre de l'objet appelé ?
Pasque c'est pas terrible niveau espace memoire :/


Message édité par karim63 le 26-05-2003 à 22:34:56
mood
Publicité
Posté le 26-05-2003 à 22:32:38  profilanswer
 

n°408574
the real m​oins moins
Posté le 26-05-2003 à 22:42:33  profilanswer
 

karim63 a écrit :


Pasque c'est pas terrible niveau espace memoire :/

:heink:
 
et sinon, ben... ouais... mais à priori tu as peut etre un peu besoin de théorie sur les objets ;)
 
enfin, lance-toi, et dans qques temps, quand tu auras un peu avancé, lis un bouquin genre "design patterns" (erich gamma et al.), ça t'éclairera sans doutes et te donneras de bonnes idées


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°408589
karim63
Posté le 26-05-2003 à 22:56:24  profilanswer
 

benh dans certains cas on est quand même obligé.
Par exemple si on créé des thread, et bien ces thread peuvent avoir besoin d'acceder ou de modifer certaines variables du moniteur.
Ou alors si un thread doit communiquer avec un autre thread.
Y a pas trop le choix.  :heink:


Message édité par karim63 le 26-05-2003 à 22:57:55
n°408592
the real m​oins moins
Posté le 26-05-2003 à 22:58:08  profilanswer
 

karim63 a écrit :

benh dans certains cas on est quand même obligé.
Par exemple si on créé des thread, et bien ces thread peuvent avoir besoin d'acceder ou de modifer certaines variables du montiteur.
Y a pas trop le choix.  :heink:  

ben j'ai pas dit que y'a le choix, c'est toi qui a l'air de dire que ça bouffe de la mémoire ([:mlc]) ou que c'est pas propre. alors si c ça, en effet, y'a des moyens pas propres du tout, mais d'autres tres propres :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°408688
veryfree
Posté le 27-05-2003 à 00:43:15  profilanswer
 

karim63 a écrit :

benh dans certains cas on est quand même obligé.
Par exemple si on créé des thread, et bien ces thread peuvent avoir besoin d'acceder ou de modifer certaines variables du moniteur.
Ou alors si un thread doit communiquer avec un autre thread.
Y a pas trop le choix.  :heink:


tu file l'instance du "moniteur" au thread jvois pas ou est le probleme


Message édité par veryfree le 27-05-2003 à 00:43:23
n°409126
karim63
Posté le 27-05-2003 à 13:40:50  profilanswer
 

benh je me retrouve dans des cas ou plusieurs objet son imbriques et donc a chaque fois je dois passer en parametre l'instance de l'objet appelant, et je trouve ça vachement redondant.
Bref  :whistle:

n°409128
the real m​oins moins
Posté le 27-05-2003 à 13:45:46  profilanswer
 

bah tu as peut etre un problème de design, c'est difficile à dire comme ça...
si tu débutes, fais comme je t'ai dit, lance-toi, fais ton truc, et //ement, lis un bouquin sur le design objet... dans qques temps tu verras tes erreurs et tu comprendras mieux ;)
 
(plutot que de te noyer dans la théorie avant de commencer, pour de toutes façons faire les memes erreurs quand tu commenceras pour de vrai)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°409206
karim63
Posté le 27-05-2003 à 14:41:47  profilanswer
 

benh les cours de java en fac laissent à désirer. (tout comme ma présence :whistle: )
J'ai eu une bonne note au module d'objet, mais bon on nous apprends pas a construire des plus grosses applications.
Surtout qu'on a commencé par le c++ direct.
Enfin quand ça sera avancé je mettrai des bouts de codes ici pour voir ce qui est foireux.
N'empeche que en java c'est plus dur de faire des trucs atroces que en C++ [:ddr555]
 
Sinon comment on peut faire en java pour avoir l'equivalent des constantes en c++ ?
Y a t'il un moyen d'en avoir autrement que en prefixant les variables de classes par la la classe ?


Message édité par karim63 le 27-05-2003 à 14:42:51
n°409539
bobuse
Posté le 27-05-2003 à 16:17:04  profilanswer
 

karim63 a écrit :

benh les cours de java en fac laissent à désirer. (tout comme ma présence :whistle: )
J'ai eu une bonne note au module d'objet, mais bon on nous apprends pas a construire des plus grosses applications.
Surtout qu'on a commencé par le c++ direct.
Enfin quand ça sera avancé je mettrai des bouts de codes ici pour voir ce qui est foireux.
N'empeche que en java c'est plus dur de faire des trucs atroces que en C++ [:ddr555]
 
Sinon comment on peut faire en java pour avoir l'equivalent des constantes en c++ ?
Y a t'il un moyen d'en avoir autrement que en prefixant les variables de classes par la la classe ?


 
et la FAQ java de prog@HFR c'est du poulet ? Il y a plein de liens vers pas mal de docs utiles ...
 
final static <type> <nom_variable> = <valeur>


---------------
get amaroK plugin
n°409710
karim63
Posté le 27-05-2003 à 19:56:14  profilanswer
 

en dehors d'une classe ?  :heink:  c possible ?

mood
Publicité
Posté le 27-05-2003 à 19:56:14  profilanswer
 

n°409719
nraynaud
lol
Posté le 27-05-2003 à 20:12:35  profilanswer
 

karim63 a écrit :

Le seul moyen est il de passer le pointeur de l'objet appelant en parametre de l'objet appelé ?
Pasque c'est pas terrible niveau espace memoire :/


tiens, je pensais à ça hier soir et je me suis souvenus d'un truc marrante de smalltalk : la pseudo-variable thisContext qui te renvoie la frame courante de la pile d'exécution, avec des méthodes de navigation dans la pile.
Tu prends le thisContex, tu prends le message courrant, tu regades qui l'a envoyé et tu peux y accéder.
À part pour faire un lanceur d'exception ou un debuggeur ça n'a quasiment aucun intérèt mais c'est faisable.

n°409873
deltaden
Posté le 28-05-2003 à 01:22:01  profilanswer
 

karim63 a écrit :

en dehors d'une classe ?  :heink:  c possible ?

non, on sait pas faire ce que tu demande en Java, tout est d'office dans une classe


Message édité par deltaden le 28-05-2003 à 01:22:27
n°409912
benou
Posté le 28-05-2003 à 08:47:11  profilanswer
 

essayez de penser objet à la place de penser à ce qui vous arrangerait qu'il existe dans le langage  :sweat:  


---------------
ma vie, mon oeuvre - HomePlayer
n°410345
karim63
Posté le 28-05-2003 à 14:02:11  profilanswer
 

ce que tu dis me semble un peu contre toute forme d'evolution.

n°410360
senternal
Posté le 28-05-2003 à 14:09:25  profilanswer
 

karim63 a écrit :

ce que tu dis me semble un peu contre toute forme d'evolution.


 
Et le

Code :
  1. Thread.currentThread().getThreadGroup().getParent();

... M'enfin :sarcastic:

n°410878
nraynaud
lol
Posté le 29-05-2003 à 00:02:38  profilanswer
 

karim63 a écrit :

ce que tu dis me semble un peu contre toute forme d'evolution.


Je suis pas sûr que se soit le rôle des débutants de faire évoluer les langages.
T'inquiètes pas que ça évolue.

n°415587
karim63
Posté le 04-06-2003 à 01:15:29  profilanswer
 

senternal a écrit :


 
Et le

Code :
  1. Thread.currentThread().getThreadGroup().getParent();

... M'enfin :sarcastic:  


 
peut etre pas jusque là, mais bon merci  :D
Mais y a pas de methode equivelente pour des objects normaux ?


Message édité par karim63 le 04-06-2003 à 01:19:49
n°416744
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 04-06-2003 à 18:04:44  profilanswer
 

karim63 a écrit :

Pasque c'est pas terrible niveau espace memoire :/


 
heu...
qd tu passes un objet en paramètre d'une méthode en java, c'est effectivement un pointeur qui est transmis... hors, un pointeur, c quoi, un nombre... et aujourd'hui avec nos 512 Mo de RAM, tu vas pas me dire que tu veux économiser quelques octets :))
 
alors, en dehors des conseils de conception qu'il est impossible de donner ici, ce n'est pas un problème de passer un objet en parmètre d'une méthode pour que celle-ci puisse accéder à ces méthodes...
 
pour le problème de "redondance", qu'est ce que tu entends par là ??!
genre, tt'as une classe :
 

Code :
  1. class Pouet {
  2.    public void trruc(UneClasse arg){
  3.       arg.ldksfjlsdjkf
  4.    }
  5. }


 
et ça te fait chier de toujours mettre le param UneClasse ?  
 
si c toujours la même instance dee UneClasse que tu manipules... effectivement, ça va être redondant...
mais dans ce cas là, tu peux passer ton objet dans le constructeur de Pouet..
 

Code :
  1. public class Pouet {
  2. private UneClasse monObjetQueJaimeraisBienGarder;
  3. public Pouet (UneClasse arg){
  4. this.monObjetQueJaimeraisBienGarder = arg;
  5. }
  6. public void faireUnTruc(){
  7. this.monObjetQueJaimeraisBienGarder.truc();
  8. }
  9. }


 
en éspérant avoir répondu...

n°416871
karim63
Posté le 04-06-2003 à 20:29:34  profilanswer
 

oui j'ai fait comme ça.
J'ai effectivement 512mo de ram.
Si je me pose la question de la ram c'est pasque ce que je tente de faire est une simulation de reseau p2p, edonkey plus particulierement.
Donc j'ai une classe client qui represente donc un client.
Et y aura un max de thread client.
Comme chaque client a ça propre queue d'attente en upload et aussi les queues de download, niveau memoire ça va monter assez vite.
Donc chaque slot de la queue d'upload à besoin de savoir d'ou il vient dans l'implementation actuelle. Et c'est pareil pour l'upload.
 
Donc la le truc ou je galere c'est la communication des threads.
Nottament pour le transfert de données.
Ce transfert est bien sur virtuel et je transfert que des nombres correspondant a la quantité uploadé ou downloadé.
Et donc faut syncrhoniser en fonction de la capacité de up ou de down, et c'est pas tres evident.
Donc la j'ai choisit de faire en sorte que le thread qui upload controle l'autre, mais l'ideal serait une independance totale.
J'avais deja commencé un truc en c++ avec transfert de paquet mais bon j'ai laissé tombé un moment et repris ensuite a zero en java nottament pour la simplicité de la gestion memoire.
Donc a ce niveau je suis pret a entendre vos suggestions et conseils  :D  

n°416887
nraynaud
lol
Posté le 04-06-2003 à 21:06:37  profilanswer
 

Moustaaki a écrit :


heu...
qd tu passes un objet en paramètre d'une méthode en java, c'est effectivement un pointeur qui est transmis... hors, un pointeur, c quoi, un nombre...  


Une référence sur la pile, c'est aussi une nouvelle racine pour le GC, donc une grappe d'objets "encore moins" libérable.
 
Je dis pas ça pour ce cas là (où de toutes façon il a besoin de son objet) mais pour le cas général : avoir une référence c'est un objet qui est _à coup sûr_ non libérable. Si vous jouez les jacky-mémoire, pensez-y.

n°416919
karim63
Posté le 04-06-2003 à 21:33:52  profilanswer
 

et niveau communication entre thread ?

n°416952
nraynaud
lol
Posté le 04-06-2003 à 22:03:34  profilanswer
 

karim63 a écrit :

et niveau communication entre thread ?


Tu devrais songer à mettre un verbe dans ta phrase si tu veux qu'on te comprenne.

n°416984
karim63
Posté le 04-06-2003 à 22:22:02  profilanswer
 

je pense que t'as très bien compris, mais en effet rien ne t'oblige à répondre.

n°417398
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 05-06-2003 à 10:52:15  profilanswer
 

nraynaud a écrit :


Une référence sur la pile, c'est aussi une nouvelle racine pour le GC, donc une grappe d'objets "encore moins" libérable.
 
Je dis pas ça pour ce cas là (où de toutes façon il a besoin de son objet) mais pour le cas général : avoir une référence c'est un objet qui est _à coup sûr_ non libérable. Si vous jouez les jacky-mémoire, pensez-y.


 
 
heu... oO
tu veux dire que le Garbage Collector (GC) mettra plus de tps à libérer un objet étant référencé plusieurs fois ?
bah tant qu'il est référencé, il n'a pas besoin d'être libéré ! qu'il est une ou 200 référence(s), c'est à peu près pareil... à part que tu stockes des pointeurs en plus... spa grand chose un pointeur.
 
non, je pense qu'il faut pas s'embêter avec ça... surtout au début... c bp dee prise de tête pour gagner pas grand chose :|  
et si t'as besoin d'un programme très rapide pour faire du tps réel... bah tu le fais en C ou en ASM :D
et si tu veux forcer la mémoire à être libérée dans un prog java, tu peux toujours appeler le GC :D
 
 
 
sinon, pour ce qui est des threads... je comprend pas bien ta question, en fait.. tu veux savoir comment gérer le partage de variable entre Thread ?

n°417902
karim63
Posté le 05-06-2003 à 14:23:20  profilanswer
 

Moustaaki a écrit :


sinon, pour ce qui est des threads... je comprend pas bien ta question, en fait.. tu veux savoir comment gérer le partage de variable entre Thread ?  


 
Non ça je sais faire.
Je parle de communication entre thread un peu comme deux machines dialoguent via un reseau.
Spa grave je vais me demerder.

n°417936
nraynaud
lol
Posté le 05-06-2003 à 14:44:18  profilanswer
 

Moustaaki a écrit :


1) tu veux dire que le Garbage Collector (GC) mettra plus de tps à libérer un objet étant référencé plusieurs fois ?
 
2) non, je pense qu'il faut pas s'embêter avec ça... surtout au début... c bp dee prise de tête pour gagner pas grand chose :|  
et si t'as besoin d'un programme très rapide pour faire du tps réel... bah tu le fais en C ou en ASM :D
 
3) et si tu veux forcer la mémoire à être libérée dans un prog java, tu peux toujours appeler le GC :D


1) non, t'as pas compris c'est pas grave (chaque fois que tu rajoutes une référence, tu augmentes la probabilité qu'il en reste une quand les références antérieures sont éliminées).
 
2) ça ne s'adresse _pas_ aux débutants (de toute façon je leur parle pas, je les aime pas), c'est simplement qu'une remarque un peu plus analytique de temps en temps ne fait de mal à personne.
 
3) il est assez peu judicieux d'appeller le GC à la main lorsqu'on a besoin de mémoire rapidement. On ne l'appelle volontairement que si on a que ça à foutre (avant une mise en someil de l'appli par exemple). Sinon, l'allocateur se démerde avec, il le fait très bien (et incrémentalement sur les VM sérieuses).

n°417940
nraynaud
lol
Posté le 05-06-2003 à 14:45:49  profilanswer
 

karim63 a écrit :


Je parle de communication entre thread un peu comme deux machines dialoguent via un reseau.


tu dois bien avoir des files de messages (boites-aux-lettres), sinon utilises des objets synchronisés pour en fabriquer.

n°423379
karim63
Posté le 11-06-2003 à 04:21:34  profilanswer
 

nraynaud a écrit :


tu dois bien avoir des files de messages (boites-aux-lettres), sinon utilises des objets synchronisés pour en fabriquer.


 
Dans l'ebauche de programme en c++ j'avais utilisé un truc qui ressemblait.
Les clients avaient une file de messages entrants et une file de message sortant.
Et en fait il y avait une espece de pool de stockage que j'avais appelé internet :D ou en fait les clients allaient chercher les messages correspondant a leur ip entre guillemet, et ou les messages envoyés par les clients etaient balancé dedans.
 
Pour toi les boites a letres doivent etre contenu par le thread client, ou bien exterieurs, dans une liste de boite a lettres par exemple ?
 
Aussi il y a un truc que je vois pas trop comment resoudre.
Quand j'envois un message et que ce message necessite une reponse, comment faire pour attendre cette reponse sans pour autant bloquer le programme ?
Ca devient un peu compliqué pour moi là.


Message édité par karim63 le 11-06-2003 à 04:26:06
n°423683
BifaceMcLe​OD
The HighGlandeur
Posté le 11-06-2003 à 12:28:07  profilanswer
 

nraynaud a écrit :


(...)
 
3) il est assez peu judicieux d'appeller le GC à la main lorsqu'on a besoin de mémoire rapidement. On ne l'appelle volontairement que si on a que ça à foutre (avant une mise en someil de l'appli par exemple). Sinon, l'allocateur se démerde avec, il le fait très bien (et incrémentalement sur les VM sérieuses).


Même après récupération sur exception OutOfMemoryError, à ton avis ?

mood
Publicité
Posté le   profilanswer
 


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

  comment un objet peut il acceder au attributs de l'objet appelant ?

 

Sujets relatifs
[php] en prog objet, comment passer des objets en variables de sessio?[php] en prog objet, peut on stocker des objets dans un tableau ?
Mettre un fichier son (mp3) dans un cadre d'objet indépendantproblemes pour acceder a un fichier
Accéder aux propriétés d'un objet enfant...[Perl DBI] selectcol_arrayref et autres fonctions du genre : attributs
comment fait-on avec un getter pour accéder a un tableau en private ?[PHP-objet] Dans quelle classe placer cette methode ?
Comment accéder à un contrôle dont on connait le nom ? 
Plus de sujets relatifs à : comment un objet peut il acceder au attributs de l'objet appelant ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)