今天,我想问您一个有关C ++实现特定软件体系结构功能的问题。
当然,我使用了搜索但是没有找到任何直接链接的答案。
基本上,我的目标是建立一个程序,使用户可以对任意组成的物理系统(例如驾驶汽车)进行建模和仿真。我假设有一个物理模型库(类中的函数)。每个函数可以具有一些输入,并根据基础的物理描述返回一些输出,例如,内燃机模型,空气阻力模型,车轮模型等。
现在,该想法是为用户提供一个框架,该框架允许他根据自己的需求来组合任何功能,即映射任何身体行为。该框架应提供功能,以连接不同功能的输出和输入。因此,该框架提供了一个容器类。我称它为COMPONENT,它可以容纳一个或多个模型对象(FUNCTION)。这些容器还可以容纳其他组件(参见复合模式)以及功能参数之间的连接(CONNECTOR)。此外,组件类提供了一些通用的数字功能,例如数学求解器等。
功能的组合应在运行时完成。在第一个实例中,用户应该能够通过导入定义合成结构的XML来建立合成。后来,人们可能会想到添加GUI。
为了使您更好地理解,这里是一个非常简化的示例:
<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>
不必要深入研究框架的功能,因为我的问题更为普遍。编译框架代码/程序时,物理问题描述以及用户定义的功能未知。当用户选择功能(通过XML或以后通过GUI)时,框架应读取功能信息,即应获取输入和输出参数的信息,以便为用户提供互连功能的选项。
我知道反射的原理,并且我知道C ++不提供此功能。但是,我确信经常需要“在运行时构建对象”的概念。我应该如何在C ++中设置软件体系结构以实现我的目标?C ++是正确的语言吗?我忽略了什么?
提前致谢!
干杯,奥利弗