de C++ vers Java : le mot clé "const"( en C++)

de C++ vers Java : le mot clé "const"( en C++) - Java - Programmation

Marsh Posté le 30-07-2002 à 18:05:15    

Alors, en C++, on peut utiliser "const" de différente manières:

  • Sur un attribut de classe :
Code :
  1. private const int kMonInt = 0;


ça, en java, ça équivaut à :

Code :
  1. final int kMonInt = 0;


 
ok, ms sur les méthodes, en C++, y a 2 trucs bien pratiques que je vois pas comment retrouver en Java :

  • en C++, ça :

    Code :
    1. const int maMethode () {....corps}

ça veut dire que la valeur de retour de la méthode est une constante.
alors qu'en java :

Code :
  1. final int maMethode () {....corps}


ça n'a pas du tout le même sens, comme vous le savez.
 

  • Et en C++, y a aussi :

    Code :
    1. int maMethode () const {....corps}

qui indique que cette méthode est constante, c à dire, qu'elle ne modifie ^pas la valeur de l'instance à laquelle elle est appliquée...
 
qqn peut me donner l'équivalent de ces 2 trucs en Java ? (s'ils existent bien sur !)


Message édité par El_gringo le 30-07-2002 à 18:06:01
Reply

Marsh Posté le 30-07-2002 à 18:05:15   

Reply

Marsh Posté le 30-07-2002 à 18:07:08    

ha, ça c'est du bon topic interessant :)
(peut pas t'aider, désolé:D)

Reply

Marsh Posté le 30-07-2002 à 18:12:57    

DarkLording in progress ...  ;)

Reply

Marsh Posté le 30-07-2002 à 18:13:23    

bobuse a écrit a écrit :

DarkLording in progress ...  ;)  



moi je sens plutot un benou sur ce topic, non? :)

Reply

Marsh Posté le 30-07-2002 à 18:14:30    

el_gringo a écrit a écrit :

Code :
  1. const int maMethode () {....corps}


ça veut dire que la valeur de retour de la méthode est une constante.




 
Là, je suis pas trop ! en quoi une variable de retour peut être constante ou pas ?

Reply

Marsh Posté le 30-07-2002 à 18:15:03    

--greg-- a écrit a écrit :

moi je sens plutot un benou sur ce topic, non? :)




Non il doit encore avoir de la vaisselle  :D

Reply

Marsh Posté le 30-07-2002 à 18:16:24    

j'vois pas non plus ...

Reply

Marsh Posté le 30-07-2002 à 18:18:59    

Pour le dernier tu peux mettre ta méthode en static.

Reply

Marsh Posté le 30-07-2002 à 18:20:11    

bobuse a écrit a écrit :

Pour le dernier tu peux mettre ta méthode en static.  




 
nan il dit qu'elle s'applique a une instance

Reply

Marsh Posté le 30-07-2002 à 18:20:46    

Autre question : l'équivalent de  

Code :
  1. methode(const int i)

c'est quoi ?
C'est une question que ça fait longtemps que je me la pose ...

Reply

Marsh Posté le 30-07-2002 à 18:20:46   

Reply

Marsh Posté le 30-07-2002 à 18:21:26    

HappyHarry a écrit a écrit :

 
 
nan il dit qu'elle s'applique a une instance




Et ben tu passes l'instance en paramètre  :D  
 
de toute manière, c'est crade !

Reply

Marsh Posté le 30-07-2002 à 18:21:29    

Bah....En fait, il y a aussi le static qui est vachement important en Java...
Si tu veux tripatouiller une valeur, sans toucher à la valeur de l'attribut d'une instance, il faut déclarer une méthode statique  
 

Code :
  1. static int  maMethode () {
  2. }


 
ce genre de méthode te permet de travailler sur les champs STATIQUES d'une classe (ie, les attributs de classe)  
Les constantes Java sont généralement définies comme static final : ce qui garantit que la valeur sera la même pour toutes les instances de la classe, et qu'elle ne pourra pas être modifiée.
 
Ouala...

Reply

Marsh Posté le 30-07-2002 à 18:22:36    

bobuse a écrit a écrit :

Autre question : l'équivalent de  

Code :
  1. methode(const int i)

c'est quoi ?
C'est une question que ça fait longtemps que je me la pose ...
 




 

Code :
  1. methode(final int i)


 
mais sur un int en Java ca n'a aucun intéret


Message édité par HappyHarry le 30-07-2002 à 18:23:31
Reply

Marsh Posté le 30-07-2002 à 18:24:03    

HappyHarry a écrit a écrit :

 
 

Code :
  1. methode(final int i)


 
mais sur un int en Java ca n'a aucun intéret



ha bon, on peut déclarer un parametre de methode "final"? euh ça à quel interet?  

Reply

Marsh Posté le 30-07-2002 à 18:24:45    

gfive a écrit a écrit :

