aujourd'hui, j'aime vous poser une question sur les capacités de C ++ à réaliser une architecture logicielle spécifique.
Bien sûr, j'ai utilisé la recherche mais je n'ai trouvé aucune réponse directement liée.
Fondamentalement, mon objectif est de construire un programme qui permet à l'utilisateur de modéliser et de simuler des systèmes physiques composés arbitrairement, par exemple une voiture qui conduit. Je suppose avoir une bibliothèque de modèles physiques (fonctions au sein des classes). Chaque fonction peut avoir certaines entrées et renvoyer certaines sorties en fonction de la description physique sous-jacente, par exemple un modèle de moteur à combustion, un modèle de traînée aérodynamique, un modèle de roue, etc.
Désormais, l'idée est de fournir à l'utilisateur un cadre lui permettant de composer toutes les fonctions selon ses besoins, c'est-à-dire de cartographier tout comportement physique. Le cadre devrait fournir des fonctionnalités pour connecter les sorties et les entrées de différentes fonctions. Par conséquent, le framework fournit une classe de conteneur. Je l'appelle COMPONENT, qui peut contenir un ou plusieurs objets de modèle (FUNCTION). Ces conteneurs peuvent également contenir d'autres composants (cf. modèle composite) ainsi que les connexions (CONNECTOR) entre les paramètres de la fonction. De plus, la classe de composants fournit des fonctionnalités numériques générales telles que le solveur mathématique, etc.
La composition des fonctions doit être effectuée pendant l'exécution. Dans le premier cas, l'utilisateur doit pouvoir configurer une composition en important un XML qui définit la structure de la composition. Plus tard, on pourrait penser à ajouter une interface graphique.
Pour vous donner une meilleure compréhension, voici un exemple très simplifié:
<COMPONENT name="Main">
<COMPONENT name="A">
<FUNCTION name="A1" path="lib/functionA1" />
</COMPONENT>
<COMPONENT name="B">
<FUNCTION name="B1" path="lib/functionB1" />
<FUNCTION name="B2" path="lib/functionB2" />
</COMPONENT>
<CONNECTIONS>
<CONNECTOR source="A1" target="B1" />
<CONNECTOR source="B1" target="B2" />
</CONNECTIONS>
</COMPONENT>
Il n'est pas nécessaire d'approfondir les capacités du framework car mon problème est beaucoup plus général. Lorsque le code / programme cadre est compilé, la description du problème physique, ainsi que les fonctions définies par l'utilisateur, ne sont pas connues. Lorsque l'utilisateur sélectionne (via XML ou ultérieurement via une interface graphique) une structure, le framework doit lire les informations de la fonction, c'est-à-dire doit obtenir les informations des paramètres d'entrée et de sortie, afin d'offrir à l'utilisateur la possibilité d'interconnecter les fonctions.
Je connais les principes de la réflexion et je suis conscient que C ++ ne fournit pas cette fonctionnalité. Cependant, je suis sûr que le concept de "construction d'objets pendant l'exécution" est très souvent requis. Comment dois-je configurer mon architecture logicielle en C ++ pour atteindre mon objectif? C ++ est-il le bon langage? Qu'est-ce que j'oublie?
Merci d'avance!
À la vôtre, Oliver