IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Gestion d'une petite bibliothèque


Sujet :

Langage Java

  1. #1
    Invité
    Invité(e)
    Par défaut Gestion d'une petite bibliothèque
    salut,
    happy new year
    l’énoncé de l'exercice est sur la pièce joint
    j'ai trouver des problèmes dans l’implémentation des méthodes de la 3 ème question et la méthode de la classe Livre ( empruntable():boolean )
    voici les codes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class Test{
     
    	public static void main(String [] args){
    		Bibliotheque bibli = new Bibliotheque();
    		Adherent ad = new Adherent("fussa","fyby");
    		Adherent ad2 = new Adherent("slim","shady");
    		bibli.ajouterAdherent(ad);
    		bibli.ajouterAdherent(ad2);
     
    		int n=4;
    		Document[] docs = new Document[n];
    		docs[0]=new Livre("misérables","hugo victor");
    		docs[1]=new Journal("dr dobbs",11,10,2003);
    		docs[2]=new BD("thorgal","van hamme","rosinky");
    		docs[3]=new Livre("systemes","ferber");
     
    		for(int i=0;i<n;i++){
    			System.out.println("document "+docs[i]);
    			bibli.ajouterDocument(docs[i]);
    		}
    		bibli.listerDocuments();
    		bibli.recupererDocuments();
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    import java.util.Vector;
    import java.io.*;
     
     
     
    public class Bibliotheque{
    	private Vector adherents;
    	private Vector documents;
     
    	public Bibliotheque(){
    		adherents= new Vector();
    		documents= new Vector();
    	}
    	public void ajouterAdherent(Adherent ad){
    		adherents.addElement(ad);
    	}
    	public void ajouterDocument(Document doc){
    		documents.addElement(doc);
    	}
    	public void listerDocuments(){
    		ObjectOutputStream oos;
    		int i,s = documents.size();
    		try{
    			oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(new File("file.txt"))));
    			for (i=0; i<s;i++){
    				oos.writeObject(documents.get(i));
    			}
    			oos.close();
    		} catch (IOException e){
    			e.printStackTrace();
    		}		
    	}
     
    	public void recupererDocuments(){
    		ObjectInputStream ois;
    		try{
    			ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File("file.txt"))));
    			System.out.println("affichage des documents :");
    			System.out.println("*************************");
    			int s= documents.size();
    			try{
    				for(int i=0;i<s;i++){
    			}
    				System.out.println(((Document)ois.readObject()).toString());				
    			}catch(ClassNotFoundException e){
    				e.printStackTrace();
    			}
    			ois.close();
    		}catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import java.io.Serializable;
     
    public class Adherent implements Serializable {
     
    	private String prenom;
    	private String nom;
     
    	public Adherent(){
    		this.prenom="Inconnu";
    		this.nom="Inconnu";
    	}
    	public Adherent(String prn,String nm){
    		this.prenom=prn;
    		this.nom=nm;
    	}
    	public void setNom(String nm){
    		this.nom=nm;
    	}
    	public void setPrenom(String prn){
    		this.prenom=prn;
    	}
    	public String getNom(){
    		return this.nom;
    	}
    	public String getPrenom(){
    		return this.prenom;
    	}
    	public String toString(){
    		return "nom : "+this.getNom()+" , prenom : "+this.getPrenom();
    	}
    	public void emprunter(Livre l){
    		l.empruntable();
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import java.io.Serializable;
     
    public class Document implements Serializable {
    	private String titre;
     
    	public Document(){
    		this.titre="Inconnu";
    	}
    	public Document(String ttr){
    		this.titre=ttr;
    	}
    	public void setTitre(String ttr){
    		this.titre=ttr;
    	}
    	public String getTitre(){
    		return this.titre;
    	}
    	public String toString(){
    		return "titre du document : "+this.getTitre();
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public class Volume extends Document{
    	private String auteur;
     
    	public Volume(){
    		super();
    		this.auteur="Inconnu";
    	}
    	public Volume(String ttr,String aut){
    		super(ttr);
    		this.auteur=aut;
    	}
    	public void setAuteur(String aut){
    		this.auteur=aut;
    	}
    	public String getAuteur(){
    		return this.auteur;
    	}
    	public String toString(){
    		return "auteur : "+this.getAuteur()+" , "+super.toString();
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public class Journal extends Document {
    	private Date dt;
     
    	public Journal(){
    		super();
    		this.dt= new Date();
    	}
    	public Journal(String ttr,int dy,int mth,int yr){
    		super(ttr);
    		this.dt= new Date(dy,mth,yr);
    	}
    	public String toString(){
    		return "date : "+this.dt.toString()+" , "+super.toString();
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    public class BD extends Volume {
    	private String dessinateur;
     
    	public BD(){
    		super();
    		this.dessinateur="Inconnu";
    	}
    	public BD(String ttr,String aut,String nomD){
    		super(ttr,aut);
    		this.dessinateur=nomD;
    	}
    	public String getNomDessinateur(){
    		return this.dessinateur;
    	}
    	public void setNomDessinateur(String nomD){
    		this.dessinateur=nomD;
    	}
    	public String toString(){
    		return "dessinateur : "+this.getNomDessinateur()+" , "+super.toString();
    	}
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Livre extends Volume {
    	public Livre(){
    		super();
    	}
    	public Livre(String ttr,String aut){
    		super(ttr,aut);		
    	}
     
     
    	public String toString(){
    		return "livre => "+super.toString();
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Dictionnaire extends Volume {
    	public Dictionnaire(){
    		super();
    	}
    	public Dictionnaire(String ttr,String aut){
    		super(ttr,aut);
    	}
    	public String toString(){
    		return "dictionnaire => "+super.toString();
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    import java.io.Serializable;
     
     
    public class Date implements Serializable {
    	private int day;
    	private int month;
    	private int year;
     
    	public Date(){
    		this.day=0;
    		this.month=0;
    		this.year=0;
    	}
    	public Date(int dy,int mth,int yr){
    		this.day=dy;
    		this.month=mth;
    		this.year=yr;
    	}
    	public void setDay(int dy){
    		this.day=dy;
    	}
    	public void setMonth(int mth){
    		this.month=mth;
    	}
    	public void setYear(int yr){
    		this.year=yr;
    	}
    	public int getDay(){
    		return this.day;
    	}
    	public int getMonth(){
    		return this.month;
    	}
    	public int getYear(){
    		return this.year;
    	}
    	public String toString(){
    		return this.getDay()+"/"+this.getMonth()+"/"+this.getYear();
    	}
     
    }
    Images attachées Images attachées  
    Dernière modification par Invité ; 03/01/2014 à 04h00.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Citation Envoyé par FuSsA Voir le message
    l’énoncé de l'exercice est sur la pièce joint
    Et illisible car trop petit
    Citation Envoyé par FuSsA Voir le message
    j'ai trouver des problèmes dans l’implémentation des méthodes de la 3 ème question et la méthode de la classe Livre ( empruntable():boolean )
    Quels problèmes?

  3. #3
    Invité
    Invité(e)
    Par défaut
    bon dans la classe Livre je dois implémenter une méthode: empruntable():boolean
    dans l'énoncé il est dit que les adhérents peuvent emprunté k les livres.. la méthode ne reçoit aucun paramètre , j'ai pas su koi faire

    pour la question 3 on nous a demandé d’implémenter dans la classe Adhérent les méthodes: void emprunter(Livre l) et void rendre(Livre l)
    c'est pareil j'ai po su koi faire.. peut être k ses méthodes vont utiliser la méthode empruntable() de la classe Livre
    comment implémenter ses méthodes ? merci

    pour la qualité de l'image , elle n'est pas bonne, essaye de la télécharger et ouvre la en mode diaporama n'utilise pas la loupe
    et merci
    Dernière modification par Invité ; 03/01/2014 à 05h07.

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    juste une question sans rapport:
    pourquoi des constructeurs sans paramètres avec ces initialisations à "inconnu"?
    il me semble que la plupart de tes objets sont immuables (donc pas de setNom par exemple)...

    edit: autre remarque : je trouve que la suggestion dans l'énoncé d'utiliser des Vector est un archaïsme ....

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Comme son non l'indique, cette méthode a vraisemblablement pour but de savoir si le livre, d'une manière générale, peut être emprunté. Le critère doivent surement être décrit dans l'exercice. C'est quelque chose qui ne concerne que le livre, pas l'adhérent.

    La méthode dans adhérent, au contraire, concerne la paire adhérent livre. Je suppose qu'un adherent doit vérifier que le livre est empruntable et si oui, si sa liste de livre emprunté ne dépasse pas la limite. Pour ensuite le marqué comme emprunté et le mettre dans sa liste.

    Pour le reste, faut voir les contraintes données

  6. #6
    Invité
    Invité(e)
    Par défaut
    ce ki est indiquer dans l'exercice et que les adherents peuvent emprunter des livres ( et uniquement des livres) et on doit pouvoir savoir à tout moment quels sont les livres empruntés par un adherent..
    alors maintenant comment faire pour implementé ces methodes
    merci

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Avant de se demander "comment implémenter ces méthodes," il faut se demander "que doivent faire ces méthodes." Quand elles sont appelées, il faut que le résultat soit quoi ?

    - Pour ta fameuse méthode Livre.empruntable()... Franchement avec ce que tu nous dis, on va pas deviner.
    Apparemment elle devrait toujours renvoyer vrai, et c'est stupide puisque ça sert à rien.

    Une autre idée serait qu'en fait, toutes les classes qui héritent de Document doivent avoir la méthode empruntable()... Et qu'elle renvoie faux pour tous, sauf pour la classe Livre. Là ça aurait un sens.

    - Pour les deux autres méthodes emprunter() et rendre(), la seule contrainte que tu nous donnes, c'est qu'à tout moment on doit savoir quels sont les livres empruntés par un adhérant...
    Donc ce qu'elles doivent faire, c'est retenir qu'un livre a été emprunté ou oublier qu'un livre a été emprunté, par l'adhérant en question. Comme cet exercice semble aimer les Vector archaïques, ça peut sûrement se faire avec un Vector<Livre>, tu ne crois pas ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Invité
    Invité(e)
    Par défaut
    OK Mr. thelvin
    je vais essayer d’implémenter ces méthodes et les poster
    si vous avez d'autres idées ou des trucs ki pourrait m'aider n’hésiter pas

  9. #9
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Citation Envoyé par FuSsA Voir le message
    si vous avez d'autres idées ou des trucs ki pourrait m'aider n’hésiter pas
    Bonjour, Happy New Year 2U2,

    Si j'ai bien compris l'énoncé et le schéma (c'est tellement petit!): tant la classe Document que la classe Livre possèdent des méthodes "empruntable() boolean" alors je dirais que dans les deux classes doit y avoir une variable boolean, initialisée à "false" dans Document et à "true" dans Livre.

    Vous devriez modifier la méthode toString() de la classe Livre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        public String toString() {
            return "livre => " + super.toString() + " " + this.empruntable;
        }
    ce qui permettra de voir lors de l'affichage des Document si un certain Livre est "empruntable" ou pas. Pour que la liste des Document soit affichée vous devriez mettre l'instruction
    System.out.println(((Document)ois.readObject()).toString()); à l'intérieur de la boucle for()

    Dans la classe Document vous auriez des méthodes d'accès au boolean "empruntable", disons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        protected Boolean getEmpruntable() {
            return empruntable;
        }
     
        protected void setEmpruntable(Boolean empruntable) {
            this.empruntable = empruntable;
        }
    Dans la classe Livre vous pourriez avoir des implémentations "spécifiques" pour les mêmes méthodes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        public boolean isEmpruntable() {
            return empruntable;
        }
     
        public void setEmpruntable(boolean empruntable) {
            this.empruntable = empruntable;
            super.setEmpruntable(empruntable);
        }
    Et dans la classe Adherent vous pourriez ajouter des méthodes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            public void emprunter(Livre l) {
            l.setEmpruntable(false);
            // ajouter le livre à la collection des livres empruntés par l'adhérent
        }
     
        public void rendre(Livre l){
            // retirer le livre de la collection des livres empruntés par l'adhérent
            l.setEmpruntable(true);
        }
    Vue qu'il n'est pas question d'emprunter autre chose que des Livre, théoriquement ça devrait suffire...

  10. #10
    Invité
    Invité(e)
    Par défaut
    merci Mr. Mishulyna

Discussions similaires

  1. BiblioISSATS : Gestion d'une bibliothèque universitaire
    Par Chatbour dans le forum Vos contributions VB6
    Réponses: 3
    Dernier message: 25/10/2010, 18h40
  2. Réponses: 2
    Dernier message: 26/11/2008, 23h12
  3. Réponses: 3
    Dernier message: 05/08/2008, 20h06
  4. Gestion d'une bibliothèque en Windev
    Par Lenalyon dans le forum WinDev
    Réponses: 5
    Dernier message: 23/08/2007, 16h01
  5. Gestion d'une petite base de données
    Par vmal dans le forum Langage
    Réponses: 4
    Dernier message: 03/09/2006, 08h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo