Appel en JAVA

Résolu/Fermé
yosri.tunisia Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
hafidodido Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Pourriez vous m'aider a règler le problème de ce programme :


public class article {
protected int code;
protected String marque;
protected double prix_unitaire;

public article(int c, double p){
code=c;
prix_unitaire=p;
}

public article(int c, double p, String m){
article(c,p);
marque=m;
}


Je trouve une erreur comme suit:

JAVA\article.java:13: cannot find symbol
symbol : method article(int,double)
location: class papeterie.article
article(c,p);
A voir également:

10 réponses

Mimiste Messages postés 1149 Date d'inscription   Statut Membre Dernière intervention   206
 
Salut

Cette fonction article est le constructeur de ta classe, tu l'appelle de quelle manière ?
0
hafidodido Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   10
 
Slt
voila la correction

public class article {
protected int code;
protected String marque;
protected double prix_unitaire;

public article(int c, double p){
code=c;
prix_unitaire=p;
}

public article(int c, double p, String m){
this(c,p);
marque=m;
}
}

parce que vous appelez le constructeur de la classe
0
tsou
 
si tu veux etre plus simple :


public class article {
protected int code;
protected String marque;
protected double prix_unitaire;

public article(int c, double p){
this.code=c;
this.prix_unitaire=p;
}

public article(int c, double p, String m){
this.code=c;
this.prix_unitaire=p;
this.marque=m;
}
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Normale que ça ne marche pas et en plus le code est lourd car tu mets deux constructeurs alors qu'un seul aurait suffit.

En effet tu mets directement article(c,p); or article n'est pas une fonction mais le constructeur de ta classe article et ne peut être utilisé que pour créer un nouvel objet "article" via le code "new article(val1,val2);"

0
yosri.tunisia
 
Oui c vrai il se peut que le 2eme est non nècessaire mais le code est plus compliqué et il se peut que j'aurai besoin de votre aide.
0
Posotaz Messages postés 489 Date d'inscription   Statut Membre Dernière intervention   225 > yosri.tunisia
 
Pour appuyer la remarque de "Marco La Baraque", j'irai plus loin en disant au contraire qu'on sait très bien ce que tu as voulu faire ; les noms des propriétés sont suffisamment explicites pour savoir qu'il s'agit d'articles caractérisés par un code, un prix unitaire, et optionellement une marque (certains articles n'ont pas de marque). Tu ne peux pas dire qu'il n'est pas nécessaire juste comme ça... il est évident que seule une analyse du problème peut t'aider à savoir si oui ou non tu as besoin du constructeur sans la "marque"... même si utiliser "null" lors de l'appel du constructeur complet peut faire l'affaire.
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293 > Posotaz Messages postés 489 Date d'inscription   Statut Membre Dernière intervention  
 
Oui m'enfin considère un affichage de null je pense que ça va pas le faire derrière. Mettre "" me semble plus judicieux que même.
0
Posotaz Messages postés 489 Date d'inscription   Statut Membre Dernière intervention   225 > arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention  
 
Salut, on ne parle pas d'affichage mais de l'état d'un objet à un moment donné. Il est évident que lors de l'affichage, on testera si la valeur de la propriété est nulle pour ne pas afficher "null". Ce que je voulais signifier est l'appel du constructeur complet à la place du constructeur à deux arguments (sans la marque) => utiliser le constructeur complet en passant "null" pour la marque revient à l'identique que d'appeler le constructeur sans la marque puisque la propriété "marque" n'est jamais initialisée autrement.

Ensuite je ne suis pas d'accord avec ta remarque : Null signifie "non défini" tandis qu'une chaîne vide signifie une chaine vide. Si tu as des notions en bases de données tu verras que la distinction est très importante, d'ailleurs c'est lors de la définition d'un champ qu'on doit décider si ce champ doit obligatoirement accepter une valeur ou pas forcément. Une chaîne vide est une valeur et il est inutile de dépenser la création qu'un objet String plutôt que de laisser une variable sans valeur (pas d'objet, donc pas d'emplacement mémoire).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hafidodido Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   10
 
slt,
Si vous avez lit bien les réponses, je pense que la mienne est la réponse que vous avez besoin d'après l'enoncé.
et je l'ai compilé avec aucun erreur.
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
Bonsoir Hafidodido,
Je suis d'accord, ton code est la réponse à la question.
@Tsou : Ton code est peut-être "plus simple", mais il est moins bien que celui de Hafidodido car tu n'a pas de factorisation de code.
@Arth : Désolé, mais cette fois je ne suis pas tout à fait d'accord avec toi :). Je ne comprends pas pourquoi tu dis que le code est plus lourd parce qu'il y a deux constructeurs. Dans son exemple il ne montre l'utilisation que d'un seul, mais peut-être a-t-il besoin du second dans des autres classes. On ne peut donc pas juger de ce critère à cause du peu de visibilité qu'on a.
@yosri.tunisia : Pas de souci si tu as besoin d'aide, je pense qu'il y a quelques gens qui sont assez compétents pour pouvoir t'aider. N'hésite pas à poster si tu es bloqué.

Cordialement,
0
yosri.tunisia Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour Mimiste, Arth, Tsou, Hafidodido, Marco la baraque (pour bien en resume car vraiment j' avais besoin pour bien m'eclairer les # suggestions) .

Mnt que le code est correcte g besoin de m'expliquer comment pourrais-je faire son executable (sans acceder au code du programme a chaque fois et executer).

Merci d'avance amis.
0
hafidodido Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   10
 
slt,
vous pouvez generer un jar(executable par la machine vertuelle) par la commande jar :
0
hafidodido Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   10
 
jar cvf nomfichier.jar dossier de vos fichiers\*
0
hafidodido Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   10
 
"*:désigne les fichiers classe"
bon courage.
0