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

 C++ Discussion :

question sur les classe pour intancier un objet ?


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Points : 149
    Points
    149
    Par défaut question sur les classe pour intancier un objet ?
    Hello

    Quelque chose m'échappe concernant les classes.

    comment je cré une copie d'un objet sans écraser les ancienne valeurs

    genre j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    classe cree_joueur {
    public :
     bool ma_methode();
    private:
     bool variable_couleur_blue
    }
    Donc l'appelle pour le joueur1
    Dans ma methode je change la valeur de variable_couleur_blue a true
    et donc je renvoiye la valeur de cette variable via la méthode

    Je veux appller a nouveau pour un autre joueur: joueur2
    La variable de variable_couleur_blue sera écrasée et donc remis a false par defaut, j'usque là c'est normal

    mai ensuite
    Comment je ré-acès aux 1 er joueur avec ma méthode car la variable est celle du joueur 2 ??

    c'est la fonction applante qui devrai retenir le paramètre pour chaque joueur ?
    Ou c'est dans la classe que cette valeur peux être retrouvée ?

    si c est la procédure appelante sa suppose que la valeur est stoquée a 2 endroit donc sa va rapidement devenir lourd.
    si c est dans la classe sa n'a plus besoin d'être reporter et c'est plus léger (et a mon avis plus lisible)

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 611
    Points
    30 611
    Par défaut
    Salut,

    Ce que tu essaie d'expliquer n'est pas très clair, mais, en gros, il semble que tu aies oublié que les classes et structures ne font que... définir un type de donnée, tout comme int, char ou float représentent des types.

    Si donc tu as deux variable de type joueur déclarées sous la forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Joueur joueur1;
    Joueur joueur2;
    chaque variable dispose de sa propre "copie" des différents membres que tu as déclarés dans la classe.

    Si donc tu modifie un des membres de joueur1, tu ne modifie absolument pas celui de joueur2
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    Merci pour ta réponse
    tu as vu justes, mai justement comment le joueur 1 peut il garder sa copier sans écraser les valeur du joueur2 ?

    car si on as
    un variable en commun : couleur_de_la_carte = bleu et donc on initialise:
    joueur1 --> couleur_de_la_carte = bleu
    joueur 2-->couleur_de_la_carte = rouge

    sachant que couleur_de_la_carte est stoquée dans une classe
    le chemin qui quelque soit le joueur va appler la variable: couleur_de_la_carte


    on a donc bien 1 variable dans la classe.
    mai après comment je stock ça de manière individuel par joueur?

    Je passe par valeur l'objet joueur1/2 qui reçois en retour un argument supplémentaire qui est couleur_de_la_carte et donc comme c est par référence j'ai acès a la nouvelle valeur

    mai a ce moment la il n'y a pas besoin de crée une classe.
    je peux directement faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    main ()
    {
     
    int joueur1=1;
    int joueur2=2;
     
    couleur_de_la_carte=bleu(bleu vaux 1)
    joueur1=couleur_de_la_carte;
     
     
    couleur_de_la_carte=rouge(rouge vaux 0)
    joueur2=couleur_de_la_carte;
    }
    et joueur2 ecrase la variable du joueur1

    donc c est la que je comprend pas.
    c'est comme si couleur_de_la_carte était une variable global

    Merci de me lire

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Citation Envoyé par panthere noire Voir le message
    tu as vu justes, mai justement comment le joueur 1 peut il garder sa copier sans écraser les valeur du joueur2 ?
    car chaque instance possède sa propre zone mémoire où sont les valeurs de ses attributs.

    Citation Envoyé par panthere noire Voir le message
    sachant que couleur_de_la_carte est stoquée dans une classe
    Non. Elle est lié à un objet, à une instance de la classe. Les différentes instances ont des variables différentes.

    Citation Envoyé par panthere noire Voir le message
    le chemin qui quelque soit le joueur va appler la variable: couleur_de_la_carte
    A l'extérieur de la classe, il faut mentionner l'objet concerné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Joueur j1;
    j1.couleur_de_la_carte = blue;
    Joueur j2;
    j2.couleur_de_la_carte = red;// pas le même objet !
    Dans une fonction de la classe, tu ne retrouves pas explicitement l'objet concerné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void Joueur::une_fonction()
    {
        couleur_de_la_carte = green; // mais à qui est couleur_de_la_carte ?
    }
    En fait, tu as bien été obligé d'appeler la fonction avec un objet. Donc, d'une façon ou d'une autre, tu as bien un contexte spécifique pour chaque instance. En fait, il existe une variable implicite qui t'indique pour quel objet une fonction se déroule : il s'agit de this.


    Citation Envoyé par panthere noire Voir le message
    c'est comme si couleur_de_la_carte était une variable global
    Je pense que tu devrais lire un tuto, un cours ou un livre sur l'approche objet. Car là, manifestement, tu ne maitrise pas le concept et par conséquent tu te poses des questions qui ont peu de sens. Jettes un coup d'oeil au début de Penser en C++, par exemple.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    Merci pour ta réponse, je m'était un peux mélanger les pinceaux a force d'avoir le nez dans les livres

    sujet résolut

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

Discussions similaires

  1. question sur les classes "static"
    Par Asmod_D dans le forum C++
    Réponses: 4
    Dernier message: 05/04/2009, 18h27
  2. Questions sur les classes.
    Par Lartiste007 dans le forum Débuter
    Réponses: 4
    Dernier message: 05/04/2009, 15h46
  3. Questions sur les classes.
    Par DarkSeiryu dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/02/2009, 10h21
  4. Un question sur les classes
    Par willycat dans le forum C++
    Réponses: 10
    Dernier message: 22/08/2008, 18h55
  5. Questions sur les classes en C#
    Par greg2 dans le forum C#
    Réponses: 11
    Dernier message: 05/11/2007, 20h57

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