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

  FORUM HardWare.fr
  Programmation
  Java

  [java] Methode et champs static

 


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

[java] Methode et champs static

n°393564
fredodidoo
Posté le 14-05-2003 à 15:35:59  profilanswer
 

Que est l'interet du mot clé static a part le fait qu'il sopit accessible qu' à partir de la classe.
Dans quel caas l'utiliser

mood
Publicité
Posté le 14-05-2003 à 15:35:59  profilanswer
 

n°393920
bobuse
Posté le 14-05-2003 à 16:51:29  profilanswer
 

accessible qu'a partir de la classe ? kesako ?
 
static signifie que la variable/fonction peut etre utilisée sans avoir une instance de la classe.
les variables static sont souvent utilisee pour faire des genres de variables globales :/, ca p[eut servir a connaitre le nombre d'instances aussi (voir exemple).
 
 
teste ca :

Code :
  1. public class Exemple {
  2.    int i=3;
  3.    static int j=0;
  4.  
  5.   public Exemple() {
  6.     j++;
  7.   }
  8.   public static void main(String [] args) {
  9.     Exemple exemple=new Exemple();
  10.     System.out.println(exemple.i);
  11.     System.out.println(Exemple.j);
  12.     Exemple exempleBis=new Exemple();
  13.     System.out.println(Exemple.j);
  14.   }
  15. }



---------------
get amaroK plugin
n°393933
darklord
You're welcome
Posté le 14-05-2003 à 16:53:55  profilanswer
 

fredodidoo a écrit :

Que est l'interet du mot clé static a part le fait qu'il sopit accessible qu' à partir de la classe.
Dans quel caas l'utiliser  


 
[:spamafote]
 
bin static c'est pas lié à une instance particulière mais a la classe. Ca veut dire que tu n'es pas obligé de créer une instance de la classe pour l'utiliser


---------------
Just because you feel good does not make you right
n°425626
Demonclean​er
Posté le 12-06-2003 à 22:29:39  profilanswer
 

Bonjour , moi j'aurais voulu savoir alors quel est l'effet de rendre une classe statique ? dans quel but faire cela ?

n°425659
nraynaud
lol
Posté le 12-06-2003 à 23:04:07  profilanswer
 

fredodidoo a écrit :

Que est l'interet du mot clé static a part le fait qu'il sopit accessible qu' à partir de la classe.
Dans quel caas l'utiliser  


Tu vois les variables globales en C ?
Ben c'est pareil c'est mal !


Message édité par nraynaud le 12-06-2003 à 23:04:53
n°425715
deltaden
Posté le 13-06-2003 à 00:59:44  profilanswer
 

nraynaud a écrit :

Tu vois les variables globales en C ?
Ben c'est pareil c'est mal !


 :heink:  
Sans ça, je vois pas comment tu ferais plein de trucs.
Et puis ca n'a rien à voir avec les variables globales en C, static, c'est "exactement" comme les static du C++.


Message édité par deltaden le 13-06-2003 à 01:00:05
n°425756
darklord
You're welcome
Posté le 13-06-2003 à 08:24:30  profilanswer
 

deltaden a écrit :


 :heink:  
Sans ça, je vois pas comment tu ferais plein de trucs.
Et puis ca n'a rien à voir avec les variables globales en C, static, c'est "exactement" comme les static du C++.


 
Bin si tu ne "vois" pas c'est que ton design est mauvais. faire du static c'est mal et d'ailleurs c'est pas OO ;)
 
Utiliser le singleton pattern revient à peu près au meme en fait.
 
Les attributs statiques je le fais encore souvent c'est pratique dans pas mal de cas. Mais une classe statique ca non, qd meme pas ;)


Message édité par darklord le 13-06-2003 à 08:25:36

---------------
Just because you feel good does not make you right
n°425758
kadreg
profil: Utilisateur
Posté le 13-06-2003 à 08:27:01  profilanswer
 

fredodidoo a écrit :

Que est l'interet du mot clé static a part le fait qu'il sopit accessible qu' à partir de la classe.


 
Pouvoir stocker des informations au niveau de la métaclasse et non d'une instance d'une classe. Cela permet de stocker une information qui portant sur l'ensemble des instances d'une classe et non chacune d'entre elle.
 
