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 :

POO référence et objet


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 29
    Par défaut POO référence et objet
    Bonjour ,

    voila je n ' ai pas trop compris le passage d un livre ou on y fait allusion à la référence d ' un objet.
    Imaginons j ai une classe personne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public class Personne {
    private String nom ;
    private String prenom ;
    private int age 
    ....
    ....
     
    ...}
    Dans la procédure main j ' instancie la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public class testPersonne {
    public static void main (String []args ){
     
    //instanciation objet
    //etape 1
    Personne toto ;
    //etape 2
    toto = new Personne () ;
    }
    }
    je voulais savoir comment se déroule ces étapes et ce qui signifie la référence d ' un objet?
    j ai fait un petit dessin pour qu on puisse mieux m expliquer :
    - lors de l étape 1 il y a un espace memoire qui est alloué et qui contient toto
    -lors de l ' étape 2 il y a reservation de l espace mémoire pour les variables d instance et toto pointe vers ces memes variables.

    merci


  2. #2
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    bonsoir,
    - lors de l étape 1 il y a un espace memoire qui est alloué et qui contient toto
    c'est juste une case mémoire qui contient une adresse nulle au début;

    -lors de l ' étape 2 il y a reservation de l espace mémoire pour les variables d instance et toto pointe vers ces memes variables.
    c'est là que le vrai objet sera crée, new va retourner une référence vers ce bloc mémoire, cette référence va être stockée dans la variable toto;

    ensuite pour accéder aux champs et méthodes de cet objet, on passe par la référence si on veut !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    toto.nom; // marche pas dans le cas de ton code
    toto.prenom;
    toto.definirAge(5);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 230
    Par défaut
    j'ajouterai que pour comparer avec d'autres langage, toto est une sorte de pointeur C vers la mémoire allouée pour l'instance. En Java, les pointeurs sont masqués derrière des références (variables d'instance).

    En assembleur, tu as un espace mémoire alloué aux données de ton objet instancié toto (4 octets consécutifs par exemple) et tu as un autre espace de la mémoire qu'on appelle la pile, qui contient une liste des espaces mémoire d'instance ainsi que leur nom.

    Du coup quand tu cherches l'instance de ton objet que tu as appelé "toto", la machine virtuelle cherche dans la pile l'objet toto, récupère sa référence et ensuite grâce à l'adresse mémoire associée à ce nom, va lire les données de l'objet toto et te les renvoie.

    C'est à très peu de choses près ceci...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 29
    Par défaut
    bonjour,

    donc si j ai compris la référence est toto qui pointe vers l objet défini par les variables d' instances ou méthodes d' instance ?
    quelle est la grande différence avec les variables de types primitifs??

    merci

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    La grosse différence entre un type primitif et un objet, c'est que le primitif se transmet par valeur alors que l'objet se transmet par référence

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 29
    Par défaut
    salut,

    je vous remercie pour vos réponses .

    imaginons dans la procédure main j instancie la classe de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public class testPersonne {
    public static void main (String []args ){
    
    //instanciation objet
    //etape 1
    Personne toto ;
    //etape 2
    toto = new Personne () ;
    Personne tata = toto ;
    }
    }
    on aura donc ici la même référence et donc un même objet avec des valeurs communes des variables d' instance?

    merci

Discussions similaires

  1. [POO] Destruction d'objet et de ses références
    Par Bilhackmac dans le forum Langage
    Réponses: 8
    Dernier message: 15/11/2009, 17h12
  2. [POO] faire réfrence à un objet dynamiquement
    Par penguin50 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/04/2009, 06h25
  3. [POO] Passage d'objet par référence
    Par PinGu- dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2008, 10h23
  4. [POO] Modifier un objet [références]
    Par MorganStern dans le forum Langage
    Réponses: 11
    Dernier message: 04/05/2007, 12h44
  5. [POO] Référence inter objet
    Par drclean86 dans le forum Langage
    Réponses: 2
    Dernier message: 21/01/2007, 18h39

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