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

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] L'équivalent d'un #define en java ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] L'équivalent d'un #define en java ?

n°379809
ghiby
Posté le 01-05-2003 à 21:41:42  profilanswer
 

Bonsoir,
 
Je voudrais simplement savoir si il existe un équivalent d'un #define du C/C++ en java ?
 
Merci  :)

mood
Publicité
Posté le 01-05-2003 à 21:41:42  profilanswer
 

n°379821
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 01-05-2003 à 21:49:53  profilanswer
 

Ba ça dépend de ce que tu veux faire, mais a priori je te dirais que non.


---------------
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°379834
ghiby
Posté le 01-05-2003 à 21:56:04  profilanswer
 

Je ne souhaite pas faire de define du type :
 
#define RELEASE(a) if (a!=NULL) {a->Release(), a=NULL; }
 
mais plutot du type :
 
#define ma_constante_qui_apparait_souvent  16354324;
 
est-ce possible ? ou est-on oblige d'allouer une variable en memoire ?

n°379850
noldor
Rockn'roll
Posté le 01-05-2003 à 22:08:47  profilanswer
 

ghiby a écrit :

Je ne souhaite pas faire de define du type :
 
#define RELEASE(a) if (a!=NULL) {a->Release(), a=NULL; }
 
mais plutot du type :
 
#define ma_constante_qui_apparait_souvent  16354324;
 
est-ce possible ? ou est-on oblige d'allouer une variable en memoire ?

faut passer par une variable
ça semble logique, étant donné que le compilo va sortir du bytecode qui devra être lu partout


---------------
http://runnerstats.net
n°379873
ghiby
Posté le 01-05-2003 à 22:29:42  profilanswer
 

noldor a écrit :

faut passer par une variable
ça semble logique, étant donné que le compilo va sortir du bytecode qui devra être lu partout


 
 
le " #define toto 16;  " consiste a remplacer toutes les occurences de "toto" dans le prog par "16" AVANT compilation, ca n'a rien avoir. tanpis merci quand meme
 

n°379884
noldor
Rockn'roll
Posté le 01-05-2003 à 22:39:36  profilanswer
 

ghiby a écrit :


 
 
le " #define toto 16;  " consiste a remplacer toutes les occurences de "toto" dans le prog par "16" AVANT compilation, ca n'a rien avoir. tanpis merci quand meme
 
 

merci, je sais ce qu'est un #define et précompilateur, c'est mon métier
et moi je te dis que ça ne peut pas exister par rapport à la philosophie java, c est tou


---------------
http://runnerstats.net
n°379885
ghiby
Posté le 01-05-2003 à 22:46:53  profilanswer
 

noldor a écrit :

merci, je sais ce qu'est un #define et précompilateur, c'est mon métier
et moi je te dis que ça ne peut pas exister par rapport à la philosophie java, c est tou


 
Je n'avais pas compris ta réponse en fait. Désolé :sarcastic:  
 
Je vais utiliser :
 
private final static int toto = 16 ;
 
qu'est ce que tu en penses ?
 
Je suis perdu avec les "final" "static" je comprends vaguement a quoi ils servent, suis-je en train de faire n'importe quoi ?

n°379890
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 01-05-2003 à 23:07:53  profilanswer
 

Pour ce que tu veux faire, c'est OK.
final signifie que tu ne pourras pas modifier ta variable dans la suite du code. Genre si t'essaies de faire un toto = 12 dans une fonction quelconque, t'auras une erreur à la compil.
static, c'est pour dire que ta variable peut (et à la limite doit) être appelée sans passer par une instance de ta classe. Exemple (on suppose que ta classe s'appelle JolieClasse :D) :

Code :
  1. JolieClasse jc = new JolieClasse();
  2. // appel correct de toto (OK, elle est privée et donc ce que je fais n'est pas correct mais on s'en fout)
  3. int plouf = JolieClasse.toto;
  4. // appel non correct (mais qui compile quand même)
  5. int plouf2 = jc.toto;


 
Vala. Donc pour ton utilisation, t'es pas obligé de passer par un static mais le final semble logique.


