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

Langage Java Discussion :

utiliser une classe comme une variable ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 277
    Par défaut utiliser une classe comme une variable ?
    Salut à tous !

    Peut on traiter une classe Java comme si elle est une variable ?

    Exemple : je créer la classe Personne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Personne {
    	public String nom;
    	public int age;
    	public Personne(String nm,int a){
    		this.nom=nm;
    		this.age=a;
     
    	}
    }
    Ensuite je crée une classe Employé là ou je traite la classe précédemment crée comme si elle est une variable Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Employé {
    public Personne P;
    public String job;
    public Employé(Personne per,String job){
    this.P=per;
    this.job=job;
    }
     
    public void afficher(){
    System.out.println("Le nom de l'employé est "+this.P.nom);	
    System.out.println("L'age l'employé est "+this.P.age);
    System.out.println("La fonction de  l'employé est "+this.job);
    }
    Je l'ai essayé en faisant une instanciation sur les deux classes et ça marche, je ne sais pas si cela fais une partie du langage Java ou non ? Est cela causera des problèmes par la suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Personne per=new Personne("Robert",37);
    	Employé emp=new Employé(per,"Enseignant");
    	emp.afficher();
    Merci de me fournir plus de renseignement sur ce genre de procédure ! Est ce que ça existe en Java ! Ou bien je dis des bêtises !

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Je ne suis pas certain d'avoir cerné ta problématique. Bien sur qu'il est possible de référencer des classes entre elles. Ton exemple n'est pas nécessairement le meilleur exemple car je ne vois pas en quoi une classe Employé a besoin d'une classe Personne. Dans ton cas, il aurait été peut être plus logique que toutes classes Employe soit une sous-classe de la superclasse Personne ou implémente l'interface Personne pour avoir quelque chose de ce genre :
    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
    public class Personne {
            public String nom;
    	public int age;
     
    	public Personne(String nom,int age){
    		this.nom=nom;
    		this.age=age;
     	}
    }
     
    public class Employe extends Personne {
          String job;
     
          public Employe(String nom, int age, String job) {
                super();
                this.job = job;
          }
    }
    Si l'on considérait le job comme une classe en elle-même comme une classe à parti entière et non un String, on aurait quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Employe extends Personne {
          Job job;
     
          public Employe(String nom, int age, Job job) {
                super();
                this.job = job;
          }
    }
    Avec une déclaration semblable à ce que tu as précisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          Job j = new Job("MonTravail");
          Employe e = new Employe("Dupont", 29, j);
    On peut donc référencer des classes entre elles en Java. C'est même un des principes de base du langage et de la pensée objet.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    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
    Citation Envoyé par Robin56 Voir le message
    ... car je ne vois pas en quoi une classe Employé a besoin d'une classe Personne. Dans ton cas, il aurait été peut être plus logique que toutes classes Employe soit une sous-classe de la superclasse Personne ou implémente l'interface Personne pour avoir quelque chose de ce genre :
    Ben non, une personne peut avoir plusieurs job, donc il est normal que la classe Job référence une personne.
    Avec ton extends, ça obligerait à multiplier les informations de la même personne pour chacun de ses job... pas top
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ben non, une personne peut avoir plusieurs job, donc il est normal que la classe Job référence une personne.
    Effectivement, j'étais partis du principe mono job. Dans tout les cas, ça ne change pas la réponse à te faire concernant ta question en elle-même young077.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  5. #5
    Membre éclairé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 277
    Par défaut
    Merci pour vos réponse !

    Je voulais juste savoir si on peut utiliser une classe comme si elle était une variable !

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Petit rappel de base:

    = les variables, les champs et les paramètre permettent de stocker une donnée d'un type déclaré à la compilation. Ces types peuvent être:

    une valeur de base (int, long, char, boolean, float, double)
    une référence une instance


    = une classe est un patron permettant de créer des instances du type de la classe. Une classe contient des méthodes et une déclaration sur les champs devant se trouver dans l'instance

    = une instance est un objet en mémoire, qui a un type (la classe) et des données (les valeurs des champs)

    Donc, non, tu ne peux pas utiliser une classe comme une variable, exprimé ainsi ça n'a pas de sens. Par contre tu peux, c'est normal et c'est totalement ce que tu dois faire, déclarer des variables ou des champs qui stockent des références et y stocker des valeurs.

Discussions similaires

  1. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  2. utiliser des classes dans une classe
    Par dsant dans le forum C++
    Réponses: 4
    Dernier message: 10/03/2008, 16h22
  3. comment utiliser un programme comme une fonction dans une macro exel
    Par ERICKO dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2007, 23h39
  4. utiliser les attribut d'une classe dans une autre classe
    Par kaissaoui dans le forum Langage
    Réponses: 11
    Dernier message: 18/07/2007, 15h13
  5. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34

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