Appel en JAVA

Résolu/Fermé
yosri.tunisia Messages postés 3 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 30 septembre 2008 - 29 août 2008 à 16:45
hafidodido Messages postés 40 Date d'inscription vendredi 15 août 2008 Statut Membre Dernière intervention 11 octobre 2008 - 3 sept. 2008 à 17:36
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 samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
29 août 2008 à 17:16
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 vendredi 15 août 2008 Statut Membre Dernière intervention 11 octobre 2008 10
Modifié par 00lina00 le 24/07/2010 à 00:21
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
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 mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
30 août 2008 à 10:26
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
30 août 2008 à 13:58
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 samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225 > yosri.tunisia
31 août 2008 à 00:21
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 mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291 > Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011
31 août 2008 à 17:38
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 samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225 > arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016
1 sept. 2008 à 01:38
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 vendredi 15 août 2008 Statut Membre Dernière intervention 11 octobre 2008 10
Modifié par 00lina00 le 24/07/2010 à 00:22
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 vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
30 août 2008 à 23:12
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 dimanche 7 octobre 2007 Statut Membre Dernière intervention 30 septembre 2008
3 sept. 2008 à 11:58
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 vendredi 15 août 2008 Statut Membre Dernière intervention 11 octobre 2008 10
3 sept. 2008 à 17:33
slt,
vous pouvez generer un jar(executable par la machine vertuelle) par la commande jar :
0
hafidodido Messages postés 40 Date d'inscription vendredi 15 août 2008 Statut Membre Dernière intervention 11 octobre 2008 10
3 sept. 2008 à 17:35
jar cvf nomfichier.jar dossier de vos fichiers\*
0
hafidodido Messages postés 40 Date d'inscription vendredi 15 août 2008 Statut Membre Dernière intervention 11 octobre 2008 10
3 sept. 2008 à 17:36
"*:désigne les fichiers classe"
bon courage.
0