Pb exercice Java (poo)

Résolu/Fermé
Signaler
-
 guit -
Bonjour,
Je suis encore débutante en Java et je dois faire un exercice que je ne comprends pas trop: je vous communique l'exercice et mon travail (meme si j'ai pas fait grand chose et j'espère que vous allez m'aider pour le reste) et merci d'avance
Exercice
voici le programme source de la classe Livre:

Public class Livre
{
//données membres
private String titre, auteur;
private int nbPages;

//Constructeur
public Livre (String unAuteur, String unTitre)
{
auteur= unAuteur;
titre=unTitre;
}

//accesseur
public String getAuteur()
{return auteur;}

//modificateur
public void setNbPages (int nb)
{nbPages=nb;}}

Manipulation1
Ajouter une méthode main()pour:
*creer deux livres,
*afficher les auteurs de ces deux livres.

Maniupulation2
Modifier la classe Livre:
*Ajouter un accesseur (guetteur)pour la variable titre et la variable nbPages
*Ajouter un modificateur pour les variables auteur et titre
*changer le modificateur de nbPages: il ne doit changer le nombre de pages que si on lui passe en parametre un nombre positif,sinon il affche un message d'erreur.
Dans la methode main():
*definissez un nombre de pages pour chacun des deux livres,
*afficher ces nombres de pages
*Calculer le nombre de pages total de ces deux livres et affichez-le

Manipulation3
*ecrivez une classe TestLivre avec une seule méthode main() qui fait la meme chose que la methode main() de la classe Livre
*compiler et executer la methode main() de la classe TestLivre?

Manipulation4 methode toString()
*dans la classe Live, ajouter une methode afficheToi() qui affiche les informations concernant un livre(auteur,titre et nombre de pages).Utilisez la méthode afficheToi() dans la methode main() e testLivre.
*Ajouter l'instruction Ssytem.out.println(livre) où lel ivre désigne un des livres que vous avez crée, que se passe t'il?
*Ajouter une methode toString() qui renvoie une chaine d carateres decrivant le livre .que fait alors l'instruction Systeme .out.println(livre?).

Manipulation5:les constructeurs
Ajouter trois constructeurs dans la classe Livre:
1.sans aucun parametre donné
2.pour un auteur et un titre donne
2.pour un auteur,un titre et un nombre de pages données
utilisez ces trois constructeurs(et eventuellement d'autre methodes)pour creer trois livres de 300pages dans la methode main() de TestLivre

Manipulation6:Controle des variables private par les modificateurs
1.Ajouter un primaux livres avec 2méthodes getPrix et setPrix pour obtenir le prix et le midifier.Ajouter au moins un contructeur qui prend le prix en parametre.si le prix d'un livre n'a pas ete fixé, la description du livre(to string())devra indiquer "prix pas encore fixé".Attention, un livre peut etre gratuit.
2.On bloque completement le prix:un prix ne peut etre saisie qu'une seule fois et ne peutetre modifie ensuite(une tentative de modifier le prix ne fait quafficher un message d'erreur).
reecrivez la methde setPrix(et autres coses si besoin est).Ajoutez une methode "isPrixFixe" qui renvoie vrai si le prix a deja éte fixé.Faut'il ecrire une methode "setPrixFixe" pour modifier la variable booleenne ?

Mon travail:

class Livre
{
//données membres
private String titre, auteur;
private int nbPages;

//Constructeur
public Livre (String unAuteur, String unTitre)
{
auteur= unAuteur;
titre=unTitre;
}

//accesseur
public String getAuteur()
{return auteur;}

//modificateur
public void setNbPages (int nb)
{
if (nb>0)
nbPages=nb;
else
System.out.println("erreur");
}

//creation de deux livres et affichages de leurs auteurs
public static void main (String[]args)
{
//creation des deux livres
Livre Livre1=new Livre("auteur","titre");
Livre Livre2=new Livre("auteur","titre");
//Affichage des auteurs des deux nouveaux livres
System.out.println(Livre1.auteur);
System.out.println(Livre2.auteur);
}
//Accesseur pour la variable Livre
public String get Livre()
{
return Livre;
}
//Accesseur pour la variable NbPage
public int get NbPages()
{
return NbPages;
}
//Setteur pour la variable auteur
String set auteur (String A)
{
Auteur=A;
}
}

11 réponses

