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

  FORUM HardWare.fr
  Programmation
  Java

  [java]Connaitre le nombre d'instance créées d'une même classe?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java]Connaitre le nombre d'instance créées d'une même classe?

n°402707
AsTro
Posté le 21-05-2003 à 14:13:36  profilanswer
 

J'ai une classe MachinChose
En fait j'aimerais qu'a chaque instance créée de cette classe soit asspcié un entier compris entre 0 et le nombre total d'instances crées -1.
Comment on fait pour connaitre le nombre d'instance deja créées?

mood
Publicité
Posté le 21-05-2003 à 14:13:36  profilanswer
 

n°402719
nerisson
Pic-pic
Posté le 21-05-2003 à 14:20:24  profilanswer
 

Ajoute une variable statique dans ta classe, incremente la dans le constructeur, decremente la dans le destructeur.


---------------
Light is right
n°402723
noldor
Rockn'roll
Posté le 21-05-2003 à 14:22:48  profilanswer
 

Nerisson a écrit :

Ajoute une variable statique dans ta classe, incremente la dans le constructeur, decremente la dans le destructeur.

y a pas de destructeur en java, si ??  :??:

n°402727
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 21-05-2003 à 14:24:11  profilanswer
 

Nerisson a écrit :

Ajoute une variable statique dans ta classe, incremente la dans le constructeur, decremente la dans le destructeur.


 
pas mieux  :jap:  
sans oublier d'initialiser la variable à zéro :D


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°402731
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 21-05-2003 à 14:25:14  profilanswer
 

noldor a écrit :

y a pas de destructeur en java, si ??  :??:  


 
heureusement que oui sinon comment feraient les programmes pour ne pas exploser la mémoire ? :D


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°402746
nerisson
Pic-pic
Posté le 21-05-2003 à 14:30:13  profilanswer
 

noldor a écrit :

y a pas de destructeur en java, si ??  :??:  


la methode finalize fait office de destructeur.


---------------
Light is right
n°402757
noldor
Rockn'roll
Posté le 21-05-2003 à 14:36:41  profilanswer
 

Tetragrammaton IHVH a écrit :


 
heureusement que oui sinon comment feraient les programmes pour ne pas exploser la mémoire ? :D

ça c'est le boulot du GC, rien à voir avec le dstructeur

n°402765
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 21-05-2003 à 14:41:01  profilanswer
 

noldor a écrit :

ça c'est le boulot du GC, rien à voir avec le dstructeur


 
T'as déjà fait du java dans ta vie ?  :sarcastic:  
Le GC appelle la méthode finalize() qui est l'équivalent d'un destructeur


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°402766
noldor
Rockn'roll
Posté le 21-05-2003 à 14:42:18  profilanswer
 

Tetragrammaton IHVH a écrit :


 
T'as déjà fait du java dans ta vie ?  :sarcastic:  
Le GC appelle la méthode finalize() qui est l'équivalent d'un destructeur  

c'est p-e équivalent, mais ce n'est pas un destructeur
impossible de savoir quand il sera effectivement appelé

n°402780
El_gringo
Posté le 21-05-2003 à 14:46:30  profilanswer
 

Tetragrammaton IHVH a écrit :


 
T'as déjà fait du java dans ta vie ?  :sarcastic:  
Le GC appelle la méthode finalize() qui est l'équivalent d'un destructeur  


 
Ben, non, c'est pas pareil. Un destructeur, ça détruit l'instance. La méthode finalize est appelée au moment de la destruction par le GC. On ne l'appelle pas explicitement. ça change tout!

mood
Publicité
Posté le 21-05-2003 à 14:46:30  profilanswer
 

n°402781
nerisson
Pic-pic
Posté le 21-05-2003 à 14:46:44  profilanswer
 

noldor a écrit :

c'est p-e équivalent, mais ce n'est pas un destructeur
impossible de savoir quand il sera effectivement appelé


Bah moi j'appelle ca un destructeur, etant donné qu'elle est appelée lorsque l'objet est effectivement effacé de la mémoire...


---------------
Light is right
n°402786
AsTro
Posté le 21-05-2003 à 14:47:26  profilanswer
 

