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

  FORUM HardWare.fr
  Programmation

  [java] aidez moi a repondre a ces questions (tres rapide)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] aidez moi a repondre a ces questions (tres rapide)

n°88286
drakkeng
Posté le 11-01-2002 à 10:43:18  profilanswer
 

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

mood
Publicité
Posté le 11-01-2002 à 10:43:18  profilanswer
 

n°88296
Krueger
tout salaire demande dutravail
Posté le 11-01-2002 à 11:00:17  profilanswer
 

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. ;)


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°88300
drakkeng
Posté le 11-01-2002 à 11:14:13  profilanswer
 

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!!

n°88308
shinji
Posté le 11-01-2002 à 11:33:52  profilanswer
 

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

n°88313
drakkeng
Posté le 11-01-2002 à 11:42:35  profilanswer
 

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.

n°88314
drakkeng
Posté le 11-01-2002 à 11:43:54  profilanswer
 

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 ?

n°88316
El_gringo
Posté le 11-01-2002 à 11:48:08  profilanswer
 

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...

n°88317
drakkeng
Posté le 11-01-2002 à 11:55:28  profilanswer
 

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.

n°88320
El_gringo
Posté le 11-01-2002 à 12:07:00  profilanswer
 

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]

n°88321
ethernal
Chercheur de vérité...
Posté le 11-01-2002 à 12:10:36  profilanswer
 

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

mood
Publicité
Posté le 11-01-2002 à 12:10:36  profilanswer
 

n°88322
El_gringo
Posté le 11-01-2002 à 12:13:52  profilanswer
 

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).

n°88324
ethernal
Chercheur de vérité...
Posté le 11-01-2002 à 12:20:48  profilanswer
 

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 ?

n°88325
El_gringo
Posté le 11-01-2002 à 12:26:54  profilanswer
 

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;
}

n°88333
ethernal
Chercheur de vérité...
Posté le 11-01-2002 à 13:00:08  profilanswer
 

thx  :jap:

n°88381
drakkeng
Posté le 11-01-2002 à 15:17:54  profilanswer
 

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:

n°88387
El_gringo
Posté le 11-01-2002 à 15:30:48  profilanswer
 

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 !

n°88390
drakkeng
Posté le 11-01-2002 à 15:36:43  profilanswer
 

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]

n°88393
jupiler
Un cousin...
Posté le 11-01-2002 à 15:45:23  profilanswer
 

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]


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°88394
El_gringo
Posté le 11-01-2002 à 15:48:18  profilanswer
 

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]

n°88397
drakkeng
Posté le 11-01-2002 à 15:52:47  profilanswer
 

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]

n°88399
benou
Posté le 11-01-2002 à 15:54:57  profilanswer
 

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)

n°88400
El_gringo
Posté le 11-01-2002 à 15:57:24  profilanswer
 

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.

n°88410
drakkeng
Posté le 11-01-2002 à 16:20:06  profilanswer
 

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:

n°88496
Krueger
tout salaire demande dutravail
Posté le 11-01-2002 à 20:49:53  profilanswer
 

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:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
mood
Publicité
Posté le   profilanswer
 


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

  [java] aidez moi a repondre a ces questions (tres rapide)

 

Sujets relatifs
[JAVA] méthode pour afficher une JLIST au dessus du PanelAIDEZ MOI SVP
[JAVA] Question de débutant : notion de "static"[Java] Comment déplacer automatiquement le curseur ?
[JAVA] Castorreponse pour les APPLET JAVA !!!!
apprentissage java[JAVA] et pool de connexion.
Question TRES SIMPLE ![JAVA] Probleme à la compilation ...
Plus de sujets relatifs à : [java] aidez moi a repondre a ces questions (tres rapide)


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