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

Java Discussion :

Instance de classe et une classe ?


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2006
    Messages : 193
    Points : 85
    Points
    85
    Par défaut Instance de classe et une classe ?
    bonjour,
    j'ai pas bien saisie la différence entre une classe et instance d'une classe
    pour quoi à ton besoin de faire 1 copie de classe ?
    une autre question, qu'est ce qu'une variable membre statique ?
    Merci d'avance

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Citation Envoyé par WhiteTigerZ Voir le message
    j'ai pas bien saisie la différence entre une classe et instance d'une classe
    Supposons que tu définisses une nouvelle classe, "Chaise"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class Chaise {
     
    }
    Tu as 1 classe Chaise. Tu l'as définie, elle existe, elle est là. Ça ne changera pas.

    Maintenant, pour t'asseoir toi et tes amis, tu as besoin de 4 chaises, tu vas donc créer 4 instances de la classe Chaise. Chaque instance est créée avec le mot-clé new.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Chaise chaiseMarc = new Chaise();
    Chaise chaisePatrick = new Chaise();
    Chaise chaiseMichel = new Chaise();
    Chaise chaiseDavid = new Chaise();
    Tu as 4 instances de la classe Chaise. Tu peux en créer d'autres, et tu peux les "oublier" quand tu n'en as plus besoin.

    Citation Envoyé par WhiteTigerZ Voir le message
    pour quoi à ton besoin de faire 1 copie de classe ?
    Je ne crois pas qu'il y ait besoin de faire une telle chose. Je ne sais pas ce que c'est qu'une "copie de classe".

    Citation Envoyé par WhiteTigerZ Voir le message
    une autre question, qu'est ce qu'une variable membre statique ?
    La FAQ en parle un peu.

    Normalement, une variable membre, c'est une variable dont chaque instance de la classe, chaque objet, a une version indépendante. Si dans ma classe Chaise j'ajoutais une variable Personne personneAssise, chaque chaise différente a sa propre personne assise dessus, et l'une peut changer de personne assise dessus, sans que les autres chaises du monde soient concernées.

    Une variable statique, c'est différent : la variable statique ne s'applique non pas aux instances de la classe, mais à la classe elle-même. Il n'y en a qu'une. Les différentes instances de Chaise, et en fait le monde entier, voient la même. Si elle change, elle change pour tout le monde.
    On pourrait ajouter à ma classe Chaise les variables membres suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Chaise {
      // Toutes les chaises servent à s'asseoir.
      // C'est lié au concept de chaise. Quand on parle d'une chaise,
      // on pense à un meuble qui sert à s'asseoir, sans penser à une chaise précise.
      public static final String UTILISATION = "S'assoir";
     
      // Chaque chaise dans le monde a une personne différente assise dessus.
      public Personne personneAssise;
    }
    À noter que c'est pareil pour les méthodes et les classes imbriquées. Par défaut elles ne sont pas statiques et donc s'appliquent à une instance précise. On a besoin d'une instance pour indiquer de laquelle on se sert.
    Mais avec le mot-clé static on indique qu'elles s'appliquent indépendamment des instances de la classe. Il n'y a pas besoin d'instance pour indiquer qu'on s'en sert, il suffit de nommer la classe elle-même.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2006
    Messages : 193
    Points : 85
    Points
    85
    Par défaut
    Merci beaucoup pour votre réponse

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    une classe est un code (suite d'instructions) definit la structure d'un objet.

    un objet est une structure de données comme les enregistrements mais il contient des chomp pour stocker les donnes et des methodes pour gerer ces donnes.

    objet= un execution d'une classe (un representation en memoire).

    mais mois j'ais une question concernant les methodes
    supposant qu'on a la classe suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class method
    {
    int a=4;
    int b=8;
     
    //la methode aa
     
    int  aa()
    { return a+b;}
     
    }

    et qu'on a deux instances(objet) M1 et M2 por cette classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    metod M1 =new method();metod M2 =new method();
    puisqu'une methode est un code est ce que pour chaque instance la methode aa est recopier comme un champ de l'objet ou une seul copie reste dans la classe, sinon comment differencier les donnes gerer par la methode aa (M1.a,M2.a...)
    merci

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Ça ne servirait à rien de recopier les méthodes -_-°.
    Il suffit, quand on les appelle, de les appliquer à la bonne instance.

  6. #6
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    les méthodes, quelles qu'elles soient, font partie de la structure de classe. Une instance n'occupera en mémoire que les données et une référence vers sa classe. Sinon je vous laisse imaginer les consommation effrayant de mémoire qu'on ferait. Une classe contenant 2 int (4 octets donc) + 2ko de bytecode pour ses méthodes. On occuperai 200M de mémoire pour stocker 100.000 paires d'entiers? Alors qu'en pratique 2M suffisent amplement?

  7. #7
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Autant dire que si c'était le cas, les languages objets n'auraient jamais eu de succès...

Discussions similaires

  1. [VBA] [CLASS] accès à une classe d'une autre base
    Par gsilber dans le forum Contribuez
    Réponses: 5
    Dernier message: 29/02/2016, 12h38
  2. Réponses: 8
    Dernier message: 16/02/2007, 15h55
  3. [POO] Une Classe dans une Classe. C'est possible?
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2006, 22h02
  4. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  5. Une classe dans une classe...
    Par Baquardie dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2005, 19h36

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