Message édité par Taiche le 01-05-2003 à 23:18:51

---------------
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°379905
ghiby
Posté le 01-05-2003 à 23:16:33  profilanswer
 

ok merci  :)

n°381168
R3g
fonctionnaire certifié ITIL
Posté le 03-05-2003 à 12:38:36  profilanswer
 

Si tu as beaucoup de constantes comme ça, je te conseille de faire une classe exprès, que tu appelles constantes par exemple.
Après dans le code tu peux y aller à grands coups de constantes.TOTO, constanes.TITI etc.

mood
Publicité
Posté le 03-05-2003 à 12:38:36  profilanswer
 

n°381222
the real m​oins moins
Posté le 03-05-2003 à 15:14:46  profilanswer
 

pour info si tu fais un  
private static final int XXX = 5;  
dans une classe, il sera remplacé au moment de la compilation (enfin ça depend peut etre du compilo?), si tu veux des preuves, décompile ta classe après ;)
edit: enfin, c'est l'utilisation de cette variable qui sera remplacée par "5", hein


Message édité par the real moins moins le 03-05-2003 à 15:15:10
n°381224
the real m​oins moins
Posté le 03-05-2003 à 15:15:47  profilanswer
 

R3g a écrit :

Si tu as beaucoup de constantes comme ça, je te conseille de faire une classe exprès, que tu appelles constantes par exemple.
Après dans le code tu peux y aller à grands coups de constantes.TOTO, constanes.TITI etc.

ouais et moi je lui conseillerais plutot de voir s'il a pas envie de faire de la programmation objet plutot  :sarcastic:

n°381236
R3g
fonctionnaire certifié ITIL
Posté le 03-05-2003 à 15:34:26  profilanswer
 

the real moins moins a écrit :

ouais et moi je lui conseillerais plutot de voir s'il a pas envie de faire de la programmation objet plutot  :sarcastic:  


Et ben quoi, c'est objet, une classe Constantes qui encapsule toutes les valeurs constantes :D

n°381603
nraynaud
lol
Posté le 04-05-2003 à 12:12:23  profilanswer
 

R3g a écrit :


Et ben quoi, c'est objet, une classe Constantes qui encapsule toutes les valeurs constantes :D


Ta classe sans instance ?
Si tu avait un objet instance de cette classe :
Et tu écris quoi sur sa fiche de rôle ?
Il interragit avec quels autres objets ?
 
Une classe c'est pas un truc dans lequel on regroupe les fonction par ordre d'idée, le C, ADA, le fonctionnel etc. c'est fini en java.

n°381606
Taz
bisounours-codeur
Posté le 04-05-2003 à 12:22:02  profilanswer
 

HS
 
pour revenir au C: sauf cas extremement precis, dus a des contraintes extérieures, il faut faire __sans__ macro
 
les récentes revisions du C ont donné jour au mot clef const
 
donc on remplace avangateusement un  
 
#define N 16
 
par
 
const int N=16;
 
si mes souvenirs sont bons, la seule contrainte est que la valeur de variable const doit pouvoir etre calculée à la compilation
 
 
quand au macro destinées à faire des petites fonctions rapides, typiquement
 
#define SQUARE(X) (X)*(X)
 
le C99 apporte également des améliorations avec le mot clef inline
 
inline int square(int x)
{
   return x*x;
}
 
qui comem son nom l'indique, permet au compilateur de faire de l'inlining plus judicieusement.
 
tout cela donne des perfs équivalents aux macros, avec le typage en plus, les problème s à la con des macros (définitons multiples, shawdoing, ifndef, etc,) en moins.
 
 
on a utilisé ces mécanismes en C pour pallier aux faiblesse du langage, ce ne sont que des grosses astuces, maintenant que les problèmes sont résolus, on devrait oublier tout ça... reste plsuq u'à avertir les enseignants...

