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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    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
    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 confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    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 296
    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 éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    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 : 45
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    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
    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 éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    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 : 45
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    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 éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    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 : 45
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    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 confirmé

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3

  12. #12
    Membre éprouvé

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

+ 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