Bien définir une structure pour faciliter son utilisation

Bien définir une structure pour faciliter son utilisation - Algo - Programmation

Marsh Posté le 23-02-2011 à 18:42:43    

Bonjour,
 
Je voudrais sauvegarder dans mon programme un état pour chaque utilisateur "P" qui travaille sur un document "d" (un utilisateur peut travailler sur plusieurs documents). Un état est représenté par 3 variables: cur_cl (un entier), cur_of (un entier aussi) et cur_ops qui est une liste de valeurs {(op1, type1), (op2, type2), ...)}. Je peut ajouter un nouvel état sur un document (d) pour un utilisateur (P) qui n'existais pas (P->d->état), ou pour un utilisateur qui existais mais sur un document sur lequel il ne travaillais pas ... Je veux dire que le nombre d'utilisateurs n'est pas fixé ou connu dès le départ ...
 
http://imageupload.org/?di=1412984829906
 
Bref, ce que je voudrais c'est avoir un idée sur comment représenter, et bien structurer tout ça. Je ne fait pour l'instant que l'algo mais je voudrais le structurer d'une façon qui me facilitera l'implémentation après.
 
Juste pour information, les fonctions qui seront appelé sur cette structure seront en gros les suivants:

Code :
  1. UpdateCur_cl(P, d, newValue)
  2. { /* update la valeur cur_cl par newValue, (P-->d-->cur = newvalue) */ }
  3. UpdateCur_of(P, d, newValue)
  4. { /* update la valeur cur_of par newValue ... */ }
  5. UpdateCur_ops(P, d, op, t)
  6. { /* update le type de op par le nouveau type t, si op n'existe pas (op, t) sera ajouté */ }
  7. checkState(P, d)
  8. {
  9.    if (P-->d n'existe pas) then
  10.    {
  11.       // Le créer;
  12.       // Initialiser P-->d-->cur_ops avec vide {};
  13.       // Initialiser P-->d-->cur_cl et cur_of avec 0;
  14.    }
  15. }
  16. // ...


 
Donc ma question concerne seulement la représentation de cette structure, de façon à me faciliter la création d'états, l'accès au valeurs, leur mise à jour ...
 
Merci bien.

Reply

Marsh Posté le 23-02-2011 à 18:42:43   

Reply

Marsh Posté le 23-02-2011 à 22:08:08    

Bonjour,
 
D'une manière générale, le secret pour une bonne structuration est de connaître l'ordre d'importance des différentes choses. On peut aussi se baser sur l'ordre de stabilité, en mettant en premier, les choses qui bougent peu, et ensuite celles qui bougent beaucoup (comme en comptabilité).
 
Ici, je vois : les états, les personnes, et les documents.
D'après votre graphique, il semble que le plus important pour vous soit les états.
Personnellement, j'aurais plutôt mis en premier les personnes ou les documents.
 
D'autre part, vous avez choisi une structure arborescente, alors qu'une structure de base de données relationnelle est plus courante.
Par exemple, vous auriez une table des personnes et une table des documents. Dans la table des documents, vous auriez un indicateur pour dire si le document est utilisé ou non, et si oui, par qui. Ensuite, vous pourriez faire des requêtes avec des jointures pour trouver toutes les informations que vous voulez.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed