Observateur / observé

Description

Tuto pour vite montrrer comment fonctionne l update dynamique de fenetre
grace au pattern O/Obs

>>>> http://prefarails.jexiste.fr/xoops <<<<<<

Source / Exemple :


Méthode simple Observateur , observé
------------------------------------
--> je fais ce mini tuto because j avais rien compris et ca m avais soulé
--> alors v' refaire les étapes pas à pas :) 

0*/ Avant tout *
Récuperer les fichiers Observateur.h Sujetdobservation.h & les inclure au projet
1*/ Dans la classe de base *
CAD ici ce qui nous interesse Tgraphe.h --> classe de base du moteur ! :) #include "SujetDObservation.h" <- car c est ce k on observe class Tgraphe : public SujetDObservation { ... }; héritage des méthodes de la classe SujetDObservation à pars ca aucun autre changement doit etre apporté au moteur
2*/ Les frames ObservatriZzz *
-> On s occupe ici de fenetre à l'écoute du graphe ou des changement qui peuvent survenir (ajout d un noeud , ...) et ce changement doit se faire dynamiquement A ] Déclaration d une classe avec juste ses composants ------------------------------------------------------- Exemple : On declare une frame avec 2 labels: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + class TExtensions : public TForm + + { + + __published: + + TLabel *Label1; + + TLabel *Label2; + + __fastcall TExtensions(TComponent* Owner); + + }; + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  • ]Juste en dessous on déclare une classe ExtensionObs qui hérite de Observateur :
dans son constructeur elle aura comme paramètre la frame d'au dessus et ce à quoi on s interesse càd le graphe :ExtensionObs(TExtensions * f, TGraphe * s):
  • ]Une autre méthode va permettre de dire que qu on veut que la frame fasse comme
rafraichissement lors du changement d'état du graphe (modification). +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + class ExtensionObs : public Observateur{ + + + + private: + + TExtensions * fo; + + TGraphe * sujet; + + + + public: + + ExtensionObs(TExtensions * f, TGraphe * s){ + + fo = f; + + sujet = s ; + + s->attacher(this); + + rafraichir(sujet); + + } + + void rafraichir(SujetDObservation * s) + + { + + if ( s != sujet ) return; + + //... + + ... --> Oppération de mise a jours ca c est pour vous ! + + ... + + ... // + + // Mise à jour des composants :) + + fo->Label1->Caption=(stri); + + fo->Label4->Caption=(stro); + + } + + }; + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3*/ Finalement... *
Dans la frame principale , ou dans le module qui appel la frame ==> cez moi c est lors d un clique sur boutton on a +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + this->fenetre2 = new TExtensions (NULL); + + extObs= new ExtensionObs(this->fenetre2,this->g); + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Il ne faudra pas oublier de notifier les changement losque l on interagit avec notre graphe Exemple : ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + void __fastcall TForm1::ButtonAjouterNoeudClick(TObject *Sender) + + { + + graphe->notifierChangement(); + + } + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ et puis c est tout ! :D Bon j espere que vous aurez compris !! Un tout grand merci @ mon pote Pierro :) Enjoy DaX.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.