n°381737
artemice
( - ;
Posté le 04-05-2003 à 15:30:34  profilanswer
 

:jap:  je confirme tout ça on me la dit en cours cette anéée...:jap:

n°381738
Taz
bisounours-codeur
Posté le 04-05-2003 à 15:32:55  profilanswer
 

artemice a écrit :

:jap:  je confirme tout ça on me la dit en cours cette anéée...:jap:  

sans deconner? un prof de C qui dit ça? je croyais que ça existait pas... t'es sur de pas avoir un prof qui adore VC++ pour qui C et C++ c'est bonnet blanc et blanc bonnet, d'ou le const et le inline?

n°384580
matthias
Posté le 06-05-2003 à 15:50:05  profilanswer
 

R3g a écrit :


Et ben quoi, c'est objet, une classe Constantes qui encapsule toutes les valeurs constantes :D


 
y a plus elegant, enfin depend du truc, par exemple si ces constantes sont similaires à une enumeration il peut utiliser un truc du style  
 

Code :
  1. package wc3t.tournoi;
  2. public class TypeDeJeu {
  3.    private static final String WAR3_NAME = "WAR3";
  4.    public static final TypeDeJeu WAR3 = new TypeDeJeu(WAR3_NAME);
  5.    private static final String W3XP_NAME = "W3XP";
  6.    public static final TypeDeJeu W3XP = new TypeDeJeu(W3XP_NAME);
  7.    private final String myName; // for debug only
  8.    private TypeDeJeu(String name) {
  9.       myName = name;
  10.    }
  11.    /**
  12.     * Renvoit le TypeDeJeu correspondant au nom passé en parametre
  13.     * Si le nom ne correspond à rien, renvoit null
  14.     * @param name nom du type de jeu (WAR3, W3XP)
  15.     * @return le TypeDeJeu correspondant au nom passé en parametre, si le nom ne correspond à rien, renvoit null
  16.     */
  17.    public static TypeDeJeu getTypeDeJeuByName(String name) {
  18.       if (WAR3_NAME.equals(name)) {
  19.          return WAR3;
  20.       }
  21.       if (W3XP_NAME.equals(name)) {
  22.          return W3XP;
  23.       }
  24.       return null;
  25.    }
  26.    public String toString() {
  27.       return myName;
  28.    }
  29. }


 
 
y a aussi moyen de faire une classe Configuration dérivé d'un Properties, enfin y a plein de solutions pour faire mumuse  :D  
 

n°384782
nraynaud
lol
Posté le 06-05-2003 à 17:01:05  profilanswer
 

matthias a écrit :


Code :
  1. if (WAR3_NAME.equals(name)) {
  2.          return WAR3;
  3.       }
  4.       if (W3XP_NAME.equals(name)) {
  5.          return W3XP;
  6.       }
  7.       return null;




Je sais pas pourquoi mais j'aurais mis un Map ... peut être parce que ça a la même interface sans nécessiter de réecrire le moindre code lorsqu'on ajoute un jeu.

n°384808
matthias
Posté le 06-05-2003 à 17:09:02  profilanswer
 

nraynaud a écrit :


Je sais pas pourquoi mais j'aurais mis un Map ... peut être parce que ça a la même interface sans nécessiter de réecrire le moindre code lorsqu'on ajoute un jeu.


 
c'est une solution, mais ds mon esprit l'enumeration n'etait pas evolutive qd j'ai ecris le code.

n°384814
Taz
bisounours-codeur
Posté le 06-05-2003 à 17:10:21  profilanswer
 

y a tout un tas de techniques pour les safe enums en Java

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

matthias a écrit :


 
c'est une solution, mais ds mon esprit l'enumeration n'etait pas evolutive qd j'ai ecris le code.


alors types le bordel statiquement avec une sous-classe par valeur et une super-classe commune.

n°385021
artemice
( - ;
Posté le 06-05-2003 à 19:32:21  profilanswer
 

pourquoi des sous-classe... c'est pas trés lisible et c la merde à maintenir :??:  

n°385045
Taz
bisounours-codeur
Posté le 06-05-2003 à 19:45:40  profilanswer
 

artemice a écrit :

pourquoi des sous-classe... c'est pas trés lisible et c la merde à maintenir :??:  
 

gné? j'aurais le contraire moi

n°385049
artemice
( - ;
Posté le 06-05-2003 à 19:48:58  profilanswer
 

un package,un fichier ... une classe c beau non?

n°385059
nraynaud
lol
Posté le 06-05-2003 à 19:53:51  profilanswer
 

artemice a écrit :

pourquoi des sous-classe... c'est pas trés lisible et c la merde à maintenir :??:  


Des sous-classes : c'est le compilo qui se démerde avec le typage, si le typage statique de gonfle, tu peux faire du C++ void * powered ou du Smalltalk.
 
c'est moins lisible : pour moi donner un nom aux choses permet de mieux les apréhender.
 
La merde à maintenir : étendre sans revalider la moindre méthode existante et validée me parraît nettement plus viable que de haxoriser une série de if à chaque modification.

n°385070
noldor
Rockn'roll
Posté le 06-05-2003 à 20:01:21  profilanswer
 

the real moins moins a écrit :

ouais et moi je lui conseillerais plutot de voir s'il a pas envie de faire de la programmation objet plutot  :sarcastic:  

ça c'est un peu de l'intégrisme


---------------
http://runnerstats.net
n°385088
matthias
Posté le 06-05-2003 à 20:22:04  profilanswer
 

nraynaud a écrit :


alors types le bordel statiquement avec une sous-classe par valeur et une super-classe commune.


 
pour moi la creation d'une classe est la traduction de la definition d'un entite bien defini au niveau de l'analyse, donc la je trouve que cela se justifie pas

n°385134
nraynaud
lol
Posté le 06-05-2003 à 21:06:36  profilanswer
 

matthias a écrit :


 
pour moi la creation d'une classe est la traduction de la definition d'un entite bien defini au niveau de l'analyse, donc la je trouve que cela se justifie pas


UML et les Design patterns (version française) Craig Larman CampusPress  2002 p.359 :

Citation :

Fabrication Pure
Solution : Affecter un ensemble de responsabilité fortement cohésif à une classe artificielle ou de comodité qui ne représente pas un concept du domaine ; il s'agit d'une entité fabriquée de toute pièces  pour prendre en charge la forte cohésion, le faible couplage et la réutilisation.
Une telle classe est une fabrication de l'imagination. [...]


n°385200
matthias
Posté le 06-05-2003 à 22:02:45  profilanswer
 

nraynaud a écrit :


UML et les Design patterns (version française) Craig Larman CampusPress  2002 p.359 :

Citation :

Fabrication Pure
Solution : Affecter un ensemble de responsabilité fortement cohésif à une classe artificielle ou de comodité qui ne représente pas un concept du domaine ; il s'agit d'une entité fabriquée de toute pièces  pour prendre en charge la forte cohésion, le faible couplage et la réutilisation.
Une telle classe est une fabrication de l'imagination. [...]


 


 
on est pas obligé d'aimer toutes les recettes de cuisines existantes  :D  (même si ce sont des recettes de grands chefs)


Message édité par matthias le 06-05-2003 à 22:03:54
n°385201
nraynaud
lol
Posté le 06-05-2003 à 22:13:14  profilanswer
 

matthias a écrit :


 
on est pas obligé d'aimer toutes les recettes de cuisines existantes  :D  (même si ce sont des recettes de grands chefs)


Par contre on a pas le droit de faire un travail de porc uniquement pour contourner un pattern. Surtout que travailler uniquement avec des objets du domaines ça veut dire : pas de Factorys, pas d'interface graphique, un niveau de conception au raz des paquerettes ... En fait j'arrive même pas à imaginer jusqu'où va ce genre de comportement.
 
Alors que transformer les types énumérés en une classe abstraite possédant autant de sous-classes que de valeurs possibles est vraiment la base de la hiérarchie de types (2 étages).

n°385205
matthias
Posté le 06-05-2003 à 22:17:49  profilanswer
 

nraynaud a écrit :


 travailler uniquement avec des objets du domaines


 
j'ai jamais ecris ça que je sache  :o , bien sur qu'il faut utiliser les Factory, etc ... je parlais juste du cas de figure cité ci-dessus

n°385374
Jubijub
Parce que je le VD bien
Posté le 07-05-2003 à 03:05:02  profilanswer
 

ghiby a écrit :


 
Je n'avais pas compris ta réponse en fait. Désolé :sarcastic:  
 
Je vais utiliser :
 
private final static int toto = 16 ;
 
qu'est ce que tu en penses ?
 
Je suis perdu avec les "final" "static" je comprends vaguement a quoi ils servent, suis-je en train de faire n'importe quoi ?


 
c un peu de la base de java ca :  
 
Static : la variable devient membre de la classe...et est existe indépendament des instances de cette classe
 
Final : idem, mais pour une constante
 
T pas obligé de mettre ta constante en private, vu l'attribut final elle est pas modifiable de toute façon...mais ca te permet d'y accéder plus facielement...


---------------
Jubi Photos : Flickr - 500px
n°385375
Jubijub
Parce que je le VD bien
Posté le 07-05-2003 à 03:07:28  profilanswer
 

nraynaud a écrit :


UML et les Design patterns (version française) Craig Larman CampusPress  2002 p.359 :

Citation :

Fabrication Pure
Solution : Affecter un ensemble de responsabilité fortement cohésif à une classe artificielle ou de comodité qui ne représente pas un concept du domaine ; il s'agit d'une entité fabriquée de toute pièces  pour prendre en charge la forte cohésion, le faible couplage et la réutilisation.
Une telle classe est une fabrication de l'imagination. [...]


 


 
Pitié non, g une interro dessus le 14..;arghhh


---------------
Jubi Photos : Flickr - 500px
n°386159
nraynaud
lol
Posté le 07-05-2003 à 16:01:58  profilanswer
 

Jubijub a écrit :


 
Pitié non, g une interro dessus le 14..;arghhh


T'as bien de la chance d'avoir une interro sur les Design-patterns, beaucoup de gens n'ont de cours que sur les diagrammes de classes et les Use-case. Alors que se sont des parties très "technique" qui n'ont rien d'intéressantes en soit mais les modèles sous-jacents il est rare de les étudier.

n°386491
Jubijub
Parce que je le VD bien
Posté le 07-05-2003 à 20:26:30  profilanswer
 

le programme en design c l'ensemble de son bouquin...mais en anglais :D (erasmus roulaize)
 
ca et de l'analyse de ce qui fait un information system...


---------------
Jubi Photos : Flickr - 500px
n°386493
the real m​oins moins
Posté le 07-05-2003 à 20:28:42  profilanswer
 

ski le prof??


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°387909
Kahyman
Posté le 09-05-2003 à 09:31:23  profilanswer
 

nraynaud a écrit :


T'as bien de la chance d'avoir une interro sur les Design-patterns, beaucoup de gens n'ont de cours que sur les diagrammes de classes et les Use-case. Alors que se sont des parties très "technique" qui n'ont rien d'intéressantes en soit mais les modèles sous-jacents il est rare de les étudier.


 
Bein euh... Nous les DP on les donne dans le cadre de programmation objet, avec une breve intro a UML. Je ne sais pas comment ca se passe "ailleurs" mais je n'attends pas de mes etudiants qu'ils sachent coder une application (j'entends par la qu'on va tres peu voir du cote des APIs existantes) a la fin du semestre, mais qu'ils sachent penser objet, et manipuler la puissance de ce paradigme en l'appliquant a Java.
 
Bref premier semestre on apprend a reflechir, concevoir, gribouiller, inventer, deuxieme semestre ca code sec en utilisant ce qu'on a appris...

mood
Publicité
Posté le   profilanswer
 


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

  [JAVA] L'équivalent d'un #define en java ?

 

Sujets relatifs
[Java] Introspection et instancesImprimer un fichier (HTML) en JAVA
[Java][Livre] Apprendre ![JAVA]Plein de questions de débutant
demande aide surr une question tres precise en java(servlet)est ce qu'il y a un equivalent d'ETAT(Access) en PHP pour impression
Executer une commande en JAVAobtenir un .exe ou similaire en java ???
Comment executer des commandes dos ou java ?java aide,question facile
Plus de sujets relatifs à : [JAVA] L'équivalent d'un #define en java ?


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