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

avec Java Discussion :

Problème avec les vecteurs


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 42
    Par défaut Problème avec les vecteurs
    bonjour ,
    j'ai un travail à réalisé en java . Le code demandé permet de gérer les adhérents qui s'inscrivent pour pratiquer diverses disciplines( courses ,saut, lancé du poids,natation etc...).
    dans l'énnoncé on nous demande de :
    - créer dans une classe Adherent une méthode saisie_adhérent() qui permet de saisir au clavier les informations d'un adhérent et une autre méthode Affi_adherent() qui permet d'afficher leurs informations :

    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
    void Saisie_adherent()throws IOException
    	{
    	   System.out.println("Les informations de l'Adhérant :");
    	   CodeId++;
    	   System.out.println("Saisir le nom ");
    	   nom=clavier.readLine();
    	   System.out.println("Saisir le prénom ");
    	   prenom=clavier.readLine();
    	   System.out.println("Saisir l'adresse ");
    	   adresse=clavier.readLine();
    	   System.out.println("Saisir la date de naissance ");
    	   dateNais=clavier.readLine();
    	}
    void Affi_adherent()throws IOException
    	{
    	   int nbr=0,rep;
    	   System.out.println("***********************************");
    	   System.out.println("Code d'identification: "+CodeId);
    	   System.out.println(" Nom: "+nom);
    	   System.out.println(" Prenom: "+prenom);
    	   System.out.println(" Adresse: "+adresse);
    	   System.out.println(" Date de naissance: "+dateNais);
    	   System.out.println("***********************************");	
    	}
    -créer dans la classe Discipline deux méthodes : saisie_discipline() et affi_discipline() ,aui permettent de saisir et d'afficher la liste des disciplines :
    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
    void saisie_Discipline()throws IOException
    	{
    		System.out.println("Les informations de la discipline");
    		System.out.println("Saisir le nom");
    		NomDiscip=clavier.readLine();
    		System.out.println("Saisir la description ");
    		Description=clavier.readLine();
    		System.out.println("Saisir l'age minimum de l'inscription");
    		AgeMin=Integer.parseInt(clavier.readLine());
     
    	}
    /********************************************/
    	void Affi_discipline()
    	{
    		System.out.println("*************************************");
    	  	System.out.println("Nom de la descipline: "+NomDiscip);
    	  	System.out.println("Description sommaire: "+Description);
    	  	System.out.println("Age minimum d'inscription: "+AgeMin);
    	  	System.out.println("*************************************");
    	}
    - dans la classe Test , on nous demande de développer un code qui permet de saisir la liste des disciplines dans un tableau Tdisp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void Tab_Discipline()throws IOException
    	{
                  Vector Tdisp=new Vector();
                   Discipline Discip=new Discipline();
    	  int rep;
    	  do{
    		   Discip.saisie_Discipline();
    		   Tdisp.addElement(Discip);
    		   System.out.println("voulez vous ajouter une autre Discipline? (1:oui/0:non)");
    		   rep=Integer.parseInt(clavier.readLine());
    	     }while(rep==1);
    	}
    - par la suite , on doit créer une au tre méthode dans la classe test intitulée Inscription() qui permet d'inscrire un adhérent et le ranger dans un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void inscription()throws IOException
    	{ 
    	  Adhé.Saisie_adherent();
    	  Tadhér.addElement(Adhé);
    	}
    mais les renseignements que l'adhérent doit fournir lors de son inscription au club sont : Nom, Prenom ,Adresse,Date de naissance, Code D'identification(attribué automatiquement) ,discipline(s) choisie(s).
    L'adhérent peut choisir une à trois disciplines proposées !!!

    mais j'arrive pas à présenter ces règles sur mon code !
    est ce que quelqu'un peut m'aider à faire ???!!
    cordialement

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 152
    Par défaut
    Montre nous le programme complet ca sera plus simple!

    Je peux déjà te dire que les Exceptions jetées au fur et à mesure ce n'est pas la bonne méthode.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Bonjour lamia89

    Juste une petite remaque sur les conventions de notation en JAVA

    Les noms des méthodes commencent par une lettre minuscule
    Les noms des classes et interfaces commencent par une lettre majuscule
    Les noms de constantes sont écrites en lettres capitales.

    Et si possible...
    Evite les caractères accentués et les "_"
    Evite les abréviations

    Donc
    A la place de ...écris A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Discipline Discip=new Discipline();
    et tu peux écrires ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Discipline discipline=new Discipline();

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    j'arrive pas à présenter ces règles sur mon code !
    Pour progammer en orienté objet il faut toujours se poser deux questions conjointes :
    1. Faire quoi ? ==> La méthode (inscription,...)
    2. Qui a la responsabilité de le faire ? ==> Quelle classe d'objet ? (Club,...)

    Ces deux questions résolues on peut se poser deux autres questions conjointes :
    3. Avec quoi ? Pour qui ? ==> Les paramètres de ma méthodes (pour un nouvel adherent)
    4. Comment ? ==> Les instructions de la méthode


    Voici une démarche pour défnir tes classes "business":

    1) Il faut commencer par définir tes classes d'objet de ton "business".
    C'est à dire le business du club...Qui est acteur ?

    Réponse:

    - Club
    - Adherent
    - Personne (adhérant,supporter,...)
    - Discipline

    2) Regarde aussi les relations possibles entre ces trois acteurs.
    De ces relations on va tirer d'autres éléments qui interviennent dans notre problème.
    !!! Attention c'est ici que celà se complique très fort car les combinaisons peuvent être très nombreuses...

    Réponse:

    En groupant par 2:

    Club / Club : Les ligues sportives (pas pertinant ici)
    Club / Discipline : Les disciplines sportives d'un club
    Et inversément, les clubs d'une discipline
    Club / Adhérent : Les adhérents d'un club => les adhérents au club
    Et inversément, les clubs possibles pour un adhérent
    Adhérent / Adhérent : Les équipes...
    Adhérent / Discipline : Les disciplines pratiquées par un adhérent
    Les adhérents à une discipline
    Discipline / Discipline : Les sports combinaison de disciplines(pentatlon, ...)...

    En groupant par 3:

    Club / Discipline / Adhérent: Les inscriptions... Tous simplement

    3) Quelles sont les propriétés de ces acteurs ?

    Réponse:

    -Club
    nom du club (identifiant)
    plusieurs disciplines proposées
    plusieurs adhérents
    plusieur inscriptions

    -Adherent
    numéro d'adhérent
    Personne

    -Personne
    nom
    prénom
    date de naissance
    sexe
    adresse
    ...

    -Disciplines
    nom de la discipline

    -Inscription
    date d'inscription
    adhérent
    discipline
    ... autres élements éventuels...
    période
    numéro d'inscription

    4) Tu peux maintenant répondre à la question:

    QUI (quelle classe) à la responsablité de faire QUOI (quelle méthode) pour QUI (qui appel cette méthode) avec quel moyen (paramètres).

    par exemple:

    Club (QUI) à la responsabilité
    d'inscrire (FAIRE QUOI)
    des participants (POUR QUI)
    avec données d' inscription (AU MOYEN DE QUOI / AVEC QUOI)

    Ce qui donnera en JAVA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Pour inscrire une personne au club
    Personne personne = new Personne(dateNaissance,nom,prenom,sexe,adresse); 
    club.inscrire(personne); // nouvel adhérant au club
     
    // Pour inscrire un adhérant du club à une discipline
    Adherent adherent = club.getAdherent(numeroAdhesion);
    Discipline discipline = club.getDiscipline(nomDiscipline);
    Inscription inscription = new Inscription(dateInscription,aherent,discipline);
    club.inscrire(inscription); // participant à une discipline
    Ce code doit être invoqué à partir de l'objet qui demande l'inscription.
    La personne elle même, un bureau d'inscription, le club lui même...

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 42
    Par défaut
    quant au clib : il s'agit d'un seul club alors on aura pa besoin de l'identifier par un nom .
    lors de l'inscription vous avez fait entrer une seul discipline tandis que l'adhérent peut choisir une ou 2 ou 3 disciplines pour y inscrire .
    bon vous trouverez l'énnoncé dans les pieces jointes
    Fichiers attachés Fichiers attachés

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Avec l'énoncer c'est plus facile en effet.
    Pour la notation des méthodes dans l'énoncé tu es totalement pardonné et tu peux tirer les oreilles à ton prof de ma part pour son manque de rigueur.

    Pour le reste celà ne change rien au principe.

    Avec en plus l'age limite dans Discipline.
    Puisqu'il n'y a pas de période, ni de numéro ou de date d'inscription à une discipline. Une Inscription à une discipline ne reprend plus que Adherent et Discipline comme données.
    On peut donc simplifier et se passer (dans ce cas ci) de la classe Inscription

    Résultat:

    -Club
    plusieurs disciplines différentes proposées
    plusieurs adhérents

    -Adherent
    code d'identification = numéro d'adhérent
    Personne
    plusieurs disciplines différentes pratiquées

    -Personne
    nom
    prénom
    date de naissance
    adresse

    -Disciplines
    nom de la discipline
    age limite pour sa pratique

    lors de l'inscription vous avez fait entrer une seul discipline tandis que l'adhérent peut choisir une ou 2 ou 3 disciplines pour y inscrire
    Celà ne change rien au problème...
    Tu dois donc faire 1 inscription pour l'adhérent et 2 ou 3 inscriptions aux disciplines pour cet adhérent.
    La classe Club doit donc bien au moins posséder les méthodes avec les signatures suivantes:
    - Adherent inscrire(Personne) ou inscrire(nom,prenom,...)
    - inscrire(Adherent,Discipline)
    - boolean isAgeOk(Date,Discipline)

    Ce qui donnera pour l'insciption d'un adhérent + disciplines :

    Dans ton code tu auras:
    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
    
    // Pour inscrire une personne au club
    
    /*
     * En premier lieu il faut enregisrer les données de la personne 
     * auprès du club.
     */
    String nom;
    String prenom;
    String adresse; // On peu en faire una classe avec rue,no,code postal,...
    Date dateNaissance; // !!! c'est une date pas un String
    
    
    ... lire nom,prenom,adresse,dateNaissance ...
    
    Personne personne = new Personne(nom,prenom,adresse,dateNaissance);
    Adherent adherent = club.inscrire(personne); // nouvel adhérant au club 
     
    /* 
     * Pour inscrire les disciplines de cet adhérant
     * Ceci doit être répété pour chaque discipline à inscrire pour une personne
     */
    ...
    while(....)
    {
    
       ...Lire nom de la discipline...
     
       Discipline discipline = club.getDiscipline(nomDiscipline);
       if (club.isAgeOk(adherent.getDateNaissance,discipline)  
       {
           club.inscrire(aherent,discipline); // participant à une discipline
       }
       else 
       {
           ....Refuser une discipline...
       }
    }
    Si tu peux éventuellement regrouper ce code dans une méthode inscription() de la classe Club.
    Dans ce cas les "club." doivent être supprimés ou remplacés par "this."

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 42
    Par défaut
    mais comme ce que vous avez vu dans l'énnoncé : on aura besoin que de 3 méthodes Adhérent, discipline et test ! tandis que vous, vous parlez d'autres méthodes : club,personne ...
    on peut pas écrire un code qui prends en considération ce qui est demandé dans l'énnoncé

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    mais comme ce que vous avez vu dans l'énnoncé : on aura besoin que de 3 méthodes Adhérent, discipline et test ! tandis que vous, vous parlez d'autres méthodes : club,personne ...
    Au passage...Adherent,Discipline,Test ne sont pas des méthodes mais des classes.
    Ok, je vois que l'objectif de cet exercice n'est rien d'autre qu'une initiation

    Un adhérent n'est rien d'autre qu'une personne avec un code d'identification et une liste de diciplines pratiquées:
    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 Personne {
       private String nom;
       private String prenom;
       private String Adresse;
       private Date dateNaissance;
       ...
    }
     
    public class Adherent extends Personne{
       private String codeIdentification;
       private Vector<Discipline> disciplinesChoisies;
       .... 
    }
    D'autre part Test réalise directement le business du Club.
    Mais bon...dans le stricte cadre de ton exercice on s'en passera...

    Et on écrira une classe:

    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 Adherent {
       /*
        * Données personelles
        */
       private String nom;
       private String prenom;
       private String Adresse;
       private Date dateNaissance;
     
       /*
        * Données pour le club
        */
       private String codeIdentification;
       private Vector<Discipline> disciplinesChoisies;
       .... 
    }

  9. #9
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 42
    Par défaut
    oui pardon se sont des classes

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Voici en gros comment organiser la classe Test.


    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
    83
    84
    85
    86
    87
    88
    89
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Collection;
    import java.util.Vector;
     
     
    public class Test {
     
    	public static BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
    	public static Collection<Discipline> TDisp;
    	public static Collection<Adherent> adherents;
     
    	public static void main(String[] args) {
    		try {
    			Test test=new Test();
    			test.run();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    	public void run() throws IOException {
    		// Encoder les discpline + liste
    		TDisp = Tab_Discipline();
    		for (Discipline discipline:TDisp) {
    			discipline.afficheDiscipline();
    		}
     
    		// Encoder les adhérent + liste
    		adherents = Inscription();
    		AfficheListe();
     
    		// trier les adhérent + liste
    		adherents=Trier();
    		AfficheListe();
    	}
     
    	/*
    	 * 3. Développer dans la classe test le code permettant de saisir la liste des disciplines dans un tableau Tdisp
    	 */
    	public Collection<Discipline> Tab_Discipline()throws IOException	{
    		Vector<Discipline> disciplines = new Vector<Discipline>();
     
    		do {
    		   Discipline discipline=Discipline.saisie_Discipline();
    		   disciplines.add(discipline);
    		   System.out.println("voulez vous ajouter une autre Discipline? (1:oui/0:non)");
    		} while(1==Integer.parseInt(clavier.readLine()));
     
    		return disciplines;
    	}
     
    	/*
    	 * 4.Dans la classe test, écrire une méthode Inscription () qui permet d’inscrire un adhérent et le ranger dans un tableau
    	 */
    	public Collection<Adherent> Inscription() throws IOException {
    		Vector<Adherent> adherents = new Vector<Adherent>();
     
    		do {
    			Adherent adherent=Adherent.Saisie_adherent(); 
    			adherents.add(adherent);
    			System.out.println("voulez vous ajouter un autre adhérent? (1:oui/0:non)");
    		} while(1==Integer.parseInt(clavier.readLine()));
     
    		return adherents;
    	}
     
    	/*
    	 * 5.dans la classe test, Ecrire une méthode Afficheliste () qui permet d’afficher ce tableau.
    	 */
    	public void AfficheListe(){
     
    		for (Adherent adherent:adherents) {
    			adherent.Affi_adherent(); //....
    		}
    	}
     
    	/*
    	 * 6 dans la classe test, écrire une méthode Trier () qui permet de trier ce tableau sur la base du nom de l’adhérent.
    	 */
    	public Collection<Adherent> Trier() {
    		Collection<Adherent> adherentsApresTri=new Vector<Adherent>(adherents);
    		// trier ici adherents par nom
    		// A FAIRE...
    		return adherentsApresTri;
    	}
    }
    Je te laisse réfléchir pour Adherent et Discipline

    A+

  11. #11
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 42
    Par défaut
    pour la méthode de tri() voilà ce que j'ai mis :
    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
    public static void Trier()
    	{int k,nc;
    	Adhérent Adhr=new Adhérent();
    	do{nc=0;
    	    for(k=0;k<Tadhér.size();k++)
    	    {
    		Adhé=(Adhérent)Tadhér.elementAt(k);
    		Adhr=(Adhérent)Tadhér.elementAt(k+1);
    		if((Adhé.get_nomAdh()).compareTo(Adhr.get_nomAdh()>0)
    		  {
    			 Tadhér.setElementAt(Adhé, (k+1));
    			 Tadhér.setElementAt(Adhr, k);
    			 nc++;
    		  }
    	    }
    	}while(nc!=0);
    	System.out.println("La liste des adhérents est maintenent triée !");
    mais lors de l'appelle de cette méthode le programme lève une exception !!!

Discussions similaires

  1. problème avec les vecteur de numpy
    Par anthony.pa dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 14/02/2013, 13h44
  2. problème avec les vecteurs
    Par beloboy dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/06/2012, 13h37
  3. Problème avec les vecteurs Java
    Par choko83 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 22/05/2008, 17h52
  4. Problèmes avec les Vecteurs
    Par alsimb dans le forum C
    Réponses: 8
    Dernier message: 10/02/2007, 10h29
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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