merci je viens de trouver et effectivement j'ai fait comme ca, par contre un autre truc comment on peut faire pour recuperer l'instance correspondant à son numero associé?

n°402789
El_gringo
Posté le 21-05-2003 à 14:48:50  profilanswer
 

Astro a écrit :

merci je viens de trouver et effectivement j'ai fait comme ca, par contre un autre truc comment on peut faire pour recuperer l'instance correspondant à son numero associé?


 
En faisant comme on t'as dit, chaque instance n'a pas de n° associé.
Une variable de classe t'indique le nombre d'instances en cours de cette classe, c'est tout !

n°402792
nerisson
Pic-pic
Posté le 21-05-2003 à 14:49:07  profilanswer
 

Astro a écrit :

merci je viens de trouver et effectivement j'ai fait comme ca, par contre un autre truc comment on peut faire pour recuperer l'instance correspondant à son numero associé?


Bah ce n'est pas possible.
Tu veux associer un numero à un objet ? -> tableau ou liste.


---------------
Light is right
n°402802
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 21-05-2003 à 14:52:05  profilanswer
 

Nerisson a écrit :


Bah moi j'appelle ca un destructeur, etant donné qu'elle est appelée lorsque l'objet est effectivement effacé de la mémoire...


 
bah vi [:spamafote]
la seule différence entre delete et finalize() c'est que delete rend libre la zone mémoire alors que c'est le GC qui fait ce travail (au petit bonheur la chance).  
Mais le "ménage" à faire dans la classe (effacement d'objets etc...) se fait dans le finalize() en java comme dans un destructeur en C++. Et donc le décomptage du nombre d'instances d'une classe est à placer dans le finalize(). Tout est dit.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°402823
AsTro
Posté le 21-05-2003 à 14:58:34  profilanswer
 

El_gringo a écrit :


 
En faisant comme on t'as dit, chaque instance n'a pas de n° associé.
Une variable de classe t'indique le nombre d'instances en cours de cette classe, c'est tout !


 
oui mai smoi a chaque creation jai recuperer ce numero donc pour chaque instance j'ai un numero qui lui est propre.

n°402827
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 21-05-2003 à 14:59:37  profilanswer
 

Astro a écrit :


 
oui mai smoi a chaque creation jai recuperer ce numero donc pour chaque instance j'ai un numero qui lui est propre.


 
tu ajoutes une variable membre dans la classe que tu initialises dans le constructeur avec le compteur statique.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°402852
nerisson
Pic-pic
Posté le 21-05-2003 à 15:07:43  profilanswer
 

Astro a écrit :


 
oui mai smoi a chaque creation jai recuperer ce numero donc pour chaque instance j'ai un numero qui lui est propre.


Nan Nan Nan !!! Le numéro n'est pas unique ! Si tu veux un numéro unique il ne faut pas décrementer la variable statique.
Ca m'a l'air assez bizarre ce que tu veut faire, tu ne vaut pas nous en dire plus ?


---------------
Light is right
n°402872
AsTro
Posté le 21-05-2003 à 15:13:26  profilanswer
 

en fait c un sujet d'exam de licence que je lis et je pige pas comment faire ce truc en question
Questions 4 et 5.
Voila l'url :
http://dept-info.labri.u-bordeaux. [...] ept-00.pdf

n°402896
Feanor
Hébéphrène à temps partiel
Posté le 21-05-2003 à 15:22:02  profilanswer
 

<polution>
euhhhh c quoi la reponse a la question 1 ?
</pollution>
 
edit : je veux vraiment savoir la reponse ... parce que en private c deja inacessible par toute methode externe, donc le mec veut que la chaine ne puisse pas etre changee.....


Message édité par Feanor le 21-05-2003 à 15:46:04
n°402901
nerisson
Pic-pic
Posté le 21-05-2003 à 15:23:52  profilanswer
 

Astro a écrit :

en fait c un sujet d'exam de licence que je lis et je pige pas comment faire ce truc en question
Questions 4 et 5.
Voila l'url :
http://dept-info.labri.u-bordeaux. [...] ept-00.pdf


'tain le truc de ouf !
Si tu dois tout mettre dans une seule classe, parce-que moi j'aurais créé une factory pour gérer tout ca.
Sinon je pense que la meilleure solution est de mettre une ArrayList comme variable statique, dans laquelle tu stockes les instances des classes Direction.


Message édité par nerisson le 21-05-2003 à 15:24:13

---------------
Light is right
n°403052
_gtm_
Posté le 21-05-2003 à 15:56:40  profilanswer
 

>Feanor : private final
Mais du coup, je me demande si l'initialisation dans le constructeur marche.
 
Pour la question 4:
Une solution serait de mettre un ArrayList statique d'instances crées avec une méthode statique pour trouver la direction en fonction du numéro.
Pour le problème de trouver le numéro et du destructeur: l'énoncé indique 'nombre d'instances crées' et pas 'nombre d'instances en mémoire'. Donc il n'y a peut-être pas besoin de surveiller finalize ou autre chose.
 
Par contre, le principe de mettre tout statique, c'est pas top. Il vaudrait mieux faire une classe 'DirectionManager' par exemple, qui contient le tableau et qui est responsable de la création des instances (sert de factory)

n°403095
Feanor
Hébéphrène à temps partiel
Posté le 21-05-2003 à 16:15:27  profilanswer
 

Feanor a écrit :


Code :
  1. public class Chaine {
  2.     private final String nom;
  3.     public Chaine(String nom) {
  4. this.nom = nom;
  5.     }
  6.     public String nom() {
  7. return nom;
  8.     }
  9.     public static void main (String[] args) {
  10. if (args.length==1) {
  11.     Chaine c = new Chaine(args[0]);
  12.     System.out.println ( "la chaine est : "+c.nom);
  13. }
  14.     }
  15. }


 
ben ouais ca marche je pensais que final ct pour l'optimisation,qu'apres on pouvais plus toucher a la reference car les methodes etaient 'hard wired' par le compilo.....
 
on m'aurait menti ???


 
 
edit :

Code :
  1. public void change(String nouvelle) {
  2. nom= nouvelle;
  3.     }


 
si on ajoute ca le compilo rale...la question viens sans doute parce que le prof a du insister pour montrer la difference entre le const du C et le final du java.....
(rassurez moi un const membre d'une classe on peut pas le virer ?)

n°404640
BifaceMcLe​OD
The HighGlandeur
Posté le 22-05-2003 à 16:15:55  profilanswer
 

Nerisson a écrit :


Bah moi j'appelle ca un destructeur, etant donné qu'elle est appelée lorsque l'objet est effectivement effacé de la mémoire...


En C++, lorsque l'objet est alloué par le compilateur, il est détruit lorsqu'on sort de sa portée. Exemple :

Code :
  1. {
  2.    Integer  n = 2;   // Un objet de type Integer est alloué.
  3.    ...
  4. } // L'objet de type Integer devient inaccessible => il est détruit et désalloué.


 
En Java, lorsque l'objet devient inaccessible, il est marqué comme inaccessible, mais il existe toujours pour le système, alors même qu'il n'existe plus pour le programme. Le moment où il sera effectivement détruit et désalloué par le système est imprévisible, et entièrement géré par le ramasse-miettes.
 
Voilà pourquoi finalize() n'est pas un destructeur à proprement parler : parce qu'un vrai destructeur est appelé lorsque l'objet cesse d'exister pour le programme. Et en Java, ce moment est impossible à déterminer.


Message édité par BifaceMcLeOD le 22-05-2003 à 16:17:00
mood
Publicité
Posté le   profilanswer
 


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

  [java]Connaitre le nombre d'instance créées d'une même classe?

 

Sujets relatifs
JAVA/JSP/strutsRecherche désespérement un example (JAVA/JSP) qui fonctionne
(Java) Alternative au BufferedReader?[C++] Lancer une applet java.
Utiliser du code C++ sous java[PHP-objet] Dans quelle classe placer cette methode ?
Java et le suicide (j'en ai marre)[JAVA] detection d'utilisateur
[Java] Missing Return Statement ?! pkoi? [Résolu][java] expression reguliere
Plus de sujets relatifs à : [java]Connaitre le nombre d'instance créées d'une même classe?


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