Le cas le plus compréhensible est un compteur du nombre d'instance (c'est bien une information de la metaclasse), ou une référence vers une instance unique si on ne veut instancier qu'un exemplaire de la classe (pattern singleton).


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°425776
El_gringo
Posté le 13-06-2003 à 08:46:35  profilanswer
 

DarkLord a écrit :


Mais une classe statique ca non, qd meme pas ;)


 
Une classe statique !? J'connais même pas ! J'comprend pas bien à quoi ça peut correspondre...

n°425778
darklord
You're welcome
Posté le 13-06-2003 à 08:47:12  profilanswer
 

El_gringo a écrit :


 
Une classe statique !? J'connais même pas ! J'comprend pas bien à quoi ça peut correspondre...


 
bin que des méthodes statiques dedans quoi  


---------------
Just because you feel good does not make you right
mood
Publicité
Posté le 13-06-2003 à 08:47:12  profilanswer
 

n°425781
kadreg
profil: Utilisateur
Posté le 13-06-2003 à 08:47:57  profilanswer
 

El_gringo a écrit :


 
Une classe statique !? J'connais même pas ! J'comprend pas bien à quoi ça peut correspondre...


C'est une javasserie :o
 
http://www.javaworld.com/javaworld [...] atic2.html


Message édité par kadreg le 13-06-2003 à 08:48:31

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°425788
darklord
You're welcome
Posté le 13-06-2003 à 08:48:48  profilanswer
 


 
[:prosterne] kadreg [:prosterne2]


---------------
Just because you feel good does not make you right
n°425790
El_gringo
Posté le 13-06-2003 à 08:49:00  profilanswer
 

DarkLord a écrit :


 
bin que des méthodes statiques dedans quoi  


 
Ha, d'accord. Ben j'imagine que c'est moche. Mais y a un mot clé pour ça ? "static" peut s'appliquer à une classe ?

n°425793
darklord
You're welcome
Posté le 13-06-2003 à 08:49:49  profilanswer
 

El_gringo a écrit :


 
Ha, d'accord. Ben j'imagine que c'est moche. Mais y a un mot clé pour ça ? "static" peut s'appliquer à une classe ?


 
non et sinon kadreg a répondu mieux que moi en fait :o


---------------
Just because you feel good does not make you right
n°425802
El_gringo
Posté le 13-06-2003 à 08:54:04  profilanswer
 

DarkLord a écrit :


 
non et sinon kadreg a répondu mieux que moi en fait :o


 
C'est clair !

n°425814
darklord
You're welcome
Posté le 13-06-2003 à 08:57:35  profilanswer
 

El_gringo a écrit :


 
C'est clair !


 
ta gueule :o
si t'es pas content c'est le même prix :o


---------------
Just because you feel good does not make you right
n°425850
El_gringo
Posté le 13-06-2003 à 09:12:02  profilanswer
 

DarkLord a écrit :


 
ta gueule :o
si t'es pas content c'est le même prix :o


 
Ho, Dark, c'est si bon toute cette douceur...

n°425897
darklord
You're welcome
Posté le 13-06-2003 à 09:23:24  profilanswer
 

El_gringo a écrit :


 
Ho, Dark, c'est si bon toute cette douceur...


 
n'est-ce-pas? :o


---------------
Just because you feel good does not make you right
n°425958
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-06-2003 à 09:39:31  profilanswer
 

DarkLord a écrit :


bin que des méthodes statiques dedans quoi  


Pourquoi c'est mal ? :??:
Perso j'trouve ça pratique pour faire des méthodes utilitaires, genre traitements sur des chaînes, sans avoir besoin d'une instance pour bosser [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°425966
darklord
You're welcome
Posté le 13-06-2003 à 09:41:26  profilanswer
 

Taiche a écrit :


Pourquoi c'est mal ? :??:
Perso j'trouve ça pratique pour faire des méthodes utilitaires, genre traitements sur des chaînes, sans avoir besoin d'une instance pour bosser [:spamafote]


 
Vi vi ok je veux pas cracher dans la soupe. Tu as raison meme si passer par un singleton est plus O.O
 
M'enfin c'est un détail [:spamafote]


---------------
Just because you feel good does not make you right
n°426853
deltaden
Posté le 13-06-2003 à 15:57:50  profilanswer
 

DarkLord a écrit :

Bin si tu ne "vois" pas c'est que ton design est mauvais. faire du static c'est mal et d'ailleurs c'est pas OO ;)
 
