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

  FORUM HardWare.fr
  Programmation
  Java

  [C --> Java] Quel est l'équivalent d'un enum

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C --> Java] Quel est l'équivalent d'un enum

n°158511
El_gringo
Posté le 13-06-2002 à 14:18:08  profilanswer
 

En C, il existe enum.
enum, c'est la possibilité de définir un type et des entier constants en même temps. Je m'explique.
Là, je veut gérer des droits d'accès pour une classe "Utilisateur".
En C++, j'aurai fait:

Code :
  1. enum rights {kAll, kRead, kReadWrite};


ça, ça défini le type "rights", qui peut prendre les 3 valeurs kAll, kRead, et kReadWrite (ce sont en fait des entier constants, qui valent respectivement 0,1, et 2, ms on s'en fout).
C vachement pratique, parce que, du coup, j'aurai mis "rights droitUtilisateur" comme membre privé de ma classe Utilisateur.
et j'aurai pu mettre les accèsseurs:

Code :
  1. void setRights (rights droits);
  2. rights getRights ();


C propre, c clean. J'aime.:D
Mais en java, comme je peux faire pr faire un truc équivalent (sans non plus créer une classe "Rights", ça vaut pas le coup) ?

mood
Publicité
Posté le 13-06-2002 à 14:18:08  profilanswer
 

n°158514
DLR
Hein c'était quoi la question?
Posté le 13-06-2002 à 14:20:34  profilanswer
 

C => langage imperatif
Java => langage objet
 
donc si tu fais du java tu creees une classe :)


---------------
Narf... It is broken...
n°158520
El_gringo
Posté le 13-06-2002 à 14:23:25  profilanswer
 

DLR a écrit a écrit :

C => langage imperatif
Java => langage objet
 
donc si tu fais du java tu creees une classe :)  




 
c pas parce que c objet qu'on créé des classes tout l'temps à tout va, sans réfléchir...

n°158523
darklord
You're welcome
Posté le 13-06-2002 à 14:24:36  profilanswer
 

el_gringo a écrit a écrit :

 
 
c pas parce que c objet qu'on créé des classes tout l'temps à tout va, sans réfléchir...  




 
euh t'es gentil mais faut pas pousser qd meme! C'est un langauge orienté objet donc tu travailles avec des objets. Et un objet est défini par sa classe.
 
Donc il faut passer par un objet, DLR a raison.


---------------
Just because you feel good does not make you right
n°158525
darklord
You're welcome
Posté le 13-06-2002 à 14:25:32  profilanswer
 

---> Enfin du moins une partie d'objet. Je ne pense pas que DLR voulait que tu crées un objet rien que pour ça ..


---------------
Just because you feel good does not make you right
n°158526
DLR
Hein c'était quoi la question?
Posté le 13-06-2002 à 14:25:51  profilanswer
 

DarkLord a écrit a écrit :

 
 
euh t'es gentil mais faut pas pousser qd meme! C'est un langauge orienté objet donc tu travailles avec des objets. Et un objet est défini par sa classe.
 
Donc il faut passer par un objet, DLR a raison.  




:jap:
 
SmallTalk RuLeZ


---------------
Narf... It is broken...
n°158531
DLR
Hein c'était quoi la question?
Posté le 13-06-2002 à 14:27:37  profilanswer
 

DarkLord a écrit a écrit :

---> Enfin du moins une partie d'objet. Je ne pense pas que DLR voulait que tu crées un objet rien que pour ça ..  




:D
moi je ferai pas comme il fait mais c son choix :)
enum existe pas en java donc forcement...
taka faire une interface 'enum' ;)


---------------
Narf... It is broken...
n°158533
El_gringo
Posté le 13-06-2002 à 14:27:59  profilanswer
 

DarkLord a écrit a écrit :

---> Enfin du moins une partie d'objet. Je ne pense pas que DLR voulait que tu crées un objet rien que pour ça ..  




 
Comment ça une "partie" d'objet !?

n°158541
darklord
You're welcome
Posté le 13-06-2002 à 14:32:23  profilanswer
 

el_gringo a écrit a écrit :

 
 
Comment ça une "partie" d'objet !?  




 
bin je connais pas enum en C mais un objet peut offrir cette foncionnalité tout en offrant d'autres fonctionnalités.
 
Enfin bref ...De toutes façons que veux tu faire d'autre qu'un objet ?


