面向对象的三维地质建模系统
高手说:面向对象只是一种软件设计方法,不要将之变成了软件设计的目的。
高手说:牵涉到科学计算的软件不适合采用面向对象的方法,内耗太多。
不过我想尝试一下对三维地质建模系统中的三维地质模型对象进行一下面向对象的分析,只是一种尝试,大家多提批评意见!
尝试1:
class 3dgeomodel
{
public:
set模型边界();//为代表模型边界的长方体对象赋值
set采集参数();//为面元参数、测线方位角、原点坐标等赋值
input模型几何离散点();//离散点已经按照一定要求进行分类整理排序
input模型属性离散点();//离散点已经按照一定要求进行分类整理排序
修改模型数据();//对模型中的地层和断层进行点编辑或面编辑
拓扑关系分析();对地层与地层之间、断层与断层之间、地层与断层之间进行拓扑关系分析
数值模型生成();将整个数值模型计算出来
show地质模型();//选择视角(第一人称或者第三人称)利用opengl进行绘图
private:
地层组对象;//(包含多个地层对象,每个地层对象由离散点对象和三角面对象组成)
断层组对象;//(包含多个断层对象,每个断层对象由离散点对象和三角面对象组成)
拓扑关系对象;//拓扑关系分析之后的拓扑关系状态
边界对象;
采集参数对象;
}
尝试完之后发现,这哪里是一个对象,简直就是一个过程吗!那么一个三维地质模型对象到底应该是什么样子的呢?再试试
尝试2:
class 3dgeomodel
{
public:
set模型边界();//为代表模型边界的长方体对象赋值
set采集参数();//为面元参数、测线方位角、原点坐标等赋值
input模型几何离散点();//离散点已经按照一定要求进行分类整理排序
input模型属性离散点();//离散点已经按照一定要求进行分类整理排序
赋予拓扑关系();
get拓扑关系();
get模型数据();
private:
地层组对象;//(包含多个地层对象,每个地层对象由离散点对象和三角面对象组成)
断层组对象;//(包含多个断层对象,每个断层对象由离散点对象和三角面对象组成)
拓扑关系对象;//拓扑关系分析之后的拓扑关系状态
边界对象;
采集参数对象;
}
尝试后发现,这个三维地质模型对象太简单了,啥都干不了,不能进行拓扑分析,也不能进行属性数据插值生成数值模型,也不能进行三维显示和编辑,那么该如何定义这个三维地质模型的class呢?请高手说说你的看法
[解决办法]
尝试后发现,这个三维地质模型对象太简单了,啥都干不了,不能进行拓扑分析,也不能进行属性数据插值生成数值模型,也不能进行三维显示和编辑,那么该如何定义这个三维地质模型的class呢?
>>能做什么不能做什么,完全在你怎么设计,你实现了什么接口,就能做什么
[解决办法]
没有这方面的domain knowledge :(
[解决办法]
不过下面两种说法,作为一个初懂面向对象的软件工程师,我认为在绝大部分情况下都是很不正确的。或许高手境界太高,其言深奥,非我等小辈所能揣测。坛子里不乏高人,不妨出来指教一二。
高手说:面向对象只是一种软件设计方法,不要将之变成了软件设计的目的。
高手说:牵涉到科学计算的软件不适合采用面向对象的方法,内耗太多。
[解决办法]
up 等高手出现~~
[解决办法]