Utiliser le singleton pattern revient à peu près au meme en fait.
 
Les attributs statiques je le fais encore souvent c'est pratique dans pas mal de cas. Mais une classe statique ca non, qd meme pas ;)


Ben je parlais d'attributs statiques, qui sont quand même parfois nécessaire (numéroter les instance...).
Je viens de découvrir qu'on pouvait déclarer des classes statiques, ca peut être utile.  
Mais c'est vrai que ca s'éloigne un peu de l'OO, mais bon on est toujours loin du global du C/C++.  [:proy]

n°453337
krosso
j'suis à la bourre
Posté le 10-07-2003 à 10:42:11  profilanswer
 

Si ma méthode renvoi un résultat qui est un calcul se basant uniquement sur les paramètres passés en entrée, j'ai le choix de la rendre static ou non.
 
Voyez-vous un intérêt/inconvénient à la rendre static ?
 
K.

n°453346
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 10-07-2003 à 10:46:44  profilanswer
 

Ba l'intérêt c'est de pouvoir l'appeler de partout, depuis des méthodes statiques comme d'autres méthodes non-statiques. cf ce que je dis plus haut à ce propos : une méthode ayant un but strictement utilitaire et ne se servant pas de données inhérentes à la classe dans laquelle elle est déclarée peut tout à fait être statique. Personnellement, je trouve ça d'ailleurs plus logique : pas besoin d'instance pour pouvoir bosser [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°453361
krosso
j'suis à la bourre
Posté le 10-07-2003 à 10:51:39  profilanswer
 

Taiche a écrit :

Personnellement, je trouve ça d'ailleurs plus logique : pas besoin d'instance pour pouvoir bosser [:spamafote]


Je trouve aussi tentant de rendre systématiquement statiques les méthodes qui peuvent l'être, je me demande juste s'il n'y aurait pas une contre-indication à laquelle je n'aurais pas pensé.

n°454640
darklord
You're welcome
Posté le 11-07-2003 à 09:15:34  profilanswer
 

krosso a écrit :


Je trouve aussi tentant de rendre systématiquement statiques les méthodes qui peuvent l'être, je me demande juste s'il n'y aurait pas une contre-indication à laquelle je n'aurais pas pensé.


 
c'est pas OO
Si tu t'en fous d'avoir un desing OO propre bin alors fais le [:spamafote]


---------------
Just because you feel good does not make you right
n°454650
benou
Posté le 11-07-2003 à 09:23:17  profilanswer
 

en tout cas, membre static et classe static ca a rien à voir !
 
pour une classe, static ne peut être utilisé que lors de la déclaration DANS une autre classe et permet juste de différencier d'une inner-classe => le static veut dire que la classe ne dépend pas de la classe englobante et n'a pas de référence vers une de ses instances.
 
ex : (avec une interface) java.util.Map.Entry


Message édité par benou le 11-07-2003 à 09:24:39

---------------
ma vie, mon oeuvre - HomePlayer
n°454655
kadreg
profil: Utilisateur
Posté le 11-07-2003 à 09:28:14  profilanswer
 

DarkLord a écrit :


Si tu t'en fous d'avoir un desing OO propre bin alors fais le [:spamafote]


 
[:tapai]
 


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°454709
El_gringo
Posté le 11-07-2003 à 10:14:02  profilanswer
 

krosso a écrit :


Je trouve aussi tentant de rendre systématiquement statiques les méthodes qui peuvent l'être, je me demande juste s'il n'y aurait pas une contre-indication à laquelle je n'aurais pas pensé.


 

DarkLord a écrit :


 
c'est pas OO
Si tu t'en fous d'avoir un desing OO propre bin alors fais le [:spamafote]


 
Je suis pas d'accord avec Dark là. Si une méthode n'utilise aucun attribut de la classe, il faut la mettre en static. Par contre, conceptuellement parlant, ce cas ne devrait peut être pas se produire !(?)

n°454720
darklord
You're welcome
Posté le 11-07-2003 à 10:19:00  profilanswer
 

El_gringo a écrit :


 
 
 
Je suis pas d'accord avec Dark là. Si une méthode n'utilise aucun attribut de la classe, il faut la mettre en static. Par contre, conceptuellement parlant, ce cas ne devrait peut être pas se produire !(?)


 
bin c'est exactement ce que j'ai dit en plus détaillé hein. Plus précisément ce n'est pas OO d'avoir une méthode sur un objet qui n'ait pas besoin d'une instance de l'objet pour fonctionner. Cela dit si c'est le cas il faut effectivement qu'elle soie statique.
 
tjrs pas d'accord avec moi? :heink:


---------------
Just because you feel good does not make you right
n°454726
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 11-07-2003 à 10:23:06  profilanswer
 

DarkLord a écrit :


c'est pas OO
Si tu t'en fous d'avoir un desing OO propre bin alors fais le [:spamafote]


El_gringo a écrit :


Je suis pas d'accord avec Dark là. Si une méthode n'utilise aucun attribut de la classe, il faut la mettre en static. Par contre, conceptuellement parlant, ce cas ne devrait peut être pas se produire !(?)


Et conceptuellement parlant ou avec un design OO qui arrache sa mère, on fait comment ? Faut bannir le static et laisser les méthodes qui utilisent rien de particulier à la classe en non static ? C'est quoi l'intérêt, à part se faire chier avec un new et laisser du taf au GC à la fermeture du bloc ? :??:  
J'avoue que j'ai un peu de mal à comprendre [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°454731
kadreg
profil: Utilisateur
Posté le 11-07-2003 à 10:25:18  profilanswer
 

DarkLord a écrit :


Cela dit si c'est le cas il faut effectivement qu'elle soie statique.


 
Ou alors se demander si elle est bien à sa place dans CETTE classe, et ne mériterais pas d'aller ailleurs (Equivalent dans l'appli de java.lang.System).
 
Parcequ'une méthode comme ça dans une classe métier ...


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°454733
benou
Posté le 11-07-2003 à 10:26:19  profilanswer
 

pour savoir si je mets une méthode static, lma question que je me pose c'est :
 - est ce que c'est une fonctionnalité de mon objet ?
 - est ce que c'est une fonctionnalité de ma classe ?
 
souvent la réponse est très simple à déduire ...
Que la méthode ait besoin d'attributs ou non, on s'en tape un peu. (sauf que si elle en a besoin, c'est bien sûr qu'elle ne peut pas être static)


---------------
ma vie, mon oeuvre - HomePlayer
n°454737
chrisbk
-
Posté le 11-07-2003 à 10:28:17  profilanswer
 

DarkLord a écrit :


 
bin c'est exactement ce que j'ai dit en plus détaillé hein. Plus précisément ce n'est pas OO d'avoir une méthode sur un objet qui n'ait pas besoin d'une instance de l'objet pour fonctionner. Cela dit si c'est le cas il faut effectivement qu'elle soie statique.
 
tjrs pas d'accord avec moi? :heink:


 
Huh ?
 
l'exemple le plus con qui me viennent a l'esprit c'est un truc que j'ai fait du genre (c++ mais l'idee est la meme):
 
 

Code :
  1. class CRC32
  2. {
  3. static long computeCRC32(unsigned char *data,int size)
  4. {
  5. //fais calcul sans rien toucher a CRC32, qui de toute facon n'a pas de membre
  6. }
  7. }


 
En quoi c pas OO ca ? je fais comment pour que ca soit OO ?
 
 

n°454739
benou
Posté le 11-07-2003 à 10:30:34  profilanswer
 

la vrai question est : est ce qu'on a toujours besoin d'une architecture completement OO ?


---------------
ma vie, mon oeuvre - HomePlayer
n°454743
lorill
Posté le 11-07-2003 à 10:32:53  profilanswer
 

chrisbk a écrit :


Code :
  1. class CRC32
  2. {
  3. static long computeCRC32(unsigned char *data,int size)
  4. {
  5. //fais calcul sans rien toucher a CRC32, qui de toute facon n'a pas de membre
  6. }
  7. }




 

Code :
  1. class MyFile
  2. {
  3.   byte[] data;
  4.  
  5.   long computeCRC32();
  6. }

n°454745
lorill
Posté le 11-07-2003 à 10:33:54  profilanswer
 

benou a écrit :

la vrai question est : est ce qu'on a toujours besoin d'une architecture completement OO ?


non, mais si tu as des bouts OO, des bouts fonctionnels, des bouts proceduraux, c'est gavant. Respecter une convention, que ce soit de codage ou de conception, c'est plus simple, c'est tout.

n°454750
chrisbk
-
Posté le 11-07-2003 à 10:35:02  profilanswer
 

lorill a écrit :


 

Code :
  1. class MyFile
  2. {
  3.   byte[] data;
  4.  
  5.   long computeCRC32();
  6. }




 
J'aime pas, trop dangereux (en C++), rien ne me dit que data soit encore vivant quand j'execute mon computeCRCmachin. Se trimballer avec des pointeurs comme ca c pas une bonne idée
 


Message édité par chrisbk le 11-07-2003 à 10:35:52
n°454754
lorill
Posté le 11-07-2003 à 10:38:34  profilanswer
 

chrisbk a écrit :


J'aime pas, trop dangereux (en C++), rien ne me dit que data soit encore vivant quand j'execute mon computeCRCmachin. Se trimballer avec des pointeurs comme ca c pas une bonne idée


 

Code :
  1. class MyFile
  2. {
  3. private byte[] data;
  4. public MyFile(data); //ou filename  
  5. long computeCRC32();
  6. }

 
 
et vu que tu touches pas au pointeurs, ca sera pas garbagé tant que t'aura l'instance de MyFile, vu que y'a une reference sur data.
 
et c'est pas plus dangereux que de passer un pointeur null a ta methode statique  [:sinclaire]

n°454765
chrisbk
-
Posté le 11-07-2003 à 10:42:21  profilanswer
 

lorill a écrit :


 

Code :
  1. class MyFile
  2. {
  3. private byte[] data;
  4. public MyFile(data); //ou filename  
  5. long computeCRC32();
  6. }

 
 
et vu que tu touches pas au pointeurs, ca sera pas garbagé tant que t'aura l'instance de MyFile, vu que y'a une reference sur data.
 
et c'est pas plus dangereux que de passer un pointeur null a ta methode statique  [:sinclaire]  


 
J'ai precisé en c++ [:cupra]  
Un pointeur null je peux le voir facilement au moment de l'encodage, mais un pointeur qui pointe sur un truc qui a ete deleté, la c une autre paire de manche
 
Pis a l'usage c quand meme + lourd :O et si par hasard ma classe de CRC32 traine dans un coin et que le dernier CRC portait sur 20Mo de donnee ben j'ai l'air con [:ddr555]
 
 
 
 

n°454773
lorill
Posté le 11-07-2003 à 10:45:03  profilanswer
 

chrisbk a écrit :


Pis a l'usage c quand meme + lourd :O  


si tu laisses ton *data dans la nature, j'en conviens. Si tu l'encapsule correctement dans une classe, ben rajouter un computeCRC32 comme methode de cette classe, c'est pas vraiment plus lourd.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  [java] Methode et champs static

 

Sujets relatifs
[Méthode développement] Java/Jsp/Struts[Java-Impression] Imprimer une JInternalFrame
[java_debutant]Inserer une image dans une fenetre?[php/mysql] Afficher des champs de db choisi par des checkbox
[java] éxecuter un programme externe[asp] Erreur lors de passage de champs pour une requete
Maitriser le terminal en javaVB.NET A la recherche d'une méthode !
Un bouton qui s'active si deux champs sont remplis 
Plus de sujets relatifs à : [java] Methode et champs static


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