---------------
Just because you feel good does not make you right
n°158544
El_gringo
Posté le 13-06-2002 à 14:34:33  profilanswer
 

DarkLord a écrit a écrit :

 
 
bin je connais pas enum en C mais un objet peut offrir cette foncionnalité tout en offrant d'autres fonctionnalités.
 
Enfin bref ...De toutes façons que veux tu faire d'autre qu'un objet ?  




 
Bah je savais pas justement ! C bien pour ça que j'posais la question !
Pour une fois, le Java est moins pratique que le C++. Une fois n'est pas coutume.

mood
Publicité
Posté le 13-06-2002 à 14:34:33  profilanswer
 

n°158551
DLR
Hein c'était quoi la question?
Posté le 13-06-2002 à 14:37:56  profilanswer
 

el_gringo a écrit a écrit :

 
 
Bah je savais pas justement ! C bien pour ça que j'posais la question !
Pour une fois, le Java est moins pratique que le C++. Une fois n'est pas coutume.  




question de point de vue, car C++ c mi objet mi imperatif
si tu veux faire du vrai objet tu tests smallTalk tu va voir c marrant...
Java c entre le C++ et smalltalk
 

Code :
  1. Public class Droit{
  2. public static final int kAll = 1;
  3. public static final int kRead = 2;
  4. public static final int kWrite = 3;
  5. int[] allowedVars = {kAll,kRead,kWrite}
  6. private int droit;
  7. Public Droit(int d){
  8. int i;
  9. for(i=0;i<allowedVars.length;i++)if(d ==allowedVar[i]){
  10. droit = d;
  11. }
  12. throw new Exception("Valeur incorrecte" );
  13. }
  14. Public int getDroit(){return d;}
  15. }


Message édité par DLR le 13-06-2002 à 15:05:32

---------------
Narf... It is broken...
n°158552
darklord
You're welcome
Posté le 13-06-2002 à 14:38:06  profilanswer
 

il y a une différence entre pratique et rigoureux ...   [:titprem]


---------------
Just because you feel good does not make you right
n°158559
DLR
Hein c'était quoi la question?
Posté le 13-06-2002 à 14:42:07  profilanswer
 

DarkLord a écrit a écrit :

il y a une différence entre pratique et rigoureux ...   [:titprem]  




:D
 
chuuut!


---------------
Narf... It is broken...
n°158612
El_gringo
Posté le 13-06-2002 à 15:04:09  profilanswer
 

DarkLord a écrit a écrit :

il y a une différence entre pratique et rigoureux ...   [:titprem]  




 
c rigoureux un enum.
Imagine que toi c une facilité d'écriture pour créer une classe que Mister dlr à faite. (merci au passage).

n°158616
DLR
Hein c'était quoi la question?
Posté le 13-06-2002 à 15:06:24  profilanswer
 

el_gringo a écrit a écrit :

 
 
c rigoureux un enum.
Imagine que toi c une facilité d'écriture pour créer une classe que Mister dlr à faite. (merci au passage).  




de rien, fais gaffe g fait un edit sur les static int g rajoute le final :)
public static final int = constante publique de classe comme une valeur enum en fait


---------------
Narf... It is broken...
n°158633
darklord
You're welcome
Posté le 13-06-2002 à 15:19:44  profilanswer
 

el_gringo a écrit a écrit :

 
 
c rigoureux un enum.
Imagine que toi c une facilité d'écriture pour créer une classe que Mister dlr à faite. (merci au passage).  




 
ct une boutade :) je rigolais, promis


---------------
Just because you feel good does not make you right
n°158637
LeGreg
Posté le 13-06-2002 à 15:22:32  profilanswer
 

on peut faire de l'objet sans classes
eheh ;)
 
LeGreg

n°158640
DLR_Ninja
Ku Lung Vo Dao Child Incognito
Posté le 13-06-2002 à 15:23:27  profilanswer
 

legreg a écrit a écrit :

on peut faire de l'objet sans classes
eheh ;)
 
LeGreg  




 
en C oui, mais en java c un peu cho non?
 
XDR RPC RuLeZ?


---------------
Narf... [:dlr_ninja]  
n°158641
DLR
Hein c'était quoi la question?
Posté le 13-06-2002 à 15:23:54  profilanswer
 

oups


---------------
Narf... It is broken...
n°158662
LeGreg
Posté le 13-06-2002 à 15:43:18  profilanswer
 

