Bonjour à tous (et joyeuses fêtes),
j'ai un petit problème de conception (enfin ca ressemble à ca).
Pour mon petit code de client chat en ligne de commande, je cherche à clairement séparer la partie interface (entree et sortie) de la partie gestion de la des communications.
Pour la petite histoire, j'utilise ncurses pour l'interface (j'ai pas trouvé de workaround en C++) et gloox pour la partie XMPP.
Du coup ce que j'aimerai faire:
INPUT -------> PARSER ------> OUTPUT
et PARSER <------> CORE
Je précise que les fleches ne représentent pas de notion d'heritage
Le PARSER traduit les commandes de l'utilisateur (venant de INPUT) et lance des actions (en autres du CORE) et affiche le résultat sur OUTPUT.
Par exemple quand je vais taper la commande /lister_contact dans INPUT, le PARSER sera en charge de reconnaitre la commande et de lancer une fonction membre de CORE pour retourner la liste des contacts à OUTPUT.
Le fait est que je n'ai pas envie que le PARSER soit complétement dépendant d'une implémentation de CORE, je n'ai donc pas envie d'initialiser PARSER avec un objet CORE.
Pour résoudre ceci j'ai pensé à faire hériter ma classe CORE de ma classe PARSER. Je pourrais donc redéfinir les fonctions membres de PARSER dans ma classe CORE.
Ca me fait juste bizarre de voir heriter une classe de l'autre alors que je les vois assez indépendantes.
On m'a aussi proposer d'utiliser des pointeurs de fonction, mais dans tous les cas déclarer un pointeur de fonction sur une fonction membre d'une classe revient à un peu trop lier ma classe et mon pointeur issu d'une autre classe.
Peut être suis-je un peu trop exigeant concernant cette fameuse indépendance entre mes classes et qu'il faut à un moment donné fournir des informations de l'une sur l'autre...
Qu'en pensez vous?
Merci à tous
Partager