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 :

[Conception] Traits, RTTI & méta-classes


Sujet :

C++

  1. #1
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut [Conception] Traits, RTTI & méta-classes
    Je viens de tomber sur ce post intéressant :

    http://www.developpez.net/forums/sho...ghlight=typeof

    (certains se reconnaîtrons )

    Voilà ma question : existe il une différence fondamentale entre les Traits (purement des structs ?) et l'implémentation d'un concept de Méta-Class (purement des classes) ?

    J'ai vraiment l'impression que les 2 notions sont trés proches, voir même que l'une englobe l'autre ...

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    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 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Qu'appelles-tu "meta-class" ?

    Si tu veux parler des politiques, c'est effectivement très proche, mais utilisé dans un contexte un chouilla différent. Tu as le bouquin d'Andrei Alexandrescu (Modern C++ Design) qui parle de cela (le premier chapitre est dispo en ligne IIRC), et aussi le bouquin sur les templates de Jossutis et Vandervoorde (dont j'ai encore très certainement écorché le nom).

  3. #3
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Meme question que Luc au sujet des meta-classes.

    Les traits, c'est essentiellement un idiome qui permet de rassembler une serie de parametres template en un seul (tout comme l'introduction d'une struct permet de rassembler une serie de parametre en un seul pour un appel de fonction).

  4. #4
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Par méta-classe j'entend une classe dont les méthodes servent à gérer des notions beaucoup plus proche du design OO que des besoins métier.

    Exemples de méthodes dans une méta-classe :
    - instanciation à partir d'une string donnant le nom de la classe
    - typeof()
    - typenameof()
    - ischildof()
    - inheritsfrom()
    - clonage
    - introspection
    ...

    La liste peut être trés longue.
    Donc j'ai vraiment l'impression que les traits est cette notion de méta-classe sont trés proches l'une de l'autre.

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    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 282
    Points : 11 036
    Points
    11 036
    Par défaut
    OK. Non. C'est quand même bien différent. Disons que c'est une (des) technique qui s'applique, parfois, pour mettre en oeuvre certaines fonctionalités (/apports) des meta-classes (selon ta "définition").

    Il y a des techniques de méta-programmation qui permettent d'obtenir une info ou une autre. Elles tournent pour la plupart (en thême avec tes points) autour du SFINAE (Subtitution Failure Is Not An Error, si je me souviens bien) (-> détection statique des liens de parenté)

    Rajouter :
    - factories pour le premier point ; les structures de traits et autres polices peuvent apporter quelque chose -- décider si on passe par new, par un allocateur lié à une API bien précise, ...
    - l'huile de coude (ou éditeur évolué) + idiomes pour le clonage
    - des petits trucs pour l'introspection statique (moitié structures de traits (ex.: est_un_pointeur), moitié SFINAE (ex.: est_inserable_dans_un_flux(Prévoir un compilo excessivement récent pour ce test précis)))

    Les structures de trait, c'est pour attacher des infos à des types. Les polices attachent en plus des comportements. Et cela s'étend assez bien: une bibliothèque a besoin d'un nouveau type d'information => on rajoute une nouvelle structure de traits.

  6. #6
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Depuis le temps que je ne me suis pas repenché sur les astuces de conceptions et de langages C++, je me dis qu'il est temps de m'y remettre.
    J'en étais resté à la STL et GO4 début des templates, smartptr, iterators & algos, vers l'année 2000. J'ai vraiment l'impression que depuis les pratiques se sont enrichies et standardisées. En tout cas ça peut rendre la vie un peu plus facile dans certaines situations.

    Je ferais surement l'achat des livres cités plus haut ils m'ont l'air trés intéressants, même s'il va falloir que j'agrandisse ma bibliothèque (trop de livres, j'arrive pas à les recycler ).

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

Discussions similaires

  1. [Conception] Création d'un méta-site en PHP
    Par schpice dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/12/2007, 10h36
  2. Réponses: 18
    Dernier message: 25/11/2007, 14h35
  3. Réponses: 16
    Dernier message: 16/07/2007, 09h52
  4. [Conception] passage de parametres dans classe anonyme
    Par taillooo dans le forum Langage
    Réponses: 5
    Dernier message: 07/06/2007, 22h30
  5. Réponses: 10
    Dernier message: 05/05/2007, 18h05

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