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

 


Dernière réponse
Sujet : [java] aidez moi a repondre a ces questions (tres rapide)
Krueger

Drakkeng a écrit a écrit :

 
 
en java non plus ça compile pas ce dont tu parles .
 
pour l'histoires des opérateurs qui renvoies quelque chose ,j'ai jamais vu ça ,en java c'est des affectations,par contre ce qui marche c'est des choses dans ce genre :
 
return a<=b;
 
 
sinon pour en revenir a ma question j'ai juste pour la question 2 ?
 
merci :jap:  




 
Oui c'est bon. :jap:


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Krueger

Drakkeng a écrit a écrit :

 
 
en java non plus ça compile pas ce dont tu parles .
 
pour l'histoires des opérateurs qui renvoies quelque chose ,j'ai jamais vu ça ,en java c'est des affectations,par contre ce qui marche c'est des choses dans ce genre :
 
return a<=b;
 
 
sinon pour en revenir a ma question j'ai juste pour la question 2 ?
 
merci :jap:  




 
Oui c'est bon. :jap:

drakkeng

El_Gringo a écrit a écrit :

 
 
ha, ms j'viens de comprendre ce que tu veux dire. Qd tu dis 2 opérateur, tu veux dire, pour ==, parce qu'on a 2 fois = !?
Mais non, ça on s'en tape, c juste une écriture ça, t'as même, des opérateur y a des bien plus grands. Les trucs de transcriptage par exemple, c des opérateurs aussi, genre, dans
Truc c3 = (Truc)c1;  
(Truc), c un opérateur aussi.  




 
oui c'est bien je que je voulais dire :crazy:

El_gringo

Drakkeng a écrit a écrit :

 
 
effectivement on peut pas faire ça en java .
 
pour la démonstration c'est la meme chose que ce que je dit dans mon exemple ,mais il faut deux opérateurs pour renvoyer quelque choses :D  
 
 




 
ha, ms j'viens de comprendre ce que tu veux dire. Qd tu dis 2 opérateur, tu veux dire, pour ==, parce qu'on a 2 fois = !?
Mais non, ça on s'en tape, c juste une écriture ça, t'as même, des opérateur y a des bien plus grands. Les trucs de transcriptage par exemple, c des opérateurs aussi, genre, dans
Truc c3 = (Truc)c1;  
(Truc), c un opérateur aussi.

benou autre exemple : tu peux faire ca :  
int i, j, k, l;
i = j = k = l = 666;
 
l'affectation renvoie la valeur affectée (comme en C)
drakkeng

El_Gringo a écrit a écrit :

 
 
Bah non... pour ==, dans ce cas, ouais, mais regrade += :
tu peut faire
int iMonEntier += iExEntier;
où iMonEntier reçoit la valeur de retour de += iMonEntier
 