Bah....En fait, il y a aussi le static qui est vachement important en Java...
Si tu veux tripatouiller une valeur, sans toucher à la valeur de l'attribut d'une instance, il faut déclarer une méthode statique  
 

Code :
  1. static int  maMethode () {
  2. }


 
ce genre de méthode te permet de travailler sur les champs STATIQUES d'une classe (ie, les attributs de classe)  
Les constantes Java sont généralement définies comme static final : ce qui garantit que la valeur sera la même pour toutes les instances de la classe, et qu'elle ne pourra pas être modifiée.
 
Ouala...  




 
oui mais la on en arrive a la notion de méthode de classe, qui est différente de celle dont il parle, il me semble que son truc, c une methode d'instance, mais qui garantit que l'on ne modifie pas la valeur de l'instance
 
bobuse -> des fois y a pas le choix  :D

Reply

Marsh Posté le 30-07-2002 à 18:25:41    

HappyHarry a écrit a écrit :

 
 

Code :
  1. methode(final int i)


 
mais sur un int en Java ca n'a aucun intéret




Ouah c'est vrai on peut faire ça !!
Depuis le temps, j'y avait déjà vagement pensé, mais jamais osé essayer ...  :D  
 
Et ben il est jamais trop tard !

Reply

Marsh Posté le 30-07-2002 à 18:25:59    

--greg-- a écrit a écrit :

ha bon, on peut déclarer un parametre de methode "final"? euh ça à quel interet?  
 




 
edit : betise  :D


Message édité par HappyHarry le 30-07-2002 à 18:57:48
Reply

Marsh Posté le 30-07-2002 à 18:26:27    

Ouais, mais en Java, tu peux très bien appeller une méthode de classe sur une insatnce, et alors, ça revient à peut près au même....Parce que manipuler un attribut d'instance, en garantissant qu'on va pas le modifier....je vois pas l'intérêt...il suffit d'avoir un accesseur, et de l'utiliser là où on en a besoin pour récupérer la valeur, non?

Reply

Marsh Posté le 30-07-2002 à 18:27:17    

HappyHarry a écrit a écrit :

 
 
pour les classes locales principalement



= inner classes ?

Reply

Marsh Posté le 30-07-2002 à 18:28:02    

--greg-- a écrit a écrit :

ha bon, on peut déclarer un parametre de methode "final"? euh ça à quel interet?  
 




 
Ca te garantit que tu ne modifiera pas la valeur, c'est très utile par exemple, quand tu veux une méthode qui utilise des propriétés/méthodes d'un objets, mais que tu ne veux pas du tout le modifier.

Reply

Marsh Posté le 30-07-2002 à 18:29:57    

bobuse a écrit a écrit :

 
 
Ca te garantit que tu ne modifiera pas la valeur, c'est très utile par exemple, quand tu veux une méthode qui utilise des propriétés/méthodes d'un objets, mais que tu ne veux pas du tout le modifier.



est-ce que ça sous entend que ça passe un clone de l'objet à ta methode ou quoi? y'a un truc qui m'échape là...

Reply

Marsh Posté le 30-07-2002 à 18:31:08    

non justement tout l'intérêt est là, c'est que tu ne crée pas de copie, mais ça produit le même effet : t'es sûr d'avoir le même truc avant et après ton appel de méthode

Reply

Marsh Posté le 30-07-2002 à 18:31:37    

--greg-- a écrit a écrit :

est-ce que ça sous entend que ça passe un clone de l'objet à ta methode ou quoi? y'a un truc qui m'échape là...
 




 
ca sous entend que si tu le declares final et que tu essayes de le modifier, ca te pete a la gueule

Reply

Marsh Posté le 30-07-2002 à 18:34:10    

par contre g toujours pas compris l'intéret de préciser que l'on renvoit une constante ...

Reply

Marsh Posté le 30-07-2002 à 18:35:10    

HappyHarry a écrit a écrit :

par contre g toujours pas compris l'intéret de préciser que l'on renvoit une constante ...




Ouais moi non plus ...  :??:

Reply

Marsh Posté le 30-07-2002 à 18:35:48    

D'ailleurs il est passé où el_gringo ? :hello:

Reply

Marsh Posté le 30-07-2002 à 18:35:55    

bobuse a écrit a écrit :

 
Ouais moi non plus ...  :??:  




 
j'mate dans mon bouquin de C++ que je n'ai jamais ouvert, 5 minutes  :D
 
edit : et ben g po trouvé ...


Message édité par HappyHarry le 30-07-2002 à 18:39:20
Reply

Marsh Posté le 30-07-2002 à 18:40:27    

bobuse a écrit a écrit :

non justement tout l'intérêt est là, c'est que tu ne crée pas de copie, mais ça produit le même effet : t'es sûr d'avoir le même truc avant et après ton appel de méthode



ouaip
ok
(merci happyharry pour le coté plus parlant ;))

Reply

Marsh Posté le 30-07-2002 à 18:41:01    

--greg-- a écrit a écrit :