DLR_Ninja a écrit a écrit :

 
en C oui, mais en java c un peu cho non?




 
je ne pensais pas au java
mais plus au javascript
(meme si ca ne doit pas etre le seul)
 
exemple en javascript tu ajoutes une nouvelle methode a un objet a la volee  
this.newMethod = maMethode;
(et this est passé implicitement a maMethode)
 
LeGreg

n°158881
benou
Posté le 13-06-2002 à 18:40:12  profilanswer
 

Si tu veux dte faire un truc bien objet, tu peux utiliser un singleton (ou plutot un triteton en l'occurence) :
 

Code :
  1. public class Right {
  2.    public static final Right ALL = new Right();
  3.    public static final Right READ = new Right();
  4.    public static final Right READ_WRITE = new Right();
  5.    private Right () {}
  6. }


 
et tu l'utilises comme ca :
 

Code :
  1. truc.setRight(Right.ALL);
  2.    //...
  3.    if (truc.getRight() == Right.READ) {
  4.       //...  
  5.    }

n°159110
El_gringo
Posté le 14-06-2002 à 08:36:28  profilanswer
 

benou a écrit a écrit :

Si tu veux dte faire un truc bien objet, tu peux utiliser un singleton (ou plutot un triteton en l'occurence) :
 

Code :
  1. public class Right {
  2.    public static final Right ALL = new Right();
  3.    public static final Right READ = new Right();
  4.    public static final Right READ_WRITE = new Right();
  5.    private Right () {}
  6. }


 
et tu l'utilises comme ca :
 

Code :
  1. truc.setRight(Right.ALL);
  2.    //...
  3.    if (truc.getRight() == Right.READ) {
  4.       //...  
  5.    }

 




 
Haa... ça, ça me plait bien !
Merci Benou. :jap:

n°159111
benou
Posté le 14-06-2002 à 08:38:23  profilanswer
 

you're welcome :jap:

n°159116
darklord
You're welcome
Posté le 14-06-2002 à 08:47:27  profilanswer
 

yeas benou j'aime bien ton code c'est bien propre :)


---------------
Just because you feel good does not make you right
n°159130
benou
Posté le 14-06-2002 à 09:06:28  profilanswer
 

merci :)

n°159135
darklord
You're welcome
Posté le 14-06-2002 à 09:13:47  profilanswer
 

benou a écrit a écrit :

merci :)  




 
non je viens encore de relire c'est vraiment très astucieux comme système :)
 
Moi j'utilise des constantes mais bon :/
 

Code :
  1. public static final int UNAVAILABLE = -1;
  2. public static final int UP = 1;


 
etc.


---------------
Just because you feel good does not make you right
n°159149
benou
Posté le 14-06-2002 à 09:33:05  profilanswer
 

ouais, les static final int ca sert à ca aussi ... l'avantage des objets, c'est que tu peux par la suite les "améliorer". Par exemple, mettre un toString plus explicite, ou ajouter des méthodes de comparaison de droits, etc ...
 
d'ailleurs, je fais une petite rectification à mon exemple d'utilisation : il vaut mieux utiliser le equals plutot que le ==. Pour le moment, ca revient exactement au même, mais ca permettra par la suite de redefinir le equals si la classe Right est amenée à changer...
 

Code :
  1. if (truc.getRight().equals(Right.READ)) {
  2.      //...   
  3.   }

n°160746
BifaceMcLe​OD
The HighGlandeur
Posté le 17-06-2002 à 13:34:11  profilanswer
 

De plus, l'avantage d'utiliser une classe avec un constructeur privé, c'est que cela interdit à l'utilisateur de créer ses propres instances de cette classe, donc d'enrichir l'enum en douce...

mood
Publicité
Posté le   profilanswer
 


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

  [C --> Java] Quel est l'équivalent d'un enum

 

Sujets relatifs
[java - applet] comment traduire "trusted" applet en français ?[Java - Servlets] Utilisation des sessions
comment installer java sous linux?[java] need help
[java/Math] formule encore :-)[Java] Socket + Timeout + buffer en sortir
Java et Langage C[Java]Comment desactiver le garbage collector ?
[JAVA] Lecture d'un fichier texte[Java] copie de fichier et de repertoire
Plus de sujets relatifs à : [C --> Java] Quel est l'équivalent d'un enum


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