Messages postés
81
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
6 juillet 2011
10
Bonjour,

Dans ton main, je te conseille de créer des "Livre" avec un nom d'auteur et de titre différent.

Qui aurait l'idée de s'appeler "auteur" et de nommer son livre "titre" ? Tu peux mettre "toto" en auteur et "Toto au Pérou" en titre par exemple ;-)

Est ce que c'est ton premier langage de programmation ? Il faut bien faire attention à la notion de variable et de donnée membre.

Regarde l'accesseur pour l'auteur :

 public String getAuteur()
{return auteur;} 


Ici, "auteur" correspond à la donnée membre de l'objet dont la méthode "getAuteur()" est appelée. Typiquement, on ne peut pas accéder directement au contenu de "auteur" (regarde le "private" dans la déclaration de ta classe).

Ainsi, tu ne peux pas écrire "Livre1.auteur" car ce n'est pas une donnée publique. C'est pour cela que tu dois appeler l'accesseur "getAuteur".

Concernant les accesseurs que tu as écris...
Un accesseur permet comme son nom l'indique d'accéder à une donnée membre.

 public String get Livre()
{
return Livre;
}


"Livre" correspond à quelle donnée ? Je ne vois pas de membre "Livre" dans la classe "Livre" ^^

//Accesseur pour la variable NbPage
public int get NbPages()
{
return NbPages;
}


NbPages n'est pas une données membre.
nbPages
oui :)
Il faut faire attention aux espace : pas d'espace dans un nom, vu que c'est un séparateur pour le compilo :p


//Setteur pour la variable auteur
String set auteur (String A)
{
Auteur=A;
} 


Pareil pour le coup de la majuscule et de l'espace.


Une question pour toi : étant donnée un objet "livre1" de type "Livre" et une méthode "getAuteur()" sais tu comment appeler cette méthode par rapport à l'objet "livre1" ?

