oggi, mi piace fare una domanda sulle capacità del C ++ di realizzare una specifica architettura software.
Certo, ho usato la ricerca ma non ho trovato alcuna risposta direttamente collegata.
Fondamentalmente, il mio obiettivo è quello di costruire un programma che consenta all'utente di modellare e simulare sistemi fisici composti in modo arbitrario, ad esempio un'auto alla guida. Presumo di avere una libreria di modelli fisici (funzioni all'interno delle classi). Ogni funzione può avere alcuni input e restituire alcuni output a seconda della descrizione fisica sottostante, ad esempio un modello di motore a combustione, un modello di resistenza aerodinamica, un modello di ruota, ecc.
Ora, l'idea è quella di fornire all'utente un framework che gli consenta di comporre qualsiasi funzione in base alle sue esigenze, cioè di mappare qualsiasi comportamento fisico. Il framework dovrebbe fornire funzionalità per collegare gli output e gli input di diverse funzioni. Pertanto, il framework fornisce una classe container. Lo chiamo COMPONENTE, che è in grado di contenere uno o più oggetti modello (FUNZIONE). Questi contenitori possono contenere anche altri componenti (cfr. Modello composito) nonché le connessioni (CONNECTOR) tra i parametri della funzione. Inoltre, la classe componente fornisce alcune funzionalità numeriche generali come il solutore matematico e così via.
La composizione delle funzioni deve essere eseguita durante il runtime. In primo luogo, l'utente dovrebbe essere in grado di impostare una composizione importando un XML che definisce la struttura della composizione. Più tardi, si potrebbe pensare di aggiungere una GUI.
Per darti una migliore comprensione qui è un esempio molto semplificato:
<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>
Non è necessario approfondire le capacità del framework perché il mio problema è molto più generale. Quando viene compilato il codice / programma del framework, la descrizione del problema fisico e le funzioni definite dall'utente non sono note. Quando l'utente seleziona (tramite XML o successivamente tramite una GUI) una funzione, il framework dovrebbe leggere le informazioni sulla funzione, ovvero dovrebbe ottenere le informazioni sui parametri di input e output, al fine di offrire all'utente la possibilità di interconnettere le funzioni.
Conosco i principi di riflessione e sono consapevole che C ++ non fornisce questa funzionalità. Tuttavia, sono sicuro che il concetto di "costruzione di oggetti durante il runtime" è molto spesso richiesto. Come devo impostare la mia architettura software in C ++ per raggiungere il mio obiettivo? C ++ è la lingua giusta? Cosa trascuro?
Grazie in anticipo!
Saluti, Oliver