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 :

Utilisation de toutes les instances d'une classe dans un while


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut Utilisation de toutes les instances d'une classe dans un while
    Bonjour, je rencontre un problème dans l'élaboration d'un projet sur un système de pompe à essence.

    J'ai une classe système avec une méthode afficher_menu_gerant(). Je crée un objet Notre_systeme.

    De l'autre côté j'ai une classe Carburant avec notamment des attributs quantité (int) et Type de carburant (String). Les instances sont "SP95", "SP98" ... les qtés sont toutes à 1000.

    Lorsque je fais appel à ma méthode Notre_systeme.afficher_menu_gerant(), j'aimerais obtenir l'affichage de tous les types de carburants avec leur quantité ...

    J'ai pensé à un Vector, mais je n'arrive pas à le passer dans ma méthode en arguments ... J'ai aussi pensé à un compteur statique de la classe Carburant mais je ne vois pas comment m'en servir (c'est à dire, a parti d'un compteur, appeler un objet de la classe Carburant ).

    Les classes n'ont pas de relations de parentés ...

    Merci d'avance de votre aide !

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Hello,

    question de concept...

    Tu dois connaitre toutes les instances d'une classe? Il faut donc quelque part stocker une liste d'instances de cette classe. Utilise l'interface java.util.List et ses implémentations java.util.ArrayList, java.util.LinkedList, etc...

    Maintenant, lors de la création des objets Essence, ajoute les à la liste. Tu pourras les récupérer par la suite via leur index:

    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
     
    import java.util.*;
     
    class C {
      private static List<Essence> list;
      private static void creerEssence {
        list=new ArrayList<Essence>();
        Essence e = new Essence("SP95", 1000);
         list.add(e);
        e = new Essence("SP98", 1000);
         list.add(e);
        e = new Essence("SP100", 1000);
         list.add(e);
      }
     
      public static void main(String[] arg) {
        // Création des essences dispos
        creerEssence();
     
        // Affiche le contenu de la liste
        for(Essence e:list) {
          System.out.println(e);
        }
     
        // Récupère l'essence numéro 2 (SP100)
        Essence e = list.get(2);
      }
    }
     
    class Essence { /* plein de code */ }
    Il y aurait d'autres manières plus élégantes et plus compliquées de faire ça, par exemple via le pattern Factory, mais je ne pense pas que cela soit indispensable dans ton cas


  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    Merci de ta réponse, j'ai réfléchit entre temps à une autre solution.

    Lorsque j'initialise mes carburants, à l'aide d'une méthode du type initialisation("nom",qté) dans ma classe main, je rentre les informations que je voulais conservé dans deux tableaux statiques de mon objet système que je peux ensuite utiliser sans problème dans ma méthode afficher_menu_gérant(), puisque dans la même classe. Le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static String[] Liste_nom_carburant;
    {
    	// Contient la liste des noms de carburants
    	Liste_nom_carburant = new String[25];
    }
     
    public static Float[] Liste_qte_carburant;
    {
    	// Contient la liste des quantités de carburants
    	Liste_qte_carburant = new Float[25];
    }
    Qu'en pensez vous ? Et avez vous une astuce pour créer un tableau dynamique (c'est à dire où je n'aurai pas besoin de spécifier sa taille). Car je n'ai pas réussi à faire fonctionner mon programme sans spécifier les tailles des tableaux.

    Merci

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Pour les tableaux dynamiques il faut utiliser ArrayList.

    Pour la conception j'aurais préféré créer une classe style ConsomationCarburant contenant les propriétés nom et quantité, et faire un tableau de cette classe. C'est plus facile de gérer un seul tableau dont chaque élément est complet, que deux tableaux qu'il faut coordonner. Question de goût.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    J'ai suivi vos conseils/remarques pour utiliser plutôt Arraylist, et un nouveau problème se pose pour moi :

    J'ai définit deux Arraylist consécutivement pour modéliser ma station essence :

    Système => Plusieurs Cuves
    Cuves => Plusieurs pompes.

    Pour accèder à la pompe, je dois donc utiliser :

    Systeme.Liste_Cuve.get(X).Liste_pompe.get(Y).....

    J'ai voulu créer une méthode get_pompe(x,y) pour me simplifier la vie de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static Object get_pompe(int c, int c1){	
    		return Systeme.Liste_cuve.get(c).Liste_pompe.get(c1);
    	}
    En sachant que j'ai essayé à la place de Object de mettre ArrayList<Pompe> et ArrayList, mais cela ne marche pas ... Pouvez m'indiquer ce qui ne va pas ?

  6. #6
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Beaucoup de choses me paraissent étonnantes dans ce que tu fais. Qu'est-ce que tu utilises comme doc pour te former ? Dans quel contexte fais-tu tout ça ?

    Pour en revenir au sujet, comment as-tu déclaré tes Systemes et Cuves ?

Discussions similaires

  1. WMI : Nom de toutes les instance d'une classe
    Par Chachane dans le forum C++
    Réponses: 1
    Dernier message: 02/07/2010, 15h34
  2. comment trier les instances d'une classe selon un attribut choisi
    Par rddev dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/05/2007, 00h01
  3. Accéder à toutes les instances d'une classe
    Par MrGecko dans le forum Delphi
    Réponses: 15
    Dernier message: 14/05/2007, 00h50
  4. Utilisation de Tout les champs d'une table
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/07/2006, 20h55
  5. Connaitre toutes les instances d'une classe
    Par miniseb dans le forum Langage
    Réponses: 14
    Dernier message: 09/01/2006, 17h35

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