(Quand je dis objet, je parle d'instance de la classe Livre)

Bon apprentissage,

c-moi
3
shui en premiere année "développement informatique", et pour ce qui concerne ta question, g fai quelques pats ds ton programme:

public class livre {
private String auteur, titre;
private int nbpage;
public livre(String auteur,String titre) {
this.auteur=auteur;
this.titre=titre;
}

//constructeur
public livre(int nbpage){
this.nbpage=nbpage;
}
//accesseur
public String getAuteur() {
return auteur;
}
//modificateur
public void setAuteur(String auteur) {
this.auteur = auteur;
}
public String getTitre() {
return titre;
}
public void setTitre(String titre) {
this.titre = titre;
}
//pour la conditon
public void setNbpage(int nbpage) {
if(nbpage>=0){
this.nbpage = nbpage;
}
else{
System.out.println("erreur");
}
}
public int getNbpage() {
return nbpage;
}
}
*************************************************
voilà le main:
import biputil2.*;
public class test_livre {
public static void main(String[] args) {
livre l1=new livre("ali","xx");
livre l2=new livre(24);
l1.setAuteur("ali");
l1.setTitre("xx");
l2.setAuteur("ahmad");
l2.setTitre("yy");
l1.setNbpage(20);
l2.setNbpage(40);

System.out.println(l1.getAuteur()+","+l1.getTitre()+","+l1.getNbpage());
System.out.println(l2.getAuteur()+","+l2.getTitre()+","+l2.getNbpage());


}
}
****************** vaut mieux créer une autre classe qui s'appelle test_livre par exemple, et tu peux l'executer pour voir les resultas bon courage *****************
2

salut
je rectifie alors mon travail mais svp j'ai pas trop compris ca
public String getAuteur()
{return auteur;}

Ici, "auteur" correspond à la donnée membre de l'objet dont la méthode "getAuteur()" est appelée. Typiquement, on ne peut pas accéder directement au contenu de "auteur" (regarde le "private" dans la déclaration de ta classe).

Ainsi, tu ne peux pas écrire "Livre1.auteur" car ce n'est pas une donnée publique. C'est pour cela que tu dois appeler l'accesseur "getAuteur".

Concernant les accesseurs que tu as écris...
Un accesseur permet comme son nom l'indique d'accéder à une donnée membre.


ca veut dire que je dois afficher les deux auteurs des deux livres que j'ai creer et qui son ali et adrien je fais ca Livre1.Adrien et Livre2.Ali
j'ai changer tout ce qui est en gras dans mon travail et pour le SetAuteur comment faire si on veut changer les deux nom des deux livres.
Merci beaucoup


class Livre
{
//données membres
private String titre, auteur;
private int nbPages;

//Constructeur
public Livre (String unAuteur, String unTitre)
{
auteur= unAuteur;
titre=unTitre;
}

//accesseur
public String getAuteur()
{return auteur;}

//modificateur
public void setNbPages (int nb)
{
if (nb>0)
nbPages=nb;
else
System.out.println("erreur");
}

//creation de deux livres et affichages de leurs auteurs
public static void main (String[]args)
{
//creation des deux livres
Livre Livre1=new Livre("Adrien","la nature");
Livre Livre2=new Livre("Ali","initiation programmation");
//Affichage des auteurs des deux nouveaux livres
System.out.println(Livre1.Adrien);
System.out.println(Livre2.Ali);
}
//Accesseur pour la variable Livre
public String get Livre()
{
return Livre;
}
//Accesseur pour la variable NbPage
public int get NbPages()
{
return NbPages;
}
//Setteur pour la variable auteur
String set Auteur(String A)
{
Auteur=A;
}
}
1
salut je suis nouveau dans la programmation java et je cherche des liens ou l'on trouve des exercices et corriger en java
1

Bonjour,
up
0
vous pouvez trouver la correction de la classe Livre dans le lien suivant:http://deptinfo.unice.fr/~grin/mescours/linfo/poo/tp/tp1/index.html
0
Messages postés
5
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
26 août 2008

Par ici, un site qui peut t'aider :

http://www.debutantprogjava.com/
0

voila c'est mon propre travaille



public class banque {
private String nom;
private String prenom;
private String adresse;
private String date;
private String nomnumero_compte;
private double solde;
private banque suiv;
public banque()//constructeur par default
{nom=ali;
prenom=bouba;
adresse=gafsa 2100;
date=01janvier2006;
numreo_compte=cp0001;
solde=70000;
suiv=null;
}
public void setnom(String x){nom=x;}//fonction d'alteration
public void setprenom(String y){prenom=y;}
public void setadresse(String z){adresse=z;}
public void setnumero_compte(String t){String numero_compte = t;}
public void setdate(String k){date=k;}
public void setsolde(double s){solde=s;}
public void setsuiv(String ls){suiv=ls;}
public String getnom(){return nom;}
public String getprenom(){return prenom;}
public String getadresse(){return adresse;}
public String getnumero_compte(){String numero_compte;
return numero_compte;}
public String getdate(){return date;}
public double getsolde(){return solde;}
public banque getsuiv(){return suiv;}
}
public class Date()//class date
{
private int jour;
private int mois;
private int annee;
public Date(int j,int m,int a){this.jour=j;this.mois=m;this.annee=a;}
}
public class compte_client()
{private banque tete;
public compte_client(){tete=null;}
public void ajoute(String x,String y,String z,String t,double s,String k )
{banque ls=new banque();
ls.setnom(x);
ls.setprenom(y);
ls.setadresse(z);
ls.setnumero_compte(t);
ls.setsolde(s);
ls.setdate(k);
ls.setsuiv(ls);
tete=ls;
}
public void affich()
{banque ls;
for(ls=tete;ls!=null;ls=ls.getsuiv())
System.out.println("le compte numero:"+ls.getnumero_compte()+"c'est pour monsieur ou madame:"+ls.getnom()+ls.getprenom()+"qui habite dans"+ls.getadresse()+"et leurs dates de creation est:"+ls.getdate()+"et leurs solde est:"+ls.getsolde());
}
public banque recherche (String k)
{banque ls;
for(ls=tete;ls!=null&&ls.getnumero_compte()!=k;ls=ls.getsuiv());
return ls;}
public void supprimer(String k)
{banque p=recherche(k);
if(p!=null){banque ls=tete;while (ls.getsuiv()!=p) ls=ls.getsuiv();
ls.setsuiv(p.getsuiv());
}
else
System.out.println("suppression impossible");
}
}
public class operation
{
private String date_operation;
private String type_operation;
private double montant_operation;
public operation(){this.date_operation=this.date;
this.type_operation=debiter;
this.montant_operation=0;}
public void setdate_operation(daet d){date_operation=d;}
public void settype_operation(String b){type_operation=b;}
public void setmontant_operation(double h){montant_operation=h;}
public void getdate_operation(){return date_operation;}
public void gettype_operation(){return type_operation;}
public void getmontant_operation(){return montant_operation;}
}
public void ajout_operation(banque ls,String t,double h,Srting date)
{if((t==debiter)&&(ls.getsolde()>ls.getmontant()))
{ls.setsolde(ls.getsolde()-ls.getmontant());
System.out.println(+ls.getnom()+"a retirer "+ls.getmontant()+"de la compte de"+ls.getnom()+""+ls.getprenom()+"et cette operation a ete effectuée au"+ls.getdate_operation());}
else if(t==crediter)
{ls.setsolde(ls.getsolde()+ls.getmontant());
System.out.println("ajouter"+ls.getmontant()+"au faveur de "+ls.getnom()+""+ls.getprenom()+"et cette operation a ete effectuée le"+ls.getdate_operation());
}
else
System.out.println("type d'operation non valide");
}
}
public class testbanque
{
public static void main(String args[])
{do
System.out.println("donner le jour de creation du compte");
j=Clavier.lireInt();
System.out.println("donner le mois de ceration du compte");
m=Clavier.lireInt();
System.out.println("donner l'annee de ceration du compte");
a=Clavier.lireInt();
}
while((a%4!=0&&m==2&&j==29)//((m==4)//(m==6)//(m==9)//(m==11)&& j=31)//(j<1)//(j>31)//(m<1)//(m>12));
System.out.println("donner le nom du client");
x=Clavier.lireint();
System.out.println("donner son prenom");
y=Clavier.lireInt();
System.out.println("donner son adresse");
z=Clavier.lireInt();
do{System.out.println("donner le numero du compte et il ne faut pas trouver deux comptes au plus ayant le meme numero ");
t=Clavier.lireInt();}while (numrero_compte.length<0&&numero_compte.length>6);
}
}
0
slt a ts !!!!!!!!