Un opérateur peut donc aussi retourner une valeur tt seul, ça à un nom ts ça, les opérateur qui nécessitent 1 élément (comme +=), 2 (comme +), ou même 3 (g pas d'exemple là, ms y en a :D)...  
 
 




 
oui on parle de la meme chose en fait ,je parlais pas forcément de deux opérateurs les memes.
 
va falloir que je révise la theorie ,plutot que la pratique ,j'arrive sans trop de probléme a programmer des choses complexe en java mais avec des petites question vicieuse je suis vite bloqué ...

 

[edtdd]--Message édité par Drakkeng--[/edtdd]

El_gringo

Drakkeng a écrit a écrit :

 
 
effectivement on peut pas faire ça en java .
 
pour la démonstration c'est la meme chose que ce que je dit dans mon exemple ,mais il faut deux opérateurs pour renvoyer quelque choses :D  
 
 




 
Bah non... pour ==, dans ce cas, ouais, mais regrade += :
tu peut faire
int iMonEntier += iExEntier;
où iMonEntier reçoit la valeur de retour de += iMonEntier
 
Un opérateur peut donc aussi retourner une valeur tt seul, ça à un nom ts ça, les opérateur qui nécessitent 1 élément (comme +=), 2 (comme +), ou même 3 (g pas d'exemple là, ms y en a :D)...

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

jupiler new Bidule(15) -> référence sur objet bidule dont le membre 'a' est initialisé à 15
new Bidule[15] -> référence sur un tableau de 15 Bidules, les différents Bidules n'étant pas initialisés (donc Bidule[0] vaudra null par exemple)

 

[edtdd]--Message édité par jupiler--[/edtdd]

drakkeng

El_Gringo a écrit a écrit :

non, ms tu comprend pas ce que je veux dire: quand tu fais une affectation, la référence vient bien de qqs part. c qu'elle est retournée par l'opérateur, forcément ! par contre, en Java, en fait, je pense que c pas accessible. J'pense qu'on peut pas définir d'opérateur en Java (je suis pas sur, je connais pas bien le Java... d'ailleur, ça m'interresserai de savoir)
mais en C++, on peut redéfinr, dans ses propres objets, des opérateurs, tout comme on surcharge des fonctions.
En fait, là, je suis en train de penser, c évidement que les opérateurs peuvent aussi renvoyer un valeur, g une preuve:
 l'opérateur == rend un bool par exemple. c forcé, puisque on peut faire des if (MonObj == SonObj)
et un if, ça se fait que sur des bool, et toc ! :D
et donc, je disais, en C++, on peut faire des trucs du style:
bool MonObj:operator==(const MonObj& _Obj)
c une fonction qui rend un BOOL et qui redéfini l'opérateur ==
Mais en Java, je l'répète, je crois pas qu'on puisse faire ça !  




 
effectivement on peut pas faire ça en java .
 
pour la démonstration c'est la meme chose que ce que je dit dans mon exemple ,mais il faut deux opérateurs pour renvoyer quelque choses :D

 

[edtdd]--Message édité par Drakkeng--[/edtdd]

El_gringo non, ms tu comprend pas ce que je veux dire: quand tu fais une affectation, la référence vient bien de qqs part. c qu'elle est retournée par l'opérateur, forcément ! par contre, en Java, en fait, je pense que c pas accessible. J'pense qu'on peut pas définir d'opérateur en Java (je suis pas sur, je connais pas bien le Java... d'ailleur, ça m'interresserai de savoir)
mais en C++, on peut redéfinr, dans ses propres objets, des opérateurs, tout comme on surcharge des fonctions.
En fait, là, je suis en train de penser, c évidement que les opérateurs peuvent aussi renvoyer un valeur, g une preuve:
 l'opérateur == rend un bool par exemple. c forcé, puisque on peut faire des if (MonObj == SonObj)
et un if, ça se fait que sur des bool, et toc ! :D
et donc, je disais, en C++, on peut faire des trucs du style:
bool MonObj:operator==(const MonObj& _Obj)
c une fonction qui rend un BOOL et qui redéfini l'opérateur ==
Mais en Java, je l'répète, je crois pas qu'on puisse faire ça !
drakkeng

El_Gringo a écrit a écrit :

 
 
En fait mon truc à moi, c le C++ (malgré moi, parce que le Java, j'trouve ça sympa, même si c moins performant, c plus agréable à programmer).
En C++, quand tu définit un opérateur, tu fais effectivement un Return dans la fonction...
Faire un return dans un constructeur... j'dirait que ça compile même pas !
par contre, ouais, tu peux sans pb, dans un objet MonObjet, faire:
 
MonObjet DonneLeMoi()
{
 
   return this;
}  




 
en java non plus ça compile pas ce dont tu parles .
 
pour l'histoires des opérateurs qui renvoies quelque chose ,j'ai jamais vu ça ,en java c'est des affectations,par contre ce qui marche c'est des choses dans ce genre :
 
return a<=b;
 
 
sinon pour en revenir a ma question j'ai juste pour la question 2 ?
 
merci :jap:

ethernal thx  :jap:
El_gringo

ethernal a écrit a écrit :

oui je suis d'accord, mais le terme est assez mal choisi ;)
on s'attend à un "return" dans la fonction lorsque l'on parle de "retourne qqch". c purement linguistique.
 
une petit question stupide (que j'ai jamais testée, j'ai très très peu pratiqué je java), si on fait un  
- return x dans le constructeur d'une classe, ça crash ou tu obitiens la valeur retournée ?
- return this, c'est autorisé ? ça fct ? ça renvoie la référence à l'objet ?  




 
En fait mon truc à moi, c le C++ (malgré moi, parce que le Java, j'trouve ça sympa, même si c moins performant, c plus agréable à programmer).
En C++, quand tu définit un opérateur, tu fais effectivement un Return dans la fonction...
Faire un return dans un constructeur... j'dirait que ça compile même pas !
par contre, ouais, tu peux sans pb, dans un objet MonObjet, faire:
 
MonObjet DonneLeMoi()
{
 
   return this;
}

ethernal oui je suis d'accord, mais le terme est assez mal choisi ;)
on s'attend à un "return" dans la fonction lorsque l'on parle de "retourne qqch". c purement linguistique.
 
une petit question stupide (que j'ai jamais testée, j'ai très très peu pratiqué je java), si on fait un  
- return x dans le constructeur d'une classe, ça crash ou tu obitiens la valeur retournée ?
- return this, c'est autorisé ? ça fct ? ça renvoie la référence à l'objet ?
El_gringo

ethernal a écrit a écrit :

ça "retourne" pas vraiment... ça initialise ta variable à une référence vers ton objet.  




 
En Java, peut être... en C++, ça RETOURNE qqch (qui peut être éventuellement un référence).

ethernal ça "retourne" pas vraiment... ça initialise ta variable à une référence vers ton objet.
El_gringo

Drakkeng a écrit a écrit :

 
 
oui dans ton exemple ça me parait évident ,mais dans la creation d'un objet non.  




 
et pourtant, ça l'est tout autant...
le new, c ce qu'on appel un opérateur (comme le =, le +=, ...).
c très proche d'une méthode normale, si ce n'est qu'on met pas de parenthèses autour des arguments. Enfin, ce qu'est réellement la différence entre un opérateur et une méthode, je sais pas, ms je sais que c très proche ! Du moins, en C++ c comme ça. J'imagine que c pareil en Java...
de même, un = ou un +, ça renvoit qqch, forcément. ça peut être un objet, un entier, un flottant, ...

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

drakkeng

El_Gringo a écrit a écrit :

 
 
Bah oui, mais là, t de "l'autre coté du return"... le return il est dans la définition de l'opératuer new si tu veux !
comme quand t'utilises une méthode, style
int i = MonObjet.GetEntier(2);
GetEntier peut retourner un entier. on voit pas de return ici, normal, il est dans get entier...  




 
oui dans ton exemple ça me parait évident ,mais dans la creation d'un objet non.

El_gringo

Drakkeng a écrit a écrit :

 
 
ok,je croyais qu'il fallais un "return" pour retourner quelque chose.  




 
Bah oui, mais là, t de "l'autre coté du return"... le return il est dans la définition de l'opératuer new si tu veux !
comme quand t'utilises une méthode, style
int i = MonObjet.GetEntier(2);
GetEntier peut retourner un entier. on voit pas de return ici, normal, il est dans get entier...

drakkeng donc si je resume pour la deuxiéme il faut faire :
 
Chose c1 = new Truc(10);
Bidule c2 = c1;
Truc c3 = (Truc)c1;
 
et ainsi c1 ,c2 et c3 sont de type Truc ?
 
j'ai bon ?
drakkeng

shinji a écrit a écrit :

La creation d'un objet, ça retourne l'objet créé en question.  




 
ok,je croyais qu'il fallais un "return" pour retourner quelque chose.

shinji La creation d'un objet, ça retourne l'objet créé en question.
drakkeng

Krueger a écrit a écrit :

a) Une question plus générale peut être: Quel est le type de ces expressions?"
Par exemple "new String()" est de type String. "1 + 1" et "10" sont de type int.
Pour la question de l'énoncé le premier serait une chaîne de charactères (String) vide, le deuxième 2 et le troisième 10.
 
b) A la compilation tu ne peux pas "affecter" (ou considérer, si tu vois ce que je veux dire) un objet d'une certaine classe A vers un autre de type B si A n'est pas une classe descendante de B (ou un sous-type de B si tu préfères). Tu peux contourner ça en castant explicitement ta classe, mais si A n'est pas sous-type de B une exception ClassCastException sera levée lors de l'exécution.
 
 
 
Voilà, en espérant t'avoir suffisamment aidé sans te faire les questions. ;)  




 
ok merci ,j'ai bien compris pour la deuxiéme question :jap:
 
par contre pour la premiére je comprends pas du tout :??:
je voyais pas la question dans ce sens la ,d'ailleurs c'est tres  
mal posé car je vois pas ce que retourne la creation d'un objet!!

Krueger a) Une question plus générale peut être: Quel est le type de ces expressions?"
Par exemple "new String()" est de type String. "1 + 1" et "10" sont de type int.
Pour la question de l'énoncé le premier serait une chaîne de charactères (String) vide, le deuxième 2 et le troisième 10.
 
b) A la compilation tu ne peux pas "affecter" (ou considérer, si tu vois ce que je veux dire) un objet d'une certaine classe A vers un autre de type B si A n'est pas une classe descendante de B (ou un sous-type de B si tu préfères). Tu peux contourner ça en castant explicitement ta classe, mais si A n'est pas sous-type de B une exception ClassCastException sera levée lors de l'exécution.
 
 
 
Voilà, en espérant t'avoir suffisamment aidé sans te faire les questions. ;)
drakkeng Salut ,je revise un partiels et y a des questions que je capte pas :
 
Etant donné le programme suivant:
class Bidule {
int a=0;
Bidule(int x){
a = x;
}
}
a) Indiquez ce que retournent les deux expressions suivantes (en d'autres termes,
quelle est la "valeur" de ces expressions)?
new Bidule(15)
new Bidule[15]
b) Soient les classes suivantes:
class Chose extends Bidule {
Chose(int x){ super(x);}
}
class Truc extends Chose {
Truc(int x){ super(x);}
}
Indiquez, pour chacune des expressions suivantes, si elles sont correctes ou non, et
dans ce cas, quel type d'erreur produisent-elles (et est ce une erreur de compilation,
ou d'exécution) et comment peut on faire pour qu'elles ne produisent plus d'erreur?
Chose c1 = new Truc(10);
Bidule c2 = c1;
Truc c3 = c1;
 
 
 
merci

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