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

Java Discussion :

[Stratégie] Générer des noms de variables


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut [Stratégie] Générer des noms de variables
    Bonsoir !

    J'aimerais pouvoir générer un nombre de variables inconnus.
    Par exemple, la variable affiche1, la variable affiche2, affiche3 ... etc

    J'ai beau cherché, je ne trouve pas et je me casse la tête la dessus !

    Donc si vous avez une suggestion de code à me proposer !!
    Je note que mes variables seront des objets d'une classe que j'aurais créer auparavant.

    Merci encore !

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Et pour cause tu ne peux pas.........
    Par contre tu peux parfaitement uriliser un tableau ou une ArrayList pour générer nu nombre de variables "aléatoires" et acéder à celle que tu veux....
    ++

  3. #3
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Dans ton cas, une ArrayList serait très bien.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut
    Oui je y avais pensé, mais le problème, ce que mes variables sont en fait des objets d'une classe que j'ai crée.
    Et les tableaux et liste ne passe pas : il me met un message du genre : cannot convert [].. on MaClasse..

    :s

  5. #5
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 19
    Par défaut
    Et du côté de la Hashmap ? Ya pas un embryon de solution ?

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    Citation Envoyé par Rekiem
    Oui je y avais pensé, mais le problème, ce que mes variables sont en fait des objets d'une classe que j'ai crée.
    Et les tableaux et liste ne passe pas : il me met un message du genre : cannot convert [].. on MaClasse..

    :s
    Peut tu nous preciser le code que tu as essayé ?
    Parce que je vois pas pourquoi une collection ne correspond pas a ton besoin !!

  7. #7
    Membre expérimenté Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut
    Citation Envoyé par Rekiem
    Oui je y avais pensé, mais le problème, ce que mes variables sont en fait des objets d'une classe que j'ai crée.
    Et les tableaux et liste ne passe pas : il me met un message du genre : cannot convert [].. on MaClasse..

    :s
    Effectivement, si ton tableau est typé tu peux avoir des problèmes de cast.
    Mais si tu prends, comme le suggère BiMouXeTTe, une ArrayList, tu peux mettre ce que tu veux comme types d'objet dedans !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut
    Trés bien je vous dis a peu prés ce que j'ai niveau code :

    une classe mere Equipement avec des variables sans constructeur, méthode... :
    String nom;
    char etat;
    Internetprotocol ip = new Internetprotocol();

    une classe fille Ordinateur (extends Equipement) avec une variable int port; et rien d'autre(pas de constructeur, ni de méthode...)

    Je vais devoir créer un certain nombre d'objet Ordinateur mais je ne connais pas le nombre.

    Si je fais : Ordinateur ordi1 = new Ordinateur(); C ok !

    mais j'ai voulu faire ca avec un tableau :
    Ordinateur ordi[i] = new Ordinateur;
    Et la c'est l'erreur que j'ai présenté plus haut !

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il faut que tu commence par déclarer ton tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ordinateur tabOrdi[] = new Ordinateur[taille]
    puis que tu ajoute les ordis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabOrdi[i] = new Ordinateur

    Par contre ve que tu ne connais a priori pas le nombre d'ordis à l'avance, tu pourrais tirer avantage d'une ArrayList

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<Ordinateur> listeOrdi = new ArrayList<Ordinateur>()
    Puis ajouter les ordis de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeOrdi.add(new Ordinateur()

    Par contre attention a ton code, il est quasi interdit d'utilise des variables publiques dans une classe (notion d'encapsulation...) donc il va au minimum falloir que tu code des accesseurs

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    Citation Envoyé par Rekiem
    Ordinateur ordi[i] = new Ordinateur;
    En java tu crés ton tableau (avec une taille puis tu l'utilises...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Ordinateur[] ordis = new Ordinateur[N];
    ordis[i] = new Ordinateur();
    Mais ta taille serais fixe donc il faudrait que tu utilise une Liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List ordis = new ArrayList();
    ordis.add(new Ordinateur(), i);

  11. #11
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Bonjour à tous :o

    Et pourquoi pas un vecteur ?
    Problème de cast ?

    ...parce qu'au niveau des méthodes d'accès, c'est pas mal quand même.

  12. #12
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Les vecteurs sont déconseillés car plus mal géré un truc comme ca. On m'avait expliqué, mais je me rappelle plus trop la raison.

    ArrayList fais quasiment la même chose et est très bien.

  13. #13
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    Citation Envoyé par BiMouXeTTe
    Les vecteurs sont déconseillés car plus mal géré un truc comme ca. On m'avait expliqué, mais je me rappelle plus trop la raison.

    ArrayList fais quasiment la même chose et est très bien.
    Il y a une histoire de synchonisation je crois aussi, Vector est synchronisée donc dans des cas précis elle sera plus adéquate...

  14. #14
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En fait l'utilité des veteurs se retrouve dans les environnement multi threads majoritairement (ceci étant dû à la synchronisation) donc tout dépend de comment est conçue l'appli, en particulier si elle utilise des threads qui doivent accéder à une même ressource, dans ce cas là mieux vau utiliser des Vector, sinon mieux vaut prendre des List pour le gain de vitesse

  15. #15
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Ah ok merci pour l'info

    Mais c'est vrai qu'au niveau performance, ce n'est sans doute pas ce qu'il y a de mieux...

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut
    Sinok a dit : "Par contre attention a ton code, il est quasi interdit d'utilise des variables publiques dans une classe (notion d'encapsulation...) donc il va au minimum falloir que tu code des accesseurs"

    Pourquoi est ce interdit ? et qu'est ce que des acesseurs ?

  17. #17
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En fait c'est une des bases de la prog orientée objet: l'encapsulation des classes, majoritairement pour des raisons de sécurité (on ne va permettre à tout objet d'accéder aux valeurs d'un autre).
    Donc si tu veux accéder à certains attributs d'une classe depuis l'extérieur tu peux contourner le problème des variables privées en utilisant des méthodes(appelées accesseurs ou encore getters and setters) qui auront pour but de te permettre la récupération ou la modification (dans les limites de ce que tu veux) de la valeur privée de ton objet

    Voilà, pour en savoir un peu plus dégotte toi un bon bouquin de programmation orientée objet ou un bon cours sur le net y t'est parti
    ++

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut
    D'accord, donc par exemple au lieu de déclarer dans une classe Equipement :
    et dans Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Equipement equip1 = new Equipement();
    equip1.nom ="ordinateur1";
    equip1.id = 10;


    je devrais plutot écrire :
    dans Equipement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private String nom;
    private id;
     
    public class equipement(String nom, int id) {
             this.nom = nom;
             this.id = id;
    }
    et dans main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Equipement equip1 = new Equipement("salut",30);
    C'est bien ca ?

  19. #19
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Par exemple, d'ailleurs les attributs nom et id dans ta classe mets les en private

    Pour ce qui est des accesseurs, il te suffit de rajouter ce genre de méthodes dans ta classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void setNom(String nom) {
      this.nom = nom;
    }
     
    public int gertId() {
      return this.id;
    }

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 67
    Par défaut
    Ok, merci bien, et ton bout de code est pratique lorsque tu a besoin de modifier les variables de l'objet à n'importe quel moment du programme.

    Maintenant une question à propos des listes, je n'ai pas trouvé de réponse dans les faqs et autres :
    Comment accède t'on à un élèment particulier de la liste pour pouvoir le modifier (par exemple si c'est une liste d'objet), l'afficher.. ?

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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