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 :

probl�me de conception en c++


Sujet :

C++

  1. #1
    Membre r�gulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par d�faut probl�me de conception en c++
    J'essai de concevoir une structure qui me permettrait de g�rer les informations contenues sur des formulaires.
    Je peux avoir plusieurs formulaires ex.: F01, f02, etc. et chacun d'eux contiennent des infos (float) qui sont
    consign�es sur des lignes num�rot�es (Ligne1, ligne2, etc).

    Je peux cr�er une classe 'formulaire' qui contient une std::Map<int,float> qui peut contenir pour chaque
    ligne (int) le montant (float) qui lui est reli�. Je peux int�grer � cette classe des fonctions 'get' et
    'set' qui me permettraient d'enregistrer et de r�cuperer les infos.
    Je peux par exemple �crire :

    formulaire F1;
    float valeur;
    .
    . //calcul de la variable valeur

    F1.SetLigne(1, valeur); //set la ligne 1 en lui attribuant 'valeur'
    .
    .
    float x = F1.getLigne(1); //r�cupere la valeur de la ligne 1 ailleurs dans le code.

    Jusque l� pas de probl�me. Mon probl�me de conception commence ici: � chaque ann�e les formulaires sont modifi�s
    et des lignes sont ajout�es ou supprim�es. Ainsi, si pour le formulaire F1 une ligne est ajout�e avant la
    ligne 1, la ligne 1 devient la ligne 2 et ainsi de suite pour les lignes suivantes.
    Je dois donc changer la ligne de code :

    F1.SetLigne(1, valeur); devient F1.SetLigne(2, valeur);

    Avec cette approche, je suis oblig� de changer toutes les r�f�rences (et il y en a beaucoup!) � la ligne 1 du formulaires F1.

    float x = F1.getLigne(1); devient float x = F1.getLigne(2);

    Je cherche donc � trouver une impl�mentation qui me permettrait de ne changer que la ligne 'set' et que la fonction 'get'
    soit con�ue pour aller chercher l'info de la bonne ligne automatiquement...

    Toutes les id�es sont bienvenues! J'ai beau y r�fl�chir et je ne vois pas...
    NB: je programme en c++ avec visual studio 2005 framework 2.0

  2. #2
    Membre chevronn�
    Avatar de NewbiZ
    Profil pro
    �tudiant
    Inscrit en
    Juillet 2002
    Messages
    184
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2002
    Messages : 184
    Par d�faut
    Lorsque tu as des donn�es, l'important est de trouver un moyen pratique, et unique, de les identifier.
    Clairement dans ton cas, le num�ro de ligne ne convient pas:
    Ce ne sont pas les donn�es de la ligne 1 que tu cherches r�ellement, ce sont des donn�es qui se trouvent actuellement en 1.

    Il faut que tu d�termines un identifiant pour tes donn�es:
    - Soit directement inject�: Tu ajoutes un ID en d�but de chaque ligne par exemple;
    - Soit calcul� � partir des donn�es, si tu peux extraire un identifiant unique � partir des donn�es d'une ligne.

  3. #3
    Membre r�gulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par d�faut
    merci pour la r�ponse NewbiZ,

    Tu as tout � fait raison quand tu sugg�res d'utiliser des identifiants pour d�crire chacune des lignes. Par contre je dois sp�cifier qu'il s'agit d'un logiciel de plusieurs millers de lignes de code o� il y a des calculs financiers souvent tr�s complexe. De plus il y a une multitude de transferts d'info. entre les formulaires. Si je choisis des identifiants peu descriptifs je me retrouverais avec du code de ce genre :

    if (F1.getID(id0001) > F34.getID(id1034) {
    F23.setID(id0233) = x * min(F81.getID(id6541), F81.getID(id6542));
    }

    En ajoutant des centaines de lignes de code de ce genre pour chacun des formulaires (une centaine environ) on voit vite que le code sera tr�s difficile � comprendre et � maintenir (les formulaires change � chaque ann�e).

    D'un autre c�t� pour que les identifiants soient plus descriptifs je me retrouverais avec du code de ce genre :

    if (F1.getID("Valeur actuelle nette des achats en immobilisations admissibles-ann�e pr�c�dente) > F34.getID(Valeur actuelle nette des achats en immobilisations admissibles-ann�e courante) {
    F23.setID(montant admissible � la d�duction) = x * min(F81.getID(taux d'int�r�ts normalis�), F81.getID(taux d'int�r�ts marginal annualis�));
    }

    Ce genre de code deviendrait �galement tr�s lourd (en tous cas ce serait long � �crire... Je te rappele qu'il y a des millers de ligne de codes de ce genre dans ce logiciel)

    Ces pour cette raison que je tente de trouver un identifiant qui est court mais qui peut �tre descriptif � la fois. Les num�ros de lignes seraient parfais pour cette situation car lorsque je programme un formulaire j'ai une copie de celui ci pr�s de moi et je peux facilement savoir � quoi fait r�f�rence chacun des num�ro de lignes..

    Je me demande s'il n'y aurait pas une fa�on de faire en utilisant une sorte de tableau de mappage du genre:

    //mappage du formulaire F1
    Ligne1 = "Valeur actuelle nette des achats en immobilisations admissibles-ann�e pr�c�dente"
    ..
    //mappage du formulaire F34
    Ligne1010 = "Valeur actuelle nette des achats en immobilisations admissibles-ann�e courante"
    etc.


    De cette fa�on je n'aurais qu'� changer le tableau de mappage lorsque les lignes d'un formulaire changes ex:

    //mappage du formulaire F1
    Ligne1 = "nouvelle ligne ajout�e cette ann�e"
    Ligne2 = "Valeur actuelle nette des achats en immobilisations admissibles-ann�e pr�c�dente"

    Par contre je ne vois pas comment utiliser cette approche pour avoir un code qui serait � la fois succinct, descriptifs et pour lequel je n'aurais qu'� changer la table de mappage lorsqu'un ligne est ajout�e.

    je continue � r�fl�chir au probl�me et merci encore pour ton aide

  4. #4
    Inactif  

    Homme Profil pro
    Ing�nieur test de performance
    Inscrit en
    D�cembre 2003
    Messages
    1 986
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur test de performance
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 986
    Par d�faut
    Citation Envoy� par fleg666 Voir le message

    Mon probl�me de conception commence ici: � chaque ann�e les formulaires sont modifi�s
    et des lignes sont ajout�es ou supprim�es. Ainsi, si pour le formulaire F1 une ligne est ajout�e avant la
    ligne 1, la ligne 1 devient la ligne 2 et ainsi de suite pour les lignes suivantes.
    Bonjour.

    Quel serait le probl�me � r�initialiser ta map lorsque les donn�es sont chang�es. Tu dis "� chaque ann�e", si je comprends bien c'est une fois par an ?

    Tu as trouv� une m�thode simple d'acc�s aux donn�es et pour une modification annuelle, tu risques de modifier l'architecture par quelques choses dont toi-m�me tu n'es pas satisfait.

    Ma question est : quel est le probl�me � r�initialiser ta map avec les nouvelles valeurs de ligne ?

  5. #5
    Membre r�gulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par d�faut
    bonjour moldavi,

    Tout d'abord merci pour ta r�ponse.
    Alors concernant ta question, le probl�me est que j'ai en fait environ une centaine de formulaires � g�rer et que sur chaque formulaire il peu y avoir jusqu'� 200 lignes d'informations financi�res. De plus il ya a une multitude de transfert d'info entre les formulaires. Alors lorsqu'un formulaire change (des lignes sont ajout�es ou effac�es) alors je dois passer en revue l'ensemble des formulaires qui font r�f�rence � une ou des lignes du formulaires que je met � jour actuellement. De plus il y a un effet domino puisque le fait d'ajouter une ligne modifie toute les lignes suivantes du formulaire (si j'ajoute une ligne entre la ligne 100 et la ligne 101 du formulaire F10, toutes les lignes suivantes sont incr�ment�es �galement). Je dois donc passer en revu toutes les autres formulaires qui acc�dent � la ligne 101 et les suivantes du formulaire F10. Sa devient tr�s lourd � g�rer et peu facilement engendrer des erreurs de calculs. Donc le fait de modifier un formulaire m'oblige � modifier les autres formulaires �galement puisque si ailleurs dans le code je tente par exemple de r�cup�rer l'info. sur la ligne 125 du formulaire F10, (F10.getline(125) et bien l'info. recherch� est maintenant sur la ligne 126.
    C'est pourquoi je cherche une m�thode qui me permettrait de ne changer qu'une fois l'info. et que le reste des calculs suivent automatiquement.

    En fait je sais que newBiz a raison en sugg�rant de cr�er un identifiant pour chaque ligne au lieu d'utiliser les num�ro de lignes. Par contre comme il y un grand nombre de lignes et un grand nombre de formulaires, je me retrouverais avec un code difficile � lire puisqu'il y aurait un grand nombre d'identifiants. De plus, dans bien des cas il serait dificile de trouver un identifiant avec un nom significatif puisque souvent les lignes ont des descriptions tr�s longues du genre :
    Ligne 100 : Valeur actuelle nette des achats en immobilisations admissibles-ann�e courante sans tenir compte des immeuble locatif achet� avant 31 d�c. 1988
    Ligne 101 : Valeur actuelle nette des achats en immobilisations admissibles-ann�e courante incluant les immeuble locatif achet� avant 31 d�c. 1988

    Avec des centaines de lignes avec des descriptifs tout aussi charmant les uns que les autres (et souvent plus long encore) , il serait difficile de trouver des identifiants court et pertinent. D'o� mon 'obession' pour l'utilisation des num�ro de lignes.

    Alors je continue de r�fl�chir au probl�me et merci encore.

  6. #6
    Inactif  

    Homme Profil pro
    Ing�nieur test de performance
    Inscrit en
    D�cembre 2003
    Messages
    1 986
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur test de performance
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 986
    Par d�faut
    Re.

    Ok c'est lourdingue, s�rement, mais �a sert � �a les processeurs. Encore qu'incr�menter les lignes d'un tableau et mettre � jour les autres formulaires, �a ne ressort pas d'une algorithmie tr�s �labor�e.

    Sinon pour les identifiants uniques de lignes, tu as les GUID (sous windows), la date de cr�ation (avec les millisecondes ou le temps processeur), apr�s je ne vois pas trop.

    Mais bon, apr�s, tu risques d'�tre p�nalis�, parce que pour r�cup�rer la valeur d'une ligne, tu vas devoir parcourir tout le formulaire � la recherche de ton identifiant. Avec les num�ros de ligne, j'imagine que tu acc�des directement � la donn�e, ou alors va falloir jouer de la ruse et stocker le num�ro de ligne la premi�re fois que tu acc�des � l'identifiant pour ensuite ne v�rifier que si l'ID est bon, et mettre � jour la ligne si celle-ci change.

    Bref, ce que tu gagnes d'un c�t� tu vas le perdre de l'autre. Il faudrait savoir si ton application passe plus de temps � supprimer des lignes ou � acc�der � des lignes. Personnellement, selon la r�ponse, mon choix serait vite fait.

Discussions similaires

  1. M�thode Finalize et probl�me de conception
    Par phryos dans le forum Langage
    R�ponses: 4
    Dernier message: 19/04/2006, 11h04
  2. [VB6][UserControl et OCX]Probl�me de conception
    Par jacma dans le forum VB 6 et ant�rieur
    R�ponses: 8
    Dernier message: 19/01/2006, 22h37
  3. Petit probl�me de conception sur access
    Par coooookinette dans le forum Mod�lisation
    R�ponses: 3
    Dernier message: 18/12/2005, 18h24
  4. Gestion des d�partements probl�me de conception
    Par snoopy69 dans le forum Mod�lisation
    R�ponses: 7
    Dernier message: 11/10/2005, 13h08
  5. Probl�me de conceptions de tables
    Par dtavan dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 23/05/2004, 23h13

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