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

Contribuez C++ Discussion :

[Article][C++] Système d'appel de méthodes à partir de leur nom (std::string)


Sujet :

Contribuez C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 104
    Par défaut [Article][C++] Système d'appel de méthodes à partir de leur nom (std::string)
    Bonjour,

    J'ai commencé à écrire un article sur un système permettant d'«*exporter*» des méthodes d'une classe de manière à pouvoir les appeler en passant leur nom et leurs paramètres sous forme de chaînes de caractères. J'ai implémenté ce système mais je me perds dans la rédaction*; je ne sais pas dans quel ordre présenter les éléments.

    L'intérêt de ce système est justifié dans une situation où les méthodes et données sont entrées par l'utilisateur. Par exemple, imaginons un logiciel de traitement d'image en gros, nommé batch-img, pour lequel la classe d'image propose ces opérations classiques*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class image
    {
    public:
      /* Applique une rotation d'angle a à l'image, autour du centre aux
         coordonnées (cx, cy). */
      void tourner( double a, int cx, int cy );
     
      /* Retourne l'image horizontalement. */
      void miroir();
     
      /* Copie l'image img sur l'image courante, à la position (x, y). */
      void copier( image* img, int x, int y );
     
    }; // class image
    On aimerait utiliser ce logiciel en ligne de commande pour effectuer des traitements sur des images. En particulier, on aimerait que l'utilisateur puisse écrire des petits scripts comme celui ci-dessous, qu'il passerait au programme.

    Citation Envoyé par traitement.txt
    image_1 miroir
    image_2 tourner 18.6 24 -16
    image_1 copier image_2 700 30
    image_1 miroir
    L'utilisateur pourrait appliquer ce script à des images avec une
    commande comme celle-ci:

    batch-img image_1=fred.jpg image_2=moscou.jpg traitement.txt
    J'ai fait deux implémentations, une simple où les paramètres des méthodes exportées ne peuvent être constants, ni des pointeurs ou des références, et une autre un peu plus compliquée où ces types sont autorisés.

    Le système peut paraître lourd à mettre en place, mais lorsque le cœur est écrit, il suffit d'une seule ligne par méthode pour permettre de l'appeler par son nom. De plus, l'export ce fait dans l'environnement de la classe exportée. Ainsi, lorsqu'une nouvelle méthode est exportée, il n'est pas nécessaire de retrouver une fonction de conversion dans un fichier éloigné et elle est immédiatement accessible à l'utilisateur.

    J'aimerais avoir vos commentaires et vos conseils pour la rédaction et la forme de l'article. Est-ce que le sujet vous semble pertinent*? Est-ce que la technique vous semble correcte*?

    De plus, j'ai implémenté ceci sans savoir si cela existait et j'aimerais savoir si ça correspond à quelque chose de connu.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/03/2015, 11h06
  2. Réponses: 10
    Dernier message: 15/05/2012, 23h42
  3. Appel une méthode à partir d'une ActionForm
    Par barchoui dans le forum Struts 1
    Réponses: 7
    Dernier message: 28/12/2008, 21h03
  4. Réponses: 7
    Dernier message: 01/02/2008, 16h12
  5. Appel d'une méthode à partir d'un nom de méthode
    Par tnarol dans le forum Langage
    Réponses: 20
    Dernier message: 07/03/2007, 17h46

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