Correction d'une faute d'orthographe
[memoirecycle.git] / mecanisme
blobc2d07e12942860948f4e1cc80c362a556e963623
1 Le mécanisme de propagation pour le GUI: (à écrire)
8 Le mécanisme de propagation pour les propriétés:
10 Principaux intervenants: les transfos, les variables
12 Partie statique : qui a besoin de quoi (et prévoit de le changer) c'est watchedConnectionVariable et wantNotif
14 Partie dynamique : Quand il y a quelque chose qui change, c'est update qui entre en ligne mais avec un mécanisme plus compliqué.
15 En fait, au lieu de faire update sur tout les wantNotif, on met tout les wantNotif dans une todoList.
16 Et quand on est idle, c'est dans cette todoList qu'on fait des update.
21 -> Les ensembles pour la propagation des variables
23 Dans les éléments:
25 Les éléments possèdent dans l'init des connections, des propriétés, des watchedConnectionVariable.
26 Quand on crée un élément, il possède donc ces trois ensembles mais vides.
28 L'ensemble des connections contient de base le nombre de connection possible pour l'élément (souvent 2), elle sont justes pas connectées (link = None).
29 Elles deviennent connectées quand on les connecte avec le GUI.
31 L'ensemble des propriétés contient de base les propriétés propres (à lui) de l'élément.
32 De même que pour les connections, ces propriétés ont une valeur de base nulle, elles seront remplies au fur et à mesure.
33 Soit par imposition de la valeur avec le GUI par l'utilisateur, soit, si ce sont des variables, leur valeur peut être "tell" (par un autre élément).
35 L'ensemble des watchedConnectionVariable d'un élément contient toutes les propriétés des éléments connectés adjacents qui l'intéressent.
36 Par exemple, une pompe ne regardera pas l'exergie de l'état le précédent mais plutôt sa pression.
38 Dans les propriétés:
40 L'ensemble theyDependOnMe. C'est l'ensemble des propriétés qui dépendent d'une propriété (fixed ou variable).
42 L'ensemble wantNotif: ensemble des transfos ou état qui veulent être mis au courant quand une variable est modifiée.
43 C'est lié à watchedConnectionVariable. Une variable qui est dans watchedConnection variable veut des wantNotif. Ainsi, on peut ajouter et supprimer
44 des watchedConnectionVariable et donc des wantNotif. -> C'est la partie que les transfos comme les états sont contenus dans les bons watchedConnectionVariable.
46 dans variable dans propriete:
48 iDependOnThem ->
50 Dans project:
51 todoList. La todoList fait partie du projet, c'est elle qui, quand le programme est idle, va permettre de réaliser les calculs internes.
52 A chaque action de l'utilisateur, des nouveaux calculs et action à réaliser vont s'y ajouter et s'y supprimer.
58 -> Les méthodes pour la propagation des variables
59 Dans les éléments:
61 méthode update(self)
62 update est en réalité la méthode de "calcul"
63 c'est la méthode clé pour la propagation. C'est elle qui dit qui doit faire quoi. Elle est appellée par la todoList lors des "idle" du programme.
64 Chaque élément contient sa propre méthode update.
66 méthode connectionChanged(self)
67 connectionChanged comme son nom l'indique, est appellée à chaque changement de connection (note: et donc à la première connection également)
68 C'est cette méthode qui ajoute des propriétés dans l'ensemble watchedConnectionVariable et dans l'ensemble wantNotif.
69 L'élement dont la connection change doit mettre à jour ses données dont ses watchedConnectionVariable. Logique, le voisin de l'élément change
70 donc les propriétés de l'ancien voisin regardées par l'élément doivent être supprimées. Les propriétés d'intérêt sur le nouveau voisin doivent elles être ajoutées. Il faut également changer les notifications, supprimer l'élément en question de l'ensemble wantNotif de l'ancien voisin et l'ajouter dans le wantNotif du nouveau voisin. 
72 Dans les propriétés:
73 méthode tell(self, val, becauseOf) -> c'est lui qui ajoute la dépendance (de même que relax enlève la dépendance)
75 Notifier -> méthode doNotify qui appelle les OnNotif des gens dans la notifyList
76 Notifiable -> methode OnNotif