Au secours

sabola Messages postés 10 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 26 décembre 2010 - 12 oct. 2010 à 09:46
sabola Messages postés 10 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 26 décembre 2010 - 14 oct. 2010 à 12:45
Bonjour,


je suis débutant en JAVA POO et on me demande d'écrire une Class Livre avec les attributs suivants:

- titre : Le titre du livre,
- auteur : L'auteur du livre,
- prix : le prix du livre,
- annee : L'année du livre.

Cette Class Livre doit disposer des constructeurs suivants:

- Livre (),
- Lvre (titre),
- Livre (titre,auteur),
- Livre (titre,auteur,prix)


Voici mon code :




Public Class Livre {


String titre;
String auteur;
float prix;
int annee;

//Construcuteurs

Public Livre {

System.out.println("Création d'un livre");
}

Public Livre ( String titre) {

titre = " La terre ";
}


Public Livre (String titre,String auteur) {

titre = " La terre ";
auteur = " Paul";

}


Public Livre (String titre,String auteur,int prix) {

titre = " La terre ";
auteur = " Paul";
prix = 10;
}


}




J'ai essayez de l'executer ca me donne des erreurs.Je ne sais pas si le programme est correct et Je ne comprends pas bien comment l'utiliser dans le main().Aidez-moi s'il vous plaît.
Merci!

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 oct. 2010 à 11:22
Salut,

Essaye de mettre un titre plus explicite la prochaine fois : comment veux-tu retrouver un sujet en particulier avec un tel titre ?

Sinon, concernant ton problème, plusieurs problèmes et quelques remarques :
Tout d'abord, n'oublie pas de spécifier la portée de tes variables, c'est plus clair :
protected String titre;
protected String auteur;
protected float prix;
protected int annee;

Ensuite, tu as oublié les parenthèses pour ton constructeur par défaut :
Public Livre() {
System.out.println("Création d'un livre");
}

A quoi ca sert de passer des paramètres à tes constructeurs si tu t'en sert pas ?
Public Livre (String titre,String auteur,int prix) {
this.titre = titre;
this.auteur = auteur;
this.prix = prix;
}

Evite de dupliquer le code : réutilise tes constructeurs :
Public Livre() {
System.out.println("Création d'un livre");
}

Public Livre ( String titre) {
this();
this.titre = titre;
}


Public Livre (String titre,String auteur) {
this(titre);
this.auteur = auteur;
}

Public Livre (String titre,String auteur,int prix) {
this(titre, auteur);
this.prix = prix;
}

Si tu veux utiliser des valeurs par défaut pour tes champs, utilise des constantes :
protected static final String TERRE_DEFAUT = " La terre ";
protected static final String AUTEUR_DEFAUT = " Paul ";
protected static final Integer PRIX_DEFAUT = 10;

Quand on parle d'attribut de classe, on veut très certainement y accéder depuis l'extérieur : il te faut donc utiliser des getters/setters :
public String getTitre() {
return titre;
}

public void setTitre(String titre) {
this.titre = titre;
}

Et enfin, ca ne sert à rien de commenter une classe pour dire que c'est un constructeur : n'importe quel développeur Java sait reconnaître un constructeur d'une fonction normale. Il vaut mieux éviter les commentaires inutiles.

Ce qui donne au final :
Public Class Livre { 

protected static final String TITRE_DEFAUT = " La terre ";
protected static final String AUTEUR_DEFAUT = " Paul ";
protected static final int PRIX_DEFAUT = 10;

protected String titre; 
protected String auteur; 
protected float prix; 
protected int annee; 

Public Livre() { 
  this.titre = TITRE_DEFAUT;
  this.auteur = AUTEUR_DEFAUT;
  this.prix = PRIX_DEFAUT;
  System.out.println("Création d'un livre"); 
} 

Public Livre (String titre) { 
  this();
  this.titre = titre; 
} 

Public Livre (String titre, String auteur) { 
  this(titre);
  this.auteur = auteur; 
} 

Public Livre (String titre, String auteur, int prix) { 
  this(titre, auteur);
  this.prix = prix; 
} 

public String getTitre() {
  return this.titre;
}

public void setTitre(String titre) {
  this.titre = titre;
}

public String getAuteur() {
  return this.auteur;
}

public void setAuteur(String auteur) {
  this.auteur = auteur;
}

public String getPrix() {
  return this.prix;
}

public void setPrix(int prix) {
  this.prix = prix;
}

} 


______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
12 oct. 2010 à 11:23
Salut,

Tu utilises quel IDE?

Le modificateur "public" ne prend pas de majuscule, ainsi que le mot-clé "class", en règle générale Java est sensible à la casse : "Public" est différent de "public".

Le but d'un constructeur est en général d'instancier un objet en renseignant ses attributs. Le but du constructeur public Livre(String titre) n'est pas de créer un livre dont le titre est " La Terre " mais de créer un livre dont le titre est passé dans le paramètre "titre".

Il faut donc écrire :

public Livre(String titre) {
this.titre = titre;
}


et tu appelles le constructeur comme ça :

public static void main(String[] args) {
   Livre livre = new Livre(" La Terre ");
}
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
12 oct. 2010 à 11:24
Bonjour.
Ta classe Livre devrait plutôt ressembler à ceci
(public sans majuscule, initialisation des membres de la classes avec les paramètres des constructeurs)
public class Livre {
    private String titre;
    private String auteur;
    private float prix;
    private int annee;
    
    public Livre() {
    }
    
    public Livre(String livre, String auteur) {
        this.titre = livre;
        this.auteur = auteur;
    }

    public Livre(String titre, String auteur, float prix) {
        this.titre = titre;
        this.auteur = auteur;
        this.prix = prix;
    }

    public Livre(String titre, String auteur, float prix, int annee) {
        this.titre = titre;
        this.auteur = auteur;
        this.prix = prix;
        this.annee = annee;
    }

    public String getLivre() {
        return titre;
    }
    public void setLivre(String livre) {
        this.titre = livre;
    }
    public String getAuteur() {
        return auteur;
    }
    public void setAuteur(String auteur) {
        this.auteur = auteur;
    }
    public float getPrix() {
        return prix;
    }
    public void setPrix(float prix) {
        this.prix = prix;
    }
    public int getAnnee() {
        return annee;
    }
    public void setAnnee(int annee) {
        this.annee = annee;
    }
}


Pour le main
public class ProgPrincipal {
    public static void main(String[] args) {
        Livre l1 = new Livre();
        Livre l2 = new Livre("la terre", "Paul");
        ...
    }
}
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
12 oct. 2010 à 13:17
Désolé à tous, pour le message qui fait doublon avec les précédents, j'aurais du rafraichir la page avant de poster...
0

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

Posez votre question
sabola Messages postés 10 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 26 décembre 2010
14 oct. 2010 à 12:45
Merci à tous pour votre aide.Désole pour le titre,je ne nouveaux sur le forum.Merci mille fois!!
0
Rejoignez-nous