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 :

questions générales sur pointeurs et classes/objets


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut questions générales sur pointeurs et classes/objets
    salut tous,
    je ne suis pas très à l'aise avec les pointeurs sur objets, les classes... du coup j'ai besoin d'une confirmation sur l'utilisation des pointeurs sur objets/classes afin de bien débuter ma programmation.
    voici tout d'abord des éléments généraux sur mon futur programme
    1°) mon programme contient une classe principale "Princip"
    2°) une methode de cette classe va faire appel à des "objets principaux" d'autres classes "o_p1, o_p2, o_p3" qui eux même peuvent faire appel à d'autres "objets/classes secondaires" "o_s1, o_s2, o_s3" pour recupérer des données
    voici ce que je compte faire et mes questions
    3°) Dans "Princip" declarer en attribut des pointeurs sur objets "*o_p1, *o_p2, *o_p3, *o_s1, *o_s2, *o_s3" afin que mes objets n'appartiennent pas à la classe "Princip" (et donc être accessibles facilement à partir d'un autre endroit que cette classe "Princip" ?)
    4°) Dans une methode de la class principal lorsque je voudrais utiliser des méthodes des 'o_p' je devrais bien faire ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    o_p1->methodeObjetP_1();
    5°) à présent je veux modifier des attribut de l'objet1 et pour cela j'ai besoin d'attributs des objets secondaire "o_s2 oS_3", je dois donc faire comme ceci pour appeler la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    o_p1->methodeModifAttributObjetP_1(&o_s2,&oS_3);
    avec ce prototype ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    methodeModifAttributObjetP_1(o_s2*,oS_3*);
    ainsi dans la methode je pourrais obtenir des attribut des objets "o_s2 oS_3" en faisant ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    *o_s2->get_attribut1();
    *o_s3->get_attribut9();
    6°) si je veux qu'une methode d'une classe me renvoi un double il faut que je fasse ceci ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double mondouble=*o_p2->returnNombre();
    Dernier chose à propos de la "declaration" des objets
    au depart de mon code (dans le main) je vais mettre une fonction qui compte le nombre de systemes que je dois étudier et en fonction de ceci je devrais générer "n" objets et faire des calculs similaires sur les "n" objets.
    7°) pour la déclaration de mes objets de la classe principale je devrais donc faire un vecteur de pointeurs d'objets (dans le constructeur) comme ceci?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int n=0;n<nbSystemes;n++
    {
    monVectorObjet.push_back(new *objetSystemeIndiceN);
    }
    et dans le destructeur ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int n=0;n<nbSystemes;n++
    {
    delete monVectorObjet[n];
    }
    8°) si je veux copier les caractéristiques de tous les objets du vecteur dans des objets d'un autre vecteur (de meme taille) il faudra que je fasse ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monvectorObjet1=monVectorObjet2;
    j'espere que vous pourrez me repondre à toutes ces questions car je ne suis pas certains d'avoir tous saisi et je ne peux pas actuellement essayer. Je vous remercie d'avance pour votre aide

    EDIT:
    pour la 7°) il faut que je mets ceci dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vector<MaClass*> nomVector;

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 704
    Points
    2 704
    Par défaut
    Citation Envoyé par BdidB Voir le message
    5°) à présent je veux modifier des attribut de l'objet1 et pour cela j'ai besoin d'attributs des objets secondaire "o_s2 oS_3", je dois donc faire comme ceci pour appeler la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    o_p1->methodeModifAttributObjetP_1(&o_s2,&oS_3);
    avec ce prototype ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    methodeModifAttributObjetP_1(o_s2*,oS_3*);
    Non. Dans l'appel, il faut te débarrasser des esperluettes, car tes deux arguments sont déjà des pointeurs.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par oodini Voir le message
    Non. Dans l'appel, il faut te débarrasser des esperluettes, car tes deux arguments sont déjà des pointeurs.
    ah d'accord! merci

    => sinon le reste ça te parait bien ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 704
    Points
    2 704
    Par défaut
    Non. Tout le reste est faux. :-)

    Réfléchis déjà à ma correction, et suite à la prise de conscience de ton incompréhension, relis la suite.

  5. #5
    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,
    J'ai l'impression que tu as choisi d'utiliser des pointeurs et des allocations dynamiques sans t'être au préalable posé la question de la durée de vie des objets des uns par rapport aux autres (peut-on avoir un p1 mais pas de s1 ?), du type de relations entre eux (composition, agrégation, simple association), de savoir s'il est plus pertinent de les allouer sur la pile, le tas ou statique... Pourquoi vouloir copier des vecteurs ? Je ne suis pas persuadé que des pointeurs et des allocations dynamiques soient forcément la bonne solution ou encore qu'il n'y ait pas un besoin d'agrégation. Que sont les pi et les si ? Quelles relations entretiennent-ils entre eux ? Quel est le rôle de princip ?

    A mon avis, repose ta conception sans te soucier des pointeurs et des allocations dynamiques. Cette techniqu sera peut être une implémentation de ta conception ... ou pas.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    salut
    Citation Envoyé par 3DArchi Voir le message
    J'ai l'impression que tu as choisi d'utiliser des pointeurs et des allocations dynamiques sans t'être au préalable posé la question de la durée de vie des objets des uns par rapport aux autres (peut-on avoir un p1 mais pas de s1 ?)
    c'est totalement vrai en fait je n'avais pas pensais à ceci.
    => en fait je pensais que les objets etaient effacés qu'à la fin du programme automatiquement et en meme temps (sauf si je fais un delete entre temps mais je n'ai pas prevu d'en faire sauf dans le destructeur)

    => a priori un "o_p" à forcement des objets secondaires "o_s"
    => qu'es ce que ça changerait sinon?

    Citation Envoyé par 3DArchi Voir le message
    du type de relations entre eux (composition, agrégation, simple association), de savoir s'il est plus pertinent de les allouer sur la pile, le tas ou statique...
    oulala ça me dit rien ces choses, ça fait longtemps et j'ai dû oublié (ou peut etre jamais su)
    => composition ? => agregation ? => simple association ?
    => allouer sur la pile ? tas statique....

    Citation Envoyé par 3DArchi Voir le message
    Pourquoi vouloir copier des vecteurs ?
    car en fait je fais des calculs sur un objet et ensuite je verifie si il respect certains critere, si oui alors je valide mon calcul en copier dans l'autre objet
    si non je refait les calculs avec d'autres parametres...

    Citation Envoyé par 3DArchi Voir le message
    Je ne suis pas persuadé que des pointeurs et des allocations dynamiques soient forcément la bonne solution ou encore qu'il n'y ait pas un besoin d'agrégation. Que sont les pi et les si ? Quelles relations entretiennent-ils entre eux ? Quel est le rôle de princip ?

    A mon avis, repose ta conception sans te soucier des pointeurs et des allocations dynamiques. Cette techniqu sera peut être une implémentation de ta conception ... ou pas.
    en fait je n'ai pas vraiment assez de recule, j'ai choisi les pointeurs car je veux que mon programme ramme le moins possible et prennent le moins de place en memoire.
    apres l'allocation dynamique je ne sais pas trop, je l'ai fais car j'ai l'impression que lorsqu'on fait des pointeurs sur objet on est obligé de faire des allocations dynamiques
    (peut etre car le contenu des attribut peut varier par exemple les vecteurs contenu dans mes objets peuvent grandir...)
    => par contre je ne comprends pas ce que tu appel l'agregation

Discussions similaires

  1. [LDAP] Questions générales sur LDAP
    Par guiguisi dans le forum Autres SGBD
    Réponses: 5
    Dernier message: 25/05/2005, 11h05
  2. questions générales sur Java Web Start
    Par Shiryu44 dans le forum JWS
    Réponses: 12
    Dernier message: 11/04/2005, 16h33
  3. question générale sur les conteneurs
    Par tut dans le forum C++
    Réponses: 6
    Dernier message: 01/09/2004, 11h11
  4. Question générale sur les affectations ?
    Par Clemaster dans le forum C++
    Réponses: 5
    Dernier message: 09/08/2004, 18h03
  5. Question simple sur la libération des objets
    Par gibet_b dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2004, 11h01

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