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 :

Regroupement en un type


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 38
    Points : 40
    Points
    40
    Par défaut Regroupement en un type
    Bonjour,

    je voudrais savoir s'il est possible de créer un type d'objet regroupant plusieurs types d'objets même si ceux-ci n'ont aucun attributs communs. Et si oui comment faire.

    Merci

  2. #2
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Points : 158
    Points
    158
    Par défaut
    c'est un truc du genre que tu veux 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    class Objet_A{
    private:
       int m_toto;
       ...
     
       Objet_A(){m_toto=0;};
    }
     
     
    class Objet_B{
    private:
       int     m_tata;
       float  m_gege;
     
       Objet_B(){m_tata=0;m_gege=0;};
    }
     
     
    class Objet_regroup{
    private:
        Objet_A  m_objA;    //appelle constructeur Objet_A()
        Objet_B  m_objB;
     
        Objet_regroup()
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 38
    Points : 40
    Points
    40
    Par défaut
    hum pas tout à fait puisque la classe regroupante sera soit un objet soit un autre. En fait c'est comme si j'avais une classe truc qui pourrait être soit un objet de type montre ou soit un objet de type scotch (alors que scotch et motre n'ont rien de commun).

  4. #4
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    tu parles du principe des unions

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

    Informations professionnelles :
    Activité : aucun

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

    Il y a plursieurs possibilités pour faire ce que tu veux...

    En gros, tout tient dans un terme "conception"

    L'une des solution est de te dire que "un élément contient des informations de type montre et de type scotch"...

    Une simple agrégation peut alors suffir sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class MonType
    {
        /*...*/
        scotch  m_s;
        montre  m_m;
    };
    Sinon, tu peux aussi te dire que "un élément est tout à la fois du type scotch et du type montre", parce que l'élément en question a "toutes les caractéristiques" de ce qui fait "une montre" et "du scotch" (bon, ici, il faudra quand meme chercher ce que ca peut être :p) car le C++ autorise l'héritage multiple.

    Tu peux donc créer un type "MontreScotch" sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class MontreScotch : public montre, public scotch
    {
        /*...*/
    };
    et, si le type montre et le type scotche ont des membre dont le nom est commun (ex: prix), tu devra préciser si tu souhaite avoir le prix venant de montre ou celui venant de scotch sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void MontreScotch::fonction()
    {
        /* accede au prix de montre*/
        type pm = montre::prix;
        /* accede au prix de scotch */
        type ps = scotch::prix;
    }
    Maintenant, il est souvent préférable de voir s'il n'y a pas moyen de créer une interface commune, dont les différents types pourraient hériter, et qui te servirait de base pour le polymorphisme

    Ainsi, une classe Vendable pourrait faire l'affaire sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Vendable
    {
        public:
        /* les méthodes communes à scotch et à  montre */
        private:
        /* les membre communs à scotch et à montre, parmis lesquels */
        float prix_vente;
    };
    scotch et montre hériteraient de Vendable selon le principe que "scotch a toutes les caractéristiques qui font qu'il est vendable" (et idem pour montre) sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class scotch : public Vendable
    {
        /*...*/ 
        /*méthodes et membres propres à du scotch */
    };
    class montre : public Vendable
    {
        /*...*/ 
        /*méthodes et membres propres à du scotch */
    };
    et, quand tu dois faire cohabiter les deux, tu les considère comme étant... des vendables sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    std::vector<Vendable*> tab;
    /* ajoute un nouveau scotch */
    tab.push_back(new scotch(/*...*/);
    /* ajoute une nouvelle montre */
    tab.push_back(new montre(/*...*/);
    /* accede aux méthode de Vendable pour le scotch et pour la montre*/
    tab[1]->methode1();
    tab[2]->methode2();
    ou méthode1 et méthode2 sont des fonctions éventuellement redéfinies pour être polymorphiques
    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

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 38
    Points : 40
    Points
    40
    Par défaut
    Merci pour votre aide

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

Discussions similaires

  1. Regroupement de modalités type caractère
    Par cococmoi dans le forum SAS Base
    Réponses: 19
    Dernier message: 10/04/2013, 10h15
  2. Regrouper des champs de même type dans la même table
    Par Marsupilami23 dans le forum Développement
    Réponses: 9
    Dernier message: 15/06/2011, 13h53
  3. Réponses: 14
    Dernier message: 10/02/2011, 10h05
  4. Regroupement par type de client et nombre de commandes
    Par pruvel dans le forum Langage SQL
    Réponses: 17
    Dernier message: 25/01/2011, 09h41
  5. Type Monétaire et requête regroupement
    Par FooL dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/06/2008, 16h47

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