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 :

Créer deux instances d'un même objet


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Symfony2
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Symfony2

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Créer deux instances d'un même objet
    Bonjour,

    J'ai développé une classe Voiture qui a comme attribut un tableau, et j'ai créé une instance par voiture V = new voiture();. J'ai modifié le tableau, après je voulais créer une autre instance par voiture V2 =V;, mais à chaque fois que je modifie V2, V aussi se modifie.

    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    "Objet" et "Instance" désigne la même chose.

    Les déclarations Voiture v = new Voiture(); et Voiture v2 = v; définissent deux "variables" pointant vers le même objet (ou même instance, si tu préfères).
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Symfony2
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Symfony2

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre réponse,
    mais comment je peux crée deux variable qui pointe vers deux objet différent mais égaux !!!

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    tu dois définir un constructeur ou une méthode qui construira la nouvelle instance de sorte qu'elle soit égale à l'ancienne.

    Exemple :

    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
    public class Voiture {
      int nbRoues;
     
      /** Constructeur normal */
      public Voiture() {
        nbRoues = 4;
      }
     
      /** Constructeur de copie */
      public Voiture(Voiture v) {
        nbRoues = v.nbRoues;
      }
     
      public static void main(String... args) {
        Voiture v1 = new Voiture();
        v1.nbRoues = 3;
        System.out.println(v1.nbRoues);
        Voiture v2 = new Voiture(v1);
        System.out.println(v2.nbRoues);
        v1.nbRoues = 4;
        System.out.println(v1.nbRoues);
        System.out.println(v2.nbRoues);
      }
    }
    C'est un exemple simplifié. Plus tard tu préféreras utiliser une méthode qu'un constructeur. Possiblement la méthode clone(). Mais il faut d'abord apprendre la base avant d'aller plus compliqué.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par safa_2512 Voir le message
    mais comment je peux crée deux variable qui pointe vers deux objet différent mais égaux !!!
    En fait tout dépend de ce que tu entends par égalité.

    Pour avoir un nouvel objet, il faut nécessairement passer par un new. Tu peux, comme indiqué par Thelvin, utiliser un "constructeur de copie" ou bien la méthode "clone". Mais tu peux aussi recopier les valeurs dans n'importe quel méthode tant que les attributs (ou leurs accesseurs/mutateurs) sont accessibles.

    Citation Envoyé par safa_2512 Voir le message
    J'ai développé une classe Voiture qui a comme attribut un tableau.
    ATTENTION, lorsque l'on traite la recopie, il faut bien réfléchir à ce que l'on souhaite faire des références stockées, et plus particulièrement les structures de données (tableau, liste, dictionnaire, etc.).
    Un tableau c'est une référence qui peut soit contenir d'autres références, soit des valeurs (pour les types primitifs). Si tu recopies la référence (sans créer de nouveau tableau), la modification du tableau via une voiture aura un impact sur l'autre (et inversement !)
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Symfony2
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Symfony2

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    merci pour vos réponse j 'ai utilisé du constructeur et ça marche

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

Discussions similaires

  1. comment créer deux instances d'une même base de données
    Par Dev_info dans le forum Administration
    Réponses: 5
    Dernier message: 19/03/2008, 18h59
  2. Deux instances avec le même nom.
    Par Denn's dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/03/2008, 09h09
  3. Réponses: 11
    Dernier message: 30/06/2007, 04h34
  4. Plusieurs instances d'un même objet
    Par speedster dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/12/2006, 11h46
  5. Réponses: 2
    Dernier message: 09/06/2006, 19h34

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