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 :

Récupérer le nom de l'objet créé


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 112
    Points : 55
    Points
    55
    Par défaut Récupérer le nom de l'objet créé
    Bonjour tout le monde

    Disposant d'une classe nommée Personne,
    constituée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	propriétés : matricule, nom, adresse, ....
    	methodes   : afficher(), ....
    la méthode afficher() sert à afficher l'ensemble des propriétés d'une instance.

    je crée quelques instances de cette classe à partir d'une classe principale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Personne p1 = new Personne(....);
    Personne p1 = new Personne(....);
    ...
    .....
    Ce que je cherche à savoir est la possibilité de manipuler (pour affichage ou affectation ou autre) le nom de d'instance (p1, p2, ...) à l'intérieur de la classe, c'est à dire dans le code source de la classe Personne.

    Autrement dit , la méthode afficher() de la classe Personne peut elle être capable d'afficher les noms d'instances qui seront créées ultérieurement
    c'est à dire à l'exécution de
    p1.afficher(), j'aimerais avoir quelque chos comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	1
    	Pierre
    	Paris
    	....
    	p1  (nom de l'instance)
    p2.afficher()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	
    	2
    	Dupont
    	Lyon
    	...
    	p2  (nom de l'instance)

    J'espère que j'ai été claire

    Merci à tous

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Non : dans ton exemple "p1" ne correspond pas au nom de l'instance, mais au nom de la variable qui représente une référence vers un objet. De plus cette référence n'est pas forcément unique...

    Si tu veux donner un nom à ton objet, donne le lui via ses attributs...


    a++

  3. #3
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 112
    Points : 55
    Points
    55
    Par défaut
    Merci adiGuba

    tu veux dire que je dois faire figurer une propriété dans mon objet (à la définition de la classe)
    au même titre que (matricule, nom, adresse, ...) et que j'appellerai par exemple "nom",
    si c'est cela que tu me proposes j'en conclus que ma question n'a pas été claire,

    ce que je veux récupérer c'est bien le nom réél de mon objet (puisque tu dis que ce n'est pas le nom de l'instance)

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Personne p1 = new Personne(...);
    Personne p2 = new Personne(...);
    Personne p3 = new Personne(...);
    ......
    à l'éxécution de ce fragment de programme, il y a bien création de 3 objets distincts en mémoire,
    qui sont de même classe mais ne contiennent pas les mêmes données ! Non ?

    comment je peux récupérer les "p1", "p2", "p3", ... un peu plus loin dans le programme
    afin de pouvoir les afficher, les affecter, les passer en paramètres d'une fonction etc.
    ou peut être que c'est impossible ?

    je ne sais pas si quelqu'un voit ce que je veux dire ?

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    "p1", "p2" et "p3" ne sont pas les noms des objets, mais les noms des références...


    Qu'est ce que tu cherches à faire précisément ???

    a++

  5. #5
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Non ce n'est pas possible de récupérer le nom de la variable, il ne faut pas confondre nom de l'instance (via un attribut "nom" par exemple) et nom de la variable référençant l'instance.
    Et que faudrait-il afficher dans le cas suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Personne p1 = new Personne(...);
    Personne p2 = p1;
    ?
    Ce qu'on fait généralement, dans une méthode toString() (ou paramString() dans Java/AWT/Swing) c'est qq chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String toString() {
       return "matricule=" + matricule + ", nom="  + nom + ", adresse=" + adresse;
    }
    Tu pourrais faire plus loin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("p1=" + p1.toString());
    Par contre, aucune chance par exemple de passer p1 par nom à une méthode.
    Quel est le besoin ?

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Points : 419
    Points
    419
    Par défaut
    comment je peux récupérer les "p1", "p2", "p3", ... un peu plus loin dans le programme
    afin de pouvoir les afficher, les affecter, les passer en paramètres d'une fonction etc.
    ou peut être que c'est impossible ?

    je ne sais pas si quelqu'un voit ce que je veux dire ?
    De ce que je comprend :

    Tu crées une classe ClasseUtilisantDesPersonnes par exemple avec une méthode qui prend en paramêtre une instance de ta classe Personne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void jeFaisUnTrucAvecUnePersonne(Personne p) {
    		if (p.getNom().equals("Dupont")) {
    			p.afficher();
    		}
    	}
    Dans une ta classe principale tu vas pouvoir écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	Personne p1 = new Personne("Dupont", "Jean");
    		Personne p2 = new Personne("Durand", "Pierre");
    		Personne p3 = new Personne("Denis", "Michel");
     
    		ClasseUtilisantDesPersonnes cudp = new ClasseUtilisantDesPersonnes();
     
    		cudp.jeFaisUnTrucAvecUnePersonne(p1);
    		cudp.jeFaisUnTrucAvecUnePersonne(p2);
    		cudp.jeFaisUnTrucAvecUnePersonne(p3);
    Là tu passes bien les références p1, p2, p3 comme arguments d'une méthode.
    Sinon je n'ai pas compris ce que tu cherches à faire...

  7. #7
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 112
    Points : 55
    Points
    55
    Par défaut
    Merci beaucoup nu_tango pour ta réponse :

    apparemment tu as deviné ce que je n'arrive toujours pas à exprimer,

    ton exemple m'interesse si ce n'est ce petit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (p.getNom().equals("Dupont"))
    qui me pose problème, en effet, hormis le fait qu'il me génére erreur de compilation je ne vois pas à quoi il servirait même s'il était compilé avec succès

    je serais plutot plus interessée par quelque chose comme
    c'est à dire, je vérifie si l'objet passé en paramètre est bien "p1"

    au lieu de chercher à savoir si l'objet passé en paramètre est celui qui contient le nom="Dupont" comme tu m'as l'air de vouloir me l'expliquer dans ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (p.getNom().equals("Dupont"))
    Alors ! est ce possible ?

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Je ne veux pas trop m'avancer mais tu pourrais redéfinir ta méthode compareTo() dans ta classe personne et ainsi lui dire:

    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
    31
    /** Compare l'objet paramètre à l'objet courant suivant le critère
             * donné. 
             * @param obj L'objet à comparer à) l'objet courant.
             * @return Un entier négatif si l'objet courant précède l'objet
             *              un entier positif s'il 
             *              le suit; 0 si les deux objets sont égaux pour le critère
             *              donné.
             */
    	@Override
    	public int compareTo(ObjetOrdonne obj, int critere)
    	{
    		Personne pers = (Personne) obj ;
    			return comparerNomPrenom(pers) ;
    	}
     
    	/*________________________________________________________*/
    	/** Compare deux personnes suivant le nom. en cas d'égalité, 
             * la comparaison continuera sur les prénoms.
             * @param pers La personne à comparer à la personne courante.
             * @return Un entier négatif si l'objet courant précède l'objet
             *              paramètre pour le critère donné; un entier positif s'il 
             *              le suit; 0 si les deux objets sont égaux pour le critère
             *              donné.
             */
    	private int comparerNomPrenom(Personne pers)
    	{
    		int comp = nom.compareTo(pers.nom) ;
    		if (comp==0)
    			comp = prenom.compareTo(pers.prenom) ;
    		return comp ;
    	}

  9. #9
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    @Isabella : expliques nous ce que tu veux faire exactement, et pas comment tu penses le faire !

    Quel est ton objectif exact ?

    Car là ça part dans tous les sens...


    a++

  10. #10
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Points : 419
    Points
    419
    Par défaut
    Bonjour,

    Ma classe Personne ressemble à ça :

    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
    31
    public class Personne {
     
    	private String nom;
    	private String prenom;
     
    	public Personne(String nom, String prenom) {
    		this.nom = nom;
    		this.prenom = prenom;
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
    	public String getPrenom() {
    		return prenom;
    	}
     
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
     
    	public void afficher() {
    		System.out.println(this.nom + " " + this.prenom);
    	}
     
    }
    La méthode getNom() est une méthode permettant de retourner ici le nom de l'utilisateur.

    Mais le mieux serait, comme l'a signalé à juste titre adiGuba, que tu nous dises exactement ce que tu veux faire et nous montrer ton code.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/09/2011, 18h54
  2. [XL-2003] récupérer le nom d'un objet
    Par olhey dans le forum Excel
    Réponses: 1
    Dernier message: 08/07/2009, 07h27
  3. Récupérer le Nom de l'objet Actif
    Par Freiya dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 17/12/2007, 18h36
  4. Réponses: 5
    Dernier message: 10/05/2007, 13h31
  5. [POO] Récupérer le nom d'un objet ?
    Par beastman007 dans le forum Langage
    Réponses: 2
    Dernier message: 13/03/2007, 14h11

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