j'ai un projet en java a faire et j'arriv mm pas a commencer il ns demande de creer un jeu avec des monstres tt voila le sujet si qq un peu m'aider ca serai genti .

IL faudra tout d'abord definir une classe abstraite Creature possedant les champs nom et classe (pas class) de type String; les champs force, endurance, initiative, pointsdevieactuels, pointdeviemax, niveau, valeur et experience de type int et le champ booleen joueur. On lui donnera les methodes :

- int attaquer (" ListeCreature ") qui si la creature est un joueur demande a l'utilisateur quel creature taper dans la liste; si la creature est geree par l'ordinateur, on tirera au sort une creature a taper. Cette methode renverra le numero de la cible dans la liste (A vous de voir si on peut se taper soi-meme).

- boolean encaisser (int aie) qui diminue les points de vie actuels en fonction de la valeur de aie et renvoie vrai s'ils deviennet negatifs ( je vous laisse deviner ce que ca signifie pour la creature).

-les accesseurs necessaires.

On creera les classes Troll, Barbre, Nain, Elfe, Ogre et ChuckNorris qui herittent de Creature (on mettra le champ classe a la bonne valeur). On aura pour chacune de ces classes un constructeur qui prend le nom en argument et met les caracteristiques a jour en fonction des donnees contenues dans le fichier Troll.data, par exemple.(jai mis un exemple de fichier Troll.data dans le repertoire projet sue mon compte a l'adresse \\deug2006/lyaudet$. Une creature est de niveau 1 a sa creation .)
0

bonne jour a samira45 voila le code de l'exercice c'est terés terés terés facile
http//www.polymorphe.net/disject/affich-3650001-mini-project-?vari-jeu/1101021


et mercie pour moi je suis terés terés genitille
pas de queoi


baye baye mon amour contacter moi poure le mariage
0
salut !!!!!!!

je trouve pas ton site avec le projet c'est peut être facile mais j'arrive vraiment pas en informatique surtout en java
merci
bye bye
0

tu est vraiment teres faible aller dans la forum de pain et du formage et tu sera facilement trouve ton exercice dans la reve c'est un site pur donner simplement une indication a l'exercice mais c'est pas pour travailler au place de toi
enfin S.V.P executer cet algorithme FLTM
SI tu connait cet algorithme tu sera bi1 une bonne programmeur
il faut obtenir Fait La Toi Meme

c'est de mon point de vue

allez dans le forum du banane
-2