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