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 existentielle


Sujet :

C++

  1. #1
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut Question existentielle
    bonsoir voila j'ai un truc qui me trotine dans la tête: je dispose d'une classe avec dedans un tableau (privé) d'objet (des objets de même type qui sont une classe en fait) comment acceder a ces objets sans enfreindre l'encapsulation???

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class A
    {
      private:
        vector<int> vect;
      public:
        vector<int>       &get_vect()       { return vect; }
        const vector<int> &get_vect() const { return vect; }
    };
    Ca repond à ta question?

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par Charlemagne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        vector<int>       &get_vect()       { return vect; }
    Ceci est une rupture complète d'encapsulation.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    heu en fait j'ai oublié de preciser...mon prof veut pas qu'on utilise std ou mfc ou koi ke ce soit en fait ma classe resemblerais plutot a ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    classe B
    {
    public:
    ...
    private:
    ...
    objet_A* tab;
    };

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const type & getObj(int index) const { return tab[index]; }
    type getObj(int index) const { return tab[index]; }

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    heu en fait j'ai oublié de preciser...mon prof veut pas qu'on utilise std ou mfc ou koi ke ce soit
    tu adaptes...

    Ceci est une rupture complète d'encapsulation.
    Je ne suis pas (entièrement) d'accord.
    En extrapolant tes dires, toute autre fonction accedant au contenu d'une classe serait également une rupture de l'encapsulation.
    L'essentiel pour moi, c'est que l'utilisateur ne soit pas obliger de connaitre le (vrai) type des données membres, du moment qu'il applique les bonnes fonctions sur celles ci.
    Dans mon exemple, la fonction get_vect aurait pu faire autre chose que de renvoyer une simple référence si les données avait été codées différemment.
    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
     
    class A
    {
      private:
        vector<int> vect;
      public:
        vector<int>       &get_vect()       { return vect; }
        const vector<int> &get_vect() const { return vect; }
    };
     
    class A
    {
      private:
        int v0,v1,v2;
      public:
        vector<int> get_vect() const { vector<int> V(3); V[0]=V0; V[1]=V1; V[2]=V2; return V; }
    };
     
    class A
    {
      private:
        int *p;
        size_n n;
      public:
        vector<int> get_vect() const { vector<int> V(n); ... return V; }
    };

  7. #7
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    heu...charlemagne a qui tu parle la??? quelqu'un a edité mon post a mon insu???
    Code :
    const type & getObj(int index) const { return tab[index]; }type getObj(int index) const { return tab[index]; }
    heu...ce que tu propose la bigboomshakala c'est l'operateur crochet...( en supposant que mon tableau ne soit plus privé ) c'est pas tres "esthetique" ...

  8. #8
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par jadey
    bonsoir voila j'ai un truc qui me trotine dans la tête: je dispose d'une classe avec dedans un tableau (privé) d'objet (des objets de même type qui sont une classe en fait) comment acceder a ces objets sans enfreindre l'encapsulation???
    ça répond pourtant à la question...

    c'est pas tres "esthetique"
    ah ? et depuis quand ?

  9. #9
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    oui oui effectivement ça repond a mon probleme mais bon...c'est tiré par les cheveux comme soluce autant rendre le tableau public merci quand meme c'est pour ta solution que j'opte

  10. #10
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par jadey
    c'est tiré par les cheveux comme soluce
    ce n'est pas tiré par les cheveux, c'est un bête accesseur/getter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     autant rendre le tableau public
    non. l'accesseur GetToto te permet d'atteindre l'élément n, mais ne dévoile pas la structure. tu peux utiliser un tableau, un pointeur, un vecteur, un switch (cas 1 je renvoie var41, cas 2 je renvoie var7 ...) ou ce que tu veux qui peut être indexé.

  11. #11
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3

  12. #12
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    heu...j'arrive plus a trouver l'onglet "marquer comme resolu" depuis que l'interface du forum a changé...

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    En haut à droite, menu "Outils de la discussion".

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

Discussions similaires

  1. Question existentielle, choix entre...
    Par ndsaerith dans le forum Delphi
    Réponses: 13
    Dernier message: 21/02/2007, 11h28
  2. Petite question existentielle (hum hum)
    Par Emplyst dans le forum Langage
    Réponses: 33
    Dernier message: 06/07/2006, 12h37
  3. Question existentielle : les commentaires
    Par ®om dans le forum Langage
    Réponses: 1
    Dernier message: 08/06/2006, 00h20
  4. Question existentielle : Que signifie X dans MAC oS X?
    Par oOoOuuhmAn dans le forum Apple
    Réponses: 8
    Dernier message: 03/04/2006, 11h37

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