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 entr�es/sorties �l�gantes et solides


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    Coll�gien
    Inscrit en
    Mars 2003
    Messages
    192
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activit� : Coll�gien

    Informations forums :
    Inscription : Mars 2003
    Messages : 192
    Par d�faut conception entr�es/sorties �l�gantes et solides
    Salut,

    J'ai une petite question de conception, j'aimerais savoir ce qu'il est coutume de faire.

    J'�cris un programme (console) qui est constitu� de l'interaction de plusieurs objets, les uns avec les autres (comme tout le monde quoi).

    Les param�tres utilisateur visant � initialiser le programme sont contenus dans une fichier d'input "input.txt", c'est un fichier ascii, mais peu importe...

    Les param�tres contenus dans ce fichier d'input concernent diff�rents objets dans le programme...

    Perso je serais tent� de coder une classe qui fasse l'interface d'entr�e de mon programme et dont une instance va lire et stocker les param�tres entr�s dans le fichier input. Cette instance serait ensuite pass�e en param�tre des constructeurs des diff�rents objets du programme, qui iront piocher, via les accesseurs, les param�tres qui les concernent.

    Ca me semble bien car en faisant �a, je s�pare bien la vie de mes objets, de ce qui fait l'interface d'entr�e de mon programme.

    N�anmoins, il y a une in�l�gance dans ce truc, li�e � la redondance de certaines variables... qui sont � la fois des membres de ma classe d'input, et des membres de mes divers objets.

    Est-ce qu'il y a une fa�on de faire qui soit reconnue ?


    Merci

  2. #2
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Salut,
    Ne serait-ce pas d'un DP Builder dont tu as besoin ?

    Autre chose, pour t'�viter l'�criture laborieuse d'un parser de fichier de config, il y a Boost.Program Option.

  3. #3
    Membre confirm�
    Homme Profil pro
    Coll�gien
    Inscrit en
    Mars 2003
    Messages
    192
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activit� : Coll�gien

    Informations forums :
    Inscription : Mars 2003
    Messages : 192
    Par d�faut
    Vais voir la page wikipedia et je reviens... �a m'a l'air d'�tre un peu l'artillerie lourde comme m�thode, du point de vue de mon petit projet :-)

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Salut

    Meuh non ne t'en fais pas, ce n'est pas tr�s lourd un design pattern.

    Ne t'en fais pas trop pour cette redondance l� : tu peux cr�er tes objets (avec le pattern monteur comme sugg�r� par 3DArchi, par exemple) et d�truire ensuite celui qui t'as permis de lire le fichier. De cette mani�re, le(s) monteur(s) n'aura(ont) pour dur�e de vie que l'initialisation du programme, ce qui est coh�rent avec le r�le que tu veux lui donner.

    Je valide �galement Boost.ProgramOption qui est facile � utiliser et tr�s pratique.

  5. #5
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Bonjour,

    sur ce sujet, moi j'ai opt� pour une solution que j'ai appel� Registry (qui n'a -presque- rien � voir avec la base de registre de windows).
    3DArchi, le "DP builder" dont tu parles ne serait-ce pas plut�t le factory?
    Quant � boost, effectivement c'est l'artillerie lourde. C'est un peu abus� de se taper boost juste pour �a (je n'aime pas trop boost de toutes fa�ons. Je l'utilise pourtant dans presque tous mes projets, mais quand je peux, je m'en passe avec soulagement).

    Mon histoire de Registry fonctionne comme suit:
    C'est une simple map<string,string> (id/key), qui est encapsul�e dans une classe Registry (dans mon cas c'est un singleton. Je suis un peu atteint de singletonite, mais dans ce cas l� je pense que c'est vraiment ce qu'il y a de mieux). Cette classe Registry fournit une fonction qui lit le fichier de config (bon en v�rit�, dans ma lib c'est une classe � part mais peu importe) et des accesseurs templates qui permettent de r�cup�rer les variables directement dans le type souhait�.

    Les sources sont dispos sur mon d�p�t sourceforge, si �a t'int�resse:
    registry.h
    registry.cpp
    Note: l'acces aux variables de cette classe Registry est particuli�rement co�teuse, surtout si on ne les r�cup�re pas sous forme de string. Il faut donc l'utiliser de bon aloi (sp�ciale d�dicace).

    Ensuite, pour la cr�ation des objets qui utilisent ces variables, cela va d�pendre de chaque objet. Il n'est certainement pas n�cessaire, par exemple, d'impl�menter une factory � chaque fois.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Citation Envoy� par r0d Voir le message
    Quant � boost, effectivement c'est l'artillerie lourde. C'est un peu abus� de se taper boost juste pour �a
    Je ne suis pas trop d'accord. Pass� l'�tape d'installation et de link de boost la premi�re fois qu'on s'en sert, �a se fait tout seul par la suite... Boost.Program_Option m'a fait gagner des heures de boulot par le pass�.

  7. #7
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Salut,
    Citation Envoy� par r0d Voir le message
    3DArchi, le "DP builder" dont tu parles ne serait-ce pas plut�t le factory?
    Il s'agit bien du DP Builder (ou Monteur) dont l'objectif est bien de masquer la construction d'un objet complexe. Cela peut �tre le cas au d�marrage o� un builder sp�cifique peut s'appuyer sur les fichiers de configuration/initialisation/arguments en ligne de cmd pour construire les objets de l'application.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 02/05/2006, 11h41
  2. [D�butant]Proc�dure avec param�tres entr�e / sortie
    Par jeromejanson dans le forum Langage
    R�ponses: 13
    Dernier message: 10/10/2005, 08h30
  3. D�butant - Entr�e/Sortie
    Par seigneur.viggen dans le forum Langage
    R�ponses: 11
    Dernier message: 28/09/2005, 15h47
  4. Copie entr�e-sortie
    Par Troell dans le forum C
    R�ponses: 18
    Dernier message: 24/09/2005, 19h11
  5. R�ponses: 11
    Dernier message: 13/10/2004, 00h58

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