[LCP] TD3 : probleme avec les Observateur

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LCP] TD3 : probleme avec les Observateur

Message  trikman le Sam 25 Fév 2012, 18:14

Bonjour,

je suis arrivé au point 5 du td , mais a partir de la je ne comprend plus bien ce que je dois faire .

premièrement , je pense ne pas avoir bien compris la notion de Observateur / sujet d observation ( explication ... Question ) . Tout ce que j'ai compris c'est que l'observateur était la vue du jeu et le sujet était le moteur du pendu , pour le reste je ne comprend pas. par exemple, comment faire le lien entre les 2 ? Apparemment les méthodes attacher() et detacher() son faite pour cela , mais quid de leur utilisation ?

Deuxièmement , on parle dans le point 5.1.1 de declaration anticipée insuffisante lors de l'heritage , je ne comprend pas ce que cela veut dire ...

Troisièmement , a propos des methode attacher() et detacher() , je ne comprend pas comment les utiliser ( voir code ), faut-il que j'attache dans le constructeur de ObservateurProposition ? je pense que oui mais je ne suis absolument pas certain ...

Quatrièmement , la fameuse methode rafraichir() , alors la je suis complètement dans le brouillard , des explications plus précise seraient les bienvenues ...

Dernierement , faut-il utiliser Qt designer pour remplir cette fenetre d'information ou alors creer un texte formaté que l'on enverra a la méthode setText()?


je vous met quand même mon code pour la classe ObservateurProposition . il n'est certainement pas bon mais cela vous permettra de voir ou j'en suis ; de plus il y a sans doute des aberrations pour certains , mais je rèpete que justement si j'écrit ce post c'est que je ne comprend pas et que je n'arrive plus à avancer donc soyez indulgent svp ...
rmq : je n'ai pas encore rempli le QLabel , je l'ai juste créer , je pense qu'il est nécessaire d avoir compris tout les points cité au dessus avant de commencer à remplir la fenêtre d'informations . une chose à la fois comme on dit ...
si vous avez besoin de TOUT mon code ou de certaines classes en plus faite le moi savoir ,

Je vous remercie d'avance pour votre aide,

Martin 2G12

code :

Code:
#ifndef OBSERVATEURPROPOSITION_H
#define OBSERVATEURPROPOSITION_H

#endif // OBSERVATEURPROPOSITION_H
#include <QLabel>
#include "observateur.h"
#include "jeudupendu.h"
class ObservateurProposition : public Observateur , public QLabel
{
public :
    ObservateurProposition(Pendu * unPendu);
    void rafraichir(SujetDObservation *sdo);
    ~ObservateurProposition();
private :
    QLabel * vueTexte;
};

Code:
#include "ObservateurProposition.h"
ObservateurProposition::ObservateurProposition(Pendu & unPendu)
{

    this->vueTexte = new QLabel();
    Qt::WindowFlags flags = 0;
    flags |= Qt::CustomizeWindowHint;
    flags |= Qt::WindowTitleHint;
    this->vueTexte->setWindowFlags(flags);
    unPendu->attacher(this);

}

void ObservateurProposition::rafraichir(SujetDObservation *sdo)
{
    sdo->notifierChangement();
}
ObservateurProposition::~ObservateurProposition(){
    delete vueTexte;

}

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: [LCP] TD3 : probleme avec les Observateur

Message  smb le Sam 25 Fév 2012, 19:29

Le pattern observateur / sujet d'observation vous sera expliqué au laboratoire de la semaine prochaine.
Cool

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] TD3 : probleme avec les Observateur

Message  trikman le Sam 25 Fév 2012, 19:32

oooooh genial Very Happy Very Happy Very Happy , j'ai cru que j'etais encore une guerre en retard

quel soulagement !!! Very Happy

trikman

Nombre de messages : 68
Prénom : martin
Date d'inscription : 04/11/2009

Revenir en haut Aller en bas

Re: [LCP] TD3 : probleme avec les Observateur

Message  Dj x-fuse le Sam 25 Fév 2012, 20:57

Ce que tu as écris dans ton code est correcte concernant le patern O_SDO.
Par contre, tu peux modifier this->vueTexte = new QLabel(); en QLabel(); et supprimer l'attribut vueTexte car ta classe hérite déjà de QLabel.

Concernant les questions de fonctionnement du patern, le core (Pendu) est un sujetDObervation et les vues correspondent à des observateurs.
Pour faire le lien entre les deux, ce que tu as écris est correct.

Comment fonctionne ma moulinette ensuite ?

Si tu regarde le code de la classe Pendu, tu remarqueras qu'à chaque fin de méthode qui modifie le core, il y a un appel vers notifierChangement();
Cette méthode se trouve dans la classe sujetDObservation qui est le père de Pendu.

Comme tu as attaché précédemment les vues au core, dans sujetDObservation tu as donc la liste des vues qui y sont reprises.
notifierChangement() fait appel à rafraichir() de chacunes des vues qui sont présentes dans la liste.

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

Re: [LCP] TD3 : probleme avec les Observateur

Message  karemkadidola le Sam 25 Fév 2012, 21:14

Bien expliqué Dj x fuse pour moi tu as ta dispense looll

sinon quelques pistes en plus pour te permettre d'avance c'est bien c qu'à dit Dj pour le remplacement de this vueTexte en QLabel() à faire dans la zone d'initialisation évidemment...
pas besoin de sdo->notifierChangement(); explication déjà fournie par Dj par contre dans le constructeur de ton ObservateurProposition fait un premier appel à raffraichir "rafraichir(pendu);" et dans ton destructeur détache plutot ton objet de la liste d'objets inscrits auprès de pendu pour être informé d'un quelconque changement "pendu->detacher(this)" voilà pour le peu que tu as montré c'était le peu que je pouvais contribuer...
Pour résumer tout ça quand tu crées ton pendu tu fais aussi une connection signal/slot qui fait que chaque fois que tu cliques dans ton combobox pour selectionner une lettre celle ci est passée vers pendu qui fait sont traiment via "lettreselectionné" à la fin de ce traitement tu verras y a la méthode notifierChangement (méthode héritée) qui va faire appel à la méthode "rafraichir" à la fois de observateurProposition et observateurPotente et c'est dans cette méthode qui a été declacrée virtuel pure (par la classe père Observer car chaque héritier la définit de sa façon) que tu gère ce que tu veux afficher dans la fenetre de l'observateur ...ben en gros c'est ça...lorqu'on a compris ça c un rien plus facile d'avancer...

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

Re: [LCP] TD3 : probleme avec les Observateur

Message  Contenu sponsorisé Aujourd'hui à 05:24


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum