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*:
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.
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
L'utilisateur pourrait appliquer ce script à des images avec uneEnvoyé par traitement.txt
commande comme celle-ci:
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.batch-img image_1=fred.jpg image_2=moscou.jpg traitement.txt
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.
Partager