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 :

Déclaration de variable


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Par défaut Déclaration de variable
    Salu, j'ai un peu honte de poser cette question, mais je cherche une réponse claire, car pour moi c'est un flou
    A quoi sert de declarer une variable de type Classe
    1) j'ai
    public class CalendrierCadre extends JFrame{
    ....}

    2) j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class BoutonJour extends JButton{
     
     private CalendrierCadre pere;
     
    public BoutonJour(CalendrierCadre pere) {
         // définition du lien de parenté
         this.pere = pere;
    Cooment expliquer private CalendrierCadre pere;
    meri et pardon pour la question

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Par défaut
    Bonjour,

    J'ai un peu de mal à comprendre ta question.
    Ta classe BoutonJour peut avoir des attributs et des méthodes, les attributs peuvent être des primitives (int, double, etc...) ou des objets (String, CalendrierCadre, ...).
    Désolé si je réponds à côté.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Par défaut
    voici le code
    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
     
    public class BoutonJour extends JButton{
     
     private CalendrierCadre pere;
     
     public BoutonJour(CalendrierCadre pere) {
         // définition du lien de parenté
         this.pere = pere;
     
         this.addActionListener(new java.awt.event.ActionListener()  {
            public void actionPerformed(ActionEvent e) {
              affiche();     //appel de la méthode affiche      
            }
          }
        );
      }
     
     //Méthode appellant une méthode de la classe CalendrierCadre
      public void affiche() {
         pere.selectedOnClic(this);
      }
    }
    je voulais savoir pourquoi on declare la classe CalendrierCadre comme une variable?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Citation Envoyé par alex68 Voir le message
    je voulais savoir pourquoi on declare la classe CalendrierCadre comme une variable?
    On déclare pas CalendrierCadre comme une variable.
    On déclare le membre de classe "pere" de type CalendrierCadre.

  5. #5
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Ben c'est le principe de la POO.

    Des objets "complexes" sont construit à l'aide d'objets plus simples, des briques de base quoi

    ex :

    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
    class UnObjetSimple {
     
    String s = "abc";
    int i = 0;
     
    }
     
    class UnObjetComplexe  {
     
     String s = "def";
     UnObjetSimple o1 = new UnObjetSimple();
     UnObjetSimple o2 = new UnObjetSimple();
    }
     
    // etc ...
    Ca te permet de réutiliser du code :
    1. Tu n'as pas à réécrire plein de fois le même bout de code
    2. Si tu dois maintenir ton code tu fais tes modifs à un seul endroit


    Je sais pas si ça t'aide à comprendre ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Par défaut
    ok, c'est un peu plus claire, merci,
    mais par exemple j'ai une classe Produit avec des variables
    private String nom
    private String etat

    avec des methode get et set

    dans un autre classe j'ai besoin de ces meme variables
    j'ai fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private Produit prod;
     
    Class prix(String nom, int prix)
    {
    this.nom=prod.getNom();
    ..
     
    }
     
    public void setNom(String nom) {
            this.nom = prod.getSetnom(nom);
        }
    ca marche pas , comment je dois faire

  7. #7
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    bon je comprends pas ta question.

    déjà, conceptuellement un produit a un prix. Pas l'inverse.

    Tu peux avoir par 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
    25
    26
    27
    28
    29
    30
    class Prix {
     
     private double valeur = 0d;
     
     public Prix(double val) {
        valeur  = val;
     }
     
     public double getPrix() { return prix;}
     public void setPrix(double val) { valeur = val;} 
    }
     
    class Produit{
      private String nom;
      private String etat;
      private Prix prix;
     
      public Produit(String nom, String etat, double prix) {
          this.nom = nom;
          this.etat = etat;
          this.prix = new Prix(prix);
      }
     
      // ou encore
     public Produit(String nom, String etat, Prix prix) {
          this.nom = nom;
          this.etat = etat;
          this.prix = prix;
      }
    }
    Mais bon c'est un exemple un peu nul, car ce n'est pas la peine d'avoir une classe prix ici.

    Quand tu dis que ça ne marche pas ... ça veut dire quoi ?

    [EDIT] évidemment le code que tu as mis au dessus ne compile pas car il faut déclarer tes membres à l'intérieur de la classe. Mais je suppose que c'est une faute de frappe ?

  8. #8
    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
    Il faut passer la référence à l'objet dans la classe (éventuellement dans le constructeur, ou alors par un setter)
    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
     
    public class MaClasse1
    {
       private String nom;
       private String prenom;
       ... getter/setter
    }
     
    public class MaClasse2
    {
       private MaClasse1 classe1;
       private int autreInfo;
       private String libelle;
    ...
       public MaClasse2(MaClasse1 classe1)
       {
          super();
          this.classe1 = classe1;
       }
    ...
       public int getUneInfo()
       {
          String tmp = "";
          // Ne pas oublier que classe1 pourrait être null...
          if ( classe1 != null ) tmp += classe1.getNom() + " " + classe1.getPrenom();
    ...
       }
    }
    J'espère que cet exemple t'aidera à comprendre...
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Par défaut
    merci ,c'est exactement ce que je cherchais, merci, mais est ce une erreur de reprendre dans classe2 les variables de la classe 1
    sans passer par la classe 2
    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 MaClasse1
    {
       private String nom;
       private String prenom;
       ... getter/setter
    }
     
    public class MaClasse2
    {
       //private MaClasse1 classe1;
    private String nom;
    private string prenom;
       private int autreInfo;
       private String libelle;
    ...
     
    }
    je sais que ca fonctionne car c'est ce que j'ai fait, mais est ce admis, ou tout a fait incorrect

  10. #10
    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
    C'est totalement admis
    Prend le cas d'une classe qui définirait un cercle :
    - elle comprend une classe Point (représentant le centre)
    - elle comprend également une propriété rayon

    Mais la définition d'un Point peut également être utilisée dans une classe Carre, ou Triangle etc...

    Dans l'optique d'une spécialisation des objets, tu arrives forcement à ce genre d'encapsulation... (L'idéal serait de passer par des Interfaces ici)

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

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Par défaut
    ok, merci, cela répond a mes questions

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

Discussions similaires

  1. déclaration de variable public
    Par mathieu57 dans le forum MFC
    Réponses: 5
    Dernier message: 15/09/2005, 17h36
  2. [DB2] Ordre de déclaration des variables
    Par Fatah93 dans le forum DB2
    Réponses: 1
    Dernier message: 04/05/2005, 17h18
  3. déclaration de variables de 16, 32 et 128 bits
    Par samipate dans le forum C++
    Réponses: 10
    Dernier message: 30/12/2004, 22h33
  4. [FLASH MX2004] Déclaration de variables sous flash mx
    Par softyClochette dans le forum Flash
    Réponses: 4
    Dernier message: 29/11/2004, 16h11
  5. [debutant][Portée] Déclaration de variable .....
    Par Slein dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 10h43

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