ouaip
ok
(merci happyharry pour le coté plus parlant ;))
 




 
de rien  ;)  
moi aussi j'prefere quand on me parle comme ca, j'saisis plus vite lol

Reply

Marsh Posté le 30-07-2002 à 18:41:42    

http://ltiwww.epfl.ch/Cxx/c2_8.html :
" const int & m (  [...]
 il indique que la référence retournée ne peut pas être modifiée. Cet usage de const n'est valable qu'avec le &. Il n'a pas d'effet si l'on retourne un pointeur (* au lieu de &)."
 
un bout d'explication, mais ça ne me convient pas trop. Je vois toujours pas la réelle utilité !


Message édité par bobuse le 30-07-2002 à 18:43:46
Reply

Marsh Posté le 30-07-2002 à 18:45:01    

bobuse a écrit a écrit :

http://ltiwww.epfl.ch/Cxx/c2_8.html :
" const int & m (  [...]
 il indique que la référence retournée ne peut pas être modifiée. Cet usage de const n'est valable qu'avec le &. Il n'a pas d'effet si l'on retourne un pointeur (* au lieu de &)."
 
un bout d'explication, mais ça ne me convient pas trop. Je vois toujours pas la réelle utilité !




 
c'est ca l'utilité  :)


---------------
TIME TO KICK SOME ASS !!!
Reply

Marsh Posté le 30-07-2002 à 18:46:05    

ben pkoi pas faire :
 

Code :
  1. final Object result=methodeBidule(...

en java
 
 
et

Code :
  1. const int & result=methodeBidule(...

en C++


Message édité par bobuse le 30-07-2002 à 18:50:38
Reply

Marsh Posté le 30-07-2002 à 18:50:00    

bobuse a écrit a écrit :

ben pkoi pas faire :
 

Code :
  1. final Object result=methodeBidule(...






 
parcque qu'on peut qd mm modifier directement la ref retournée sans passer par une variable et ca c'est pas cool si le programmeur veut l'interdir


---------------
TIME TO KICK SOME ASS !!!
Reply

Marsh Posté le 30-07-2002 à 18:53:15    

zobkiller666 a écrit a écrit :

 
 
parcque qu'on peut qd mm modifier directement la ref retournée sans passer par une variable et ca c'est pas cool si le programmeur veut l'interdir




 
ok ok ! d'accord ! Mais quel avantage de vouloir interdire qu'on modifie la vriable de retour. Car de toutes façons tu ne t'en resers pas après dans ta méthode  (puisque c'est à cet endroit que ça t'interesse de contrôler tes variables).
 
Heu je sens que je uis plus très clair là  :heink: A demain  :hello:


Message édité par bobuse le 30-07-2002 à 18:54:35
Reply

Marsh Posté le 30-07-2002 à 18:57:14    

bobuse a écrit a écrit :

 
 
ok ok ! d'accord ! Mais quel avantage de vouloir interdire qu'on modifie la vriable de retour. Car de toutes façons tu ne t'en resers pas après dans ta méthode  (puisque c'est à cet endroit que ça t'interesse de contrôler tes variables).
 
Heu je sens que je uis plus très clair là  :heink: A demain  :hello:  




 
ben en fait ds les langages objets on joue bcp sur la securité !
 
on se met pas que du point de vue du gars qui connait a fond son prog mais aussi du mec qui va le retoucher.
 :hello:  
 
C'est juste pr etre sur qu'il fasse pas de connerie.


---------------
TIME TO KICK SOME ASS !!!
Reply

Marsh Posté le 30-07-2002 à 21:26:19    

--greg-- a écrit a écrit :

ha bon, on peut déclarer un parametre de methode "final"? euh ça à quel interet?  
 




 
ahah vachement subtil ca :)

Reply

Marsh Posté le 30-07-2002 à 21:27:48    

bobuse a écrit a écrit :

DarkLording in progress ...  ;)  




 
nope j'ai mal au cheveu today. J'ai quitté le boulot un peu plus tot puis recherche d'appart donc :)

Reply

Marsh Posté le 30-07-2002 à 23:27:55    

el_gringo a écrit a écrit :

 
qqn peut me donner l'équivalent de ces 2 trucs en Java ? (s'ils existent bien sur !)




ils n'existent pas, à ma connaissance ...

Reply

Marsh Posté le 30-07-2002 à 23:28:58    

bobuse a écrit a écrit :

 
Non il doit encore avoir de la vaisselle  :D  




ben non, je bossais cet aprem ...
 
mai bon, j'ai le tas de vaisselle qui est revenu à son état d'y a deux jours :cry:
 
pas le courage  ce soir ! :sweat:

Reply

Marsh Posté le 30-07-2002 à 23:29:40    

DarkLord a écrit a écrit :

 
 
nope j'ai mal au cheveu today. J'ai quitté le boulot un peu plus tot puis recherche d'appart donc :)




bon courage, j'ai connu ca y a pas longtemps !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed