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

Design Patterns Discussion :

Séparer un modèle de son état courant


Sujet :

Design Patterns

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Points : 53
    Points
    53
    Par défaut Séparer un modèle de son état courant
    Bonjour,

    Je souhaite réaliser un programme s'apparentant à un simulateur de circuits logiques : un ensemble de composants divers reliés entre eux donc.

    Je souhaiterais séparer la structure d'un schéma logique (i.e. les instances des différents composants qui le composent, ainsi que les liens entre eux) de l'état courant des composants (valeurs booléenne courante, etc...)

    La raison derrière est que je pense qu'il est plus propre de séparer le modèle structurel du circuit (chargé depuis un fichier par exemple) de l'ensemble des variables qui traduisent l'état actuel du système, pour une simulation donnée.

    Autrement dit, si je considère qu'un composant possède un ensemble de méthodes permettant d’interagir avec, une liste des composants en entrée, une liste des composants en sortie et un ensemble de variables d'état, je souhaiterai avoir d'un côté mes instances de classe "Composant", qui contiennent les méthodes, la liste des entrées et la liste des sorties, pour chaque composant, et mes instances de classe "EtatComposant" correspondantes à côté (sachant que les méthodes de la classe Composant nécessiteraient à chaque fois d'avoir la liste des EtatComposant du système en paramètre, pour pouvoir fonctionner).

    A priori rien de sorcier donc.

    Le soucis c'est que je souhaiterai faire hériter des composants plus spécifiques de ma classe Composant, qui auraient des variables d'état additionnelles, autrement dit :

    ComposantSpecial hérite de Composant
    EtatComposantSpecial hérite de EtatComposant

    Je souhaiterai donc avoir mon vecteur de composants de mon système, qui comprenne à la fois des Composant et des ComposantSpecial, et mon vecteur d'état correspondant, avec des EtatComposant et EtatComposantSpecial dedans.

    Et il faudrait bien entendu qu'un Composant modifie son EtatComposant associé, et pareil pour ComposantSpecial.

    Le problème c'est que je ne vois pas comment faire ça proprement, à moins de faire un transtypage en hard, mais c'est moche...

    Y a-t-il une solution classique à ce problème ?

    Merci

  2. #2
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Points : 2 918
    Points
    2 918
    Par défaut
    Je ne connais pas le contexte, mais je trouve un peu alambiqué d'avoir un vecteur de composants et à côté un vecteur d'états et devoir faire le lien entre eux et passer les états en paramètre à chaque appel de méthode d'un composant...

    Pourquoi ne pas encapsuler les Etats dans la classe Composant ? Chaque composant connaîtrait ses états et on pourrait utiliser le polymorphisme si jamais il y a besoin de voir les EtatsComposantSpecial d'un ComposantSpecial comme des Etats normaux.

Discussions similaires

  1. Ressources gratuites (sprites, textures, modèles 3D, sons)
    Par raptor70 dans le forum Contribuez
    Réponses: 56
    Dernier message: 26/12/2009, 20h09
  2. [SON] modèles de son
    Par 0xYg3n3 dans le forum Windows XP
    Réponses: 2
    Dernier message: 07/11/2006, 14h19
  3. Réponses: 4
    Dernier message: 31/07/2006, 16h18
  4. Réponses: 7
    Dernier message: 08/03/2006, 15h15
  5. CButton, connaitre son état (enable ou disable)
    Par mr.saucisse dans le forum MFC
    Réponses: 5
    Dernier message: 27/02/2006, 18h01

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