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 :

creation de deux objet simultanes


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut creation de deux objet simultanes
    Re bonjour, j ai re une question

    Je dois creer deux objets afin de pouvoir comparer certaines de leurs valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Layer_object {
    	static String layer_name= new String();
    	static String layer_type =new String();
     
            public  Layer_object(Element layer){
    		layer_name = layer.getAttributeValue("name");
    		layer_type = layer.getAttributeValue("type"); 
       }
    }
    Ces valeurs sont contenues dans des balises et attributs Xml

    Mais lorsque je cree mes deux objets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Layer_object layer_courant_ref = new Layer_object(list1.get(k));
    System.out.println(layer_courant_ref.layer_name())
     
    Layer_object layer_courant_itf = new Layer_object(list2.get(l));
    System.out.println(layer_courant_ref.layer_name());
    Lors du premier System.out, la veleur de "layer_courant_ref.layer_name()" est correct mais lors du second System.out, mon "layer_courant_ref.layer_name()" a la valeur de mon deuxieme objet. Je ne peux donc pas les compqrer puisque layer_courant_ref.layer_name() = layer_courant_ref.layer_name()
    alors qu ils devraient etre different.

    Pourquoi lors de la creation de mon deuxieme objet, celui ci ecrase les valeurs du premier ?

  2. #2
    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 delta07 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Layer_object layer_courant_ref = new Layer_object(list1.get(k));
    System.out.println(layer_courant_ref.layer_name())
    		
    Layer_object layer_courant_itf = new Layer_object(list2.get(l));
    System.out.println(layer_courant_ref.layer_name());
    Si j'ai bien suivi c'est ça que tu veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Layer_object layer_courant_ref = new Layer_object(list1.get(k));
    System.out.println(layer_courant_ref.layer_name())
    		
    Layer_object layer_courant_itf = new Layer_object(list2.get(l));
    System.out.println(layer_courant_itf.layer_name());

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pourquoi tes attributs sont-ils définis en static ?

    a++

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    C'est très simple, tu déclares des attributs static. Autrement dit, ils sont communs à toute ta classe, donc quelle que soit l'instance que tu utilises, ça sera les même valeurs.

    Peut-être voulais tu simplement dire qu'une fois instanciées, ces valeurs ne doivent pas changer ? Auquel cas le mot-clé à utiliser est final.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut
    ok je viens de changer static en public.J ai encore beaucoup de mal avec toutes ces notions.
    J avais mis static pour avoir les getters et les setters car mon prof m avais appris comme ca :/
    Je n ai certainement pas tout compris

    Cependant pourquoi mettre "final"?
    si j ai bien compris :
    static => si la valeur change quelque part, elle changera pour tous les objets
    public => une valeur (differentes) par objet, accessible a tous
    final => ? (valeur jamais modifiable ? une constante ?)

    Sinon merci de votre aide, une fois de plus je dormira moins niais ce soir

  6. #6
    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
    @adiGuba : bien vu j'avais pas fait gaffe au static

    @delta07 :
    Le final signifie que tu ne pourras plus modifier la référence après l'instanciation. Pour une chaine on peux effectivement assimiler ça à une constante.

    Tu te trompes pour public, rien avoir avec static et/ou final, public signifie je peux voir/accéder à l'attribut de n'importes où (regardes dans la FAQ je crois que c'est assez bien expliqué)

  7. #7
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Petit rappel sur ces notions importantes :
    static => Variable qui n'est instanciée qu'une fois quelque soit le nombre d'instances de la classe. Cette valeur est commune à toutes les instances.

    public => Variable accessible depuis la classe elle meme (avec this->maVariable), par les heritiers de la classe (avec this->maVariable) et par n'importe quelle autre classe (avec instance.maVariable)

    protected => Variable accessible depuis la classe elle meme (avec this->maVariable), par les heritiers de la classe (avec this->maVariable) mais pas par n'importe quelle autre classe (instance.maVariable ne marche pas)


    private => Variable accessible depuis la classe elle meme (avec this->maVariable) pas par les heritiers de la classe (this->maVariable ne marche pas) et pas par n'importe quelle autre classe (instance.maVariable ne marche pas)

    final => Variable qui ne peut etre modifiée que dans le constructeur de la classe.

    A noter que private/protected/public soit exclusifs mais que chacun peut etre additionné à static et/ou final.

    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/06/2009, 16h39
  2. Problème pour faire bouger deux objets simultanement
    Par LinuxUser dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 22/04/2007, 23h19
  3. Réponses: 5
    Dernier message: 08/01/2006, 23h42
  4. [vector] Partager une même variable entre deux objets.
    Par Ekinoks dans le forum SL & STL
    Réponses: 18
    Dernier message: 25/08/2005, 20h40
  5. Afficher deux objets superposés C++ Builder 6
    Par nicoistia dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/03/2004, 15h09

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