找回密码
 注册
Simdroid-非首页
查看: 217|回复: 0

[2. C/C++/C#] AIPump软件前台数据框架设计

[复制链接]
发表于 2019-11-5 15:07:23 | 显示全部楼层 |阅读模式 来自 江苏苏州

从软件界面的角度来说,AIPump界面实现的功能有各类曲线的绘制,B样条曲线拖拽交互,贝塞尔曲线拖拽交互,以及用户拖拽产生数据变化后的同步其中包括保存数据、传递给后台水泵设计核心模块变化后的数据用于CFD计算,后台计算后的数据更新前台相应的2D或者3D模型视图。

至此,大家可以看到用户使用软件对2D视图的任意一次交互操作,前台和后台都在做数据交互。作为前台和后台的重要桥梁,数据交互框架显然是要下功夫设计的。

数据框架的设计目标有两个方面的考量。第一是前期成本,尽量通用提高开发效率;第二是后期成本,尽量减少维护难度、提升可扩展性。这里首先感谢同事们的默契配合和热情帮助,大家在数据格式统一这一点上看法空前一致,这就为设计通用的数据读写框架提供了现实基础。我们截取一些数据描述来看看这些优雅的符号绅士:

VARIABLE="M","BETA"

ZONE        T="beta",I=          30    J=          9    ,F=POINT

VARIABLE="M","THETA"

ZONE T="theta",I=         30  J=           9 ,F=POINT

VARIABLE="X","Y"

ZONE T="streamline",I=          60 J=           9 ,F=POINT

数据的世界统一了,下面的任务是基础设施建设了。既然一套代码就可以搞定,那我们首先想到把数据的读写函数实现在一个接口基类里,然后所有的betaData, thetaData等等数据从这个基类派生。我们拿数据的读接口举个例子:

恳请大家放过我的微量的懒惰和硬编码。基类里实现数据的读接口了,下面我们要做的是beta,theta这些数据类从基类派生继承接口:

class BetaDataSrc : publicIDataSrcInterface

class ThetaDataSrc :public IDataSrcInterface

class StreamLineDataSrc :public IDataSrcInterface

然后beta,theta类履行他们的职责,读取beta,theta数据,我们看看他们是怎么做的:




您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-20 04:39 , Processed in 0.024716 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表