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

Collection et Stream Java Discussion :

problème affichage & un tableau d'objet


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut problème affichage & un tableau d'objet
    Bonjour tout le monde
    Je suis un vrai débutant dans le monde de la POO alors ce sont mes premières questions à propos JAVA, bon j’ai essayé de codé un diagramme UML avec le maximum de prudence pour évité les erreurs et ne pas faire fatigue pour les autres avec moi par des questions « d’un vrai débutant », mais je n’ai pas arrivé et je me plante tjrs alors, le problème me demande de crée un programme qui gère une bibliothèque, il doit comporter 3 class {Bibliotheque, Abonne, Ouvrage}
    La class bibliothèque me permet de compter le nombre d’ouvrage et le nombre d’abonnées, une méthode « emprunter(String t,int Id) :void », elle permet pour un abonné d’emprunter un livre donc les paramètres sont Id et le titre « attributs de la class abonné et la class Ouvrage » ,une méthode pour rendre un ouvrage « rendre(int Id) :void » ,méthode « ajoutOvrage(ouvrage o) :void »,une méthode « chercheAbonne(Abonne a ) :void » et une méthode pour l’affichage « inf () :void »
    le code n’est pas très sèche, j’ai mi des commentaires sur les instructions qui contienne des erreurs avec les choses que je trouve difficile a comprendre dans la class Bibliotheque.
    pourriez vous m'aidez svp Merci bien d’avance

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    public class Bibliotheque  {
     
    		int nbOuvrage;
    		int nbAbonne;
    		Ouvrage [] ouv;
    		Abonne [] abn; 
     
    		public Bibliotheque (int n1,int n2)
    		{
    		nbOuvrage=0;
    		nbAbonne=0;
    		ouv=new Ouvrage[n1];
    		abn=new Abonne[n2];
    		}
     
    		public void  chercheOuvrage (String t)
    		{
    		int i; 
    		int n1= ouv.length;
    		for(i=0;i<n1;i++)
    		{
    			if(ouv[i].getTitre()==t)
    			{
    				System.out.println("le titre"+t+"exit") ;
    			}
     
     
    		}
    		}
     
     
    		public void ajoutOuvrage(Ouvrage o)
    		{
    		int i;
    		int n1 = ouv.length;
    		  for (i=0;i<n1;i++)
    		    {
    			 if (ouv[i].getExiste()==true)
    		    	{
    				   System.out.println("deja existe");
    				 }
    		  else
    			   {
    			      ouv[i]=o;
    			      }//quelqu'un ma donné cette solution et je comprend pas l'instruction a executer après la else  c à d " ouv[i]=o"  
    		    }
    		}
     
    		public Abonne chercheAbonne(int id)
    		{int i;
    		int n2 = abn.length;
    		for(i=0;i<n2;i++)
    		   { if(abn[i].getIdentite()==id)
    			   {
    			     return abn[i];
    			    }
    		  else
    			{
    			  return null;
    			 }
    		   }
    		return null;}
     
    		public void emprinter(String t,int Id)
    		{
    		int i;
    			for (i=0;i<abn.length;i++)
    		{ 
    			if (abn[i].setEmprunt(t, Id /*comment faire pour emprunter un livre ? ca me bloc a continué erreur dans les paramètres*/
    			{
    				System.out.println("deja emprunter");
    			}
    		}}
     
     
     
    		public void info()
    		{
    		for(int i=0;i<ouv.length;i++)
    		System.out.println("les ouvrage sont :"+ouv[i].info()+ "et les abonne sont "+abn[i].info /*une grande erreur dans la première parti du message  d'affichage et pas des erreur dans la deuxième partie "+abn..."!*/
    		}
    }
    Le code de La class Abonne
    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
    public class Abonne {
     
    		private int identite;
    		private String nom;
    		private int numAbonne;
    		private Ouvrage emprunt;
     
    		public Abonne(int identite,String nom,int numAbonne)
    		{
    		this.identite=identite;
    		this.nom=nom;
    		this.numAbonne=numAbonne;
    		}
     
    		public int getIdentite()
    		{
    		return identite;
    		}
     
    		public void setEmprunt(String t,int Id)//role de void setEmprint ?
    		{
    			nom=t;
    			identite=Id;
     
    		}              
     
    		public Ouvrage getEmprunt()
    		{
    		return emprunt;
    		}
     
    		public void info()
    		{
    		System.out.println("l'identite d'abonne est " +identite+ "le nom est"+nom+ "le numAbonne est" +numAbonne);
    		}
    }
    Le code de La class ouvrage

    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
    public class Ouvrage extends Bibliotheque{
    	private static final int n2 = 0;
    	protected String titre;
    	protected String datCreation;
    	protected boolean existe;
     
    	public Ouvrage(String t,String d)
    	{
    	super (n2, n2);
    	titre=t;
    	datCreation=d;
    	}
    	public void info()
    	{
    		System.out.println("titre est " +titre+ "datCreation est " +datCreation);
    	}
     
    	public String getTitre()
    	{return titre;}
     
    	public boolean getExiste()
    	{return existe;}
     
    	public void setExiste(boolean e)
    	{existe=e;}
     
    }

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ouvrage extends Bibliotheque
    Ca c'est faux car une bibliotheque n'est pas un ouvrage!
    Une bibliothèque contient des ouvrage càd on a une relation d'agrégation entre les 2 classes, cela se traduit par une liste ou un tableau d'ouvrage dans la classe Bibliotheque ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Bibliotheque {
     //...
     List ouvrages; // ou Ouvrage[] ouvrages mais liste c'est dynamique
     //reste du code
    }
    Il faut une base de données pour que ton application soit plus réel

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Ta méthode "ajoutOuvrage" ne peut pas fonctionner correctement. Le test sur "ouv[i].getExiste()" va générer un NullPointerException lorsque tu vas arriver sur une case vide du tableau "ouv".
    Le test doit être ainsi : "if( ouv[ i ] != null )".
    Tu n'as manifestement pas compris le fonctionnement des tableaux "ouv" et "abn". Peut-être as-tu simplement copier un début de solution quelque part ?
    Le principe reprend le fonctionnement interne d'un java.util.ArrayList pour rendre un tableau "dynamique" en taille sans presque jamais avoir besoin de ré-allouer de la mémoire. Une taille initiale est créée pour le tableau. Une taille utilisée lui est attribuée. Ici, ce sera "nbOuvrage" pour le tableau "ouv". Parcourir le tableau des Ouvrage signifie aller de zéro à "nbOuvrage - 1". La case "nbOuvrage" du tableau est vide. La méthode "ajoutOuvrage" se simplifie donc ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void ajoutOuvrage(Ouvrage o)
      ouv[ nbOuvrage ] = o;
      ++nbOuvrage;
    }
    Il ne te reste plus qu'a augmenter la taille du tableau (via un tableau temporaire) si "nbOuvrage >= ouv.length".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut
    Citation Envoyé par hibour Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ouvrage extends Bibliotheque
    Ca c'est faux car une bibliotheque n'est pas un ouvrage!
    Une bibliothèque contient des ouvrage càd on a une relation d'agrégation entre les 2 classes, cela se traduit par une liste ou un tableau d'ouvrage dans la classe Bibliotheque ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Bibliotheque {
     //...
     List ouvrages; // ou Ouvrage[] ouvrages mais liste c'est dynamique
     //reste du code
    }
    Il faut une base de données pour que ton application soit plus réel
    merci bien pour la réponse mais j'ai pas enroce vu les tableau dynamique donc je préfère

  5. #5
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Ta méthode "ajoutOuvrage" ne peut pas fonctionner correctement. Le test sur "ouv[i].getExiste()" va générer un NullPointerException lorsque tu vas arriver sur une case vide du tableau "ouv".
    Le test doit être ainsi : "if( ouv[ i ] != null )".
    Tu n'as manifestement pas compris le fonctionnement des tableaux "ouv" et "abn". Peut-être as-tu simplement copier un début de solution quelque part ?
    Le principe reprend le fonctionnement interne d'un java.util.ArrayList pour rendre un tableau "dynamique" en taille sans presque jamais avoir besoin de ré-allouer de la mémoire. Une taille initiale est créée pour le tableau. Une taille utilisée lui est attribuée. Ici, ce sera "nbOuvrage" pour le tableau "ouv". Parcourir le tableau des Ouvrage signifie aller de zéro à "nbOuvrage - 1". La case "nbOuvrage" du tableau est vide. La méthode "ajoutOuvrage" se simplifie donc ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void ajoutOuvrage(Ouvrage o)
      ouv[ nbOuvrage ] = o;
      ++nbOuvrage;
    }
    Il ne te reste plus qu'a augmenter la taille du tableau (via un tableau temporaire) si "nbOuvrage >= ouv.length".
    merci bien pour la réponse .je vais essayé
    Citation Envoyé par dinobogan Voir le message
    Tu n'as manifestement pas compris le fonctionnement des tableaux "ouv" et "abn". Peut-être as-tu simplement copier un début de solution quelque part ?
    effectivement j'ai pas compris comment fonctionne les tableau avec java sur tout sans initialisation comme le cas tab[] tableau je suis un vrai débutant, c'est mon premier code en JAVA j'ai pas copier aucune solution d'un autre personne je suis pas de genre qui fait ça si je comprend c'est c'est bon sinon je poste mon propre code avec les commentaire qui décrit la façon avec la quel je pense pour corrigé l'intérieur "ma tete "

  6. #6
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut
    salut tout le monde j'ai corrigé ajoutOuvrage il me reste quelque erreur au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void emprinter(String t,int Id)
    		{
    		int i;
    			for (i=0;i<abn.length;i++)
    		{ 
    			if (abn[i].setEmprunt(t, Id))/*comment faire pour emprunter un livre ? ca me bloc a continué erreur dans les paramètres*/
    			{
    				System.out.println("deja emprunter");
    			}
    		}}
    j'utilise Eclips il me demande de changé le type retour de la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void setEmprunt(String t,int Id)//role de void setEmprint ?
    		{
    			nom=t;
    			identite=Id;
     
    		}
    a boolean pour temps j'ai pas besoin de renvoyé aucune valeur !

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu dois ajouter une méthode "isEmprunt" (par exemple) qui renvoie un booléen à "true" si c'est emprunté, "false" sinon.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Tu dois ajouter une méthode "isEmprunt" (par exemple) qui renvoie un booléen à "true" si c'est emprunté, "false" sinon.
    merci je vais le faire

Discussions similaires

  1. [2.x] affichage d'un tableau d'objet..
    Par marween dans le forum Symfony
    Réponses: 3
    Dernier message: 10/05/2014, 19h51
  2. @SetupRender problème + affichage d'un tableau
    Par hadakamatcho dans le forum Tapestry
    Réponses: 4
    Dernier message: 07/09/2012, 09h23
  3. Réponses: 8
    Dernier message: 11/02/2011, 01h39
  4. problème pour delete un tableau d'objets
    Par Tekura dans le forum C++
    Réponses: 3
    Dernier message: 02/02/2011, 23h23
  5. Problème pour remplir un tableau d'objet
    Par bobinouze dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 26/12/2009, 19h55

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