有关计划的建议

时间:2011-03-29 11:06:48

标签: c++ oop

我正在尝试开发有限元模型的面向对象表示。有限元模型由二进制格式的一些输出文件(商业有限元程序的输出)组成,这些文件保留某些与有限元模型相关的数据(对于不在现场的人,这些数据对应于模型的节点(节点的坐标),模型的元素,元素表示的元素连通性(哪些元素与哪些节点相关联)和元素矩阵信息)。如果你这样说的话,这些数据通常也可以表示为int和double的一些向量以及一些其他数组结构。

我正在考虑制作一个通用类FeModel并将上述文件作为该类的成员关联并以这种方式工作,当然这些文件也是表示这些文件的对象。但是,保存信息的文件不是我想到的FeModel类的一部分,至少在概念上是这样。由于这个想法与现实世界的表现无关,我认为应该有更好的方法。这些文件只是用来保存信息。

我现在正在考虑通过创建合适的成员函数来从FeModel类中的这些文件中读取必要信息的选项,并以这种方式构建我想要的,以便接口或多或少是最小的。但是,另一方面,将此任务划分为表示上述文件的不同类并将其用作FeModel类中的成员对我来说看起来也不是一个糟糕的选择。这些情况下的决策标准是什么?我知道一个问题可以通过许多不同的方式解决,但是在某些选项之间犹豫不决的类似案例中是否存在某些指导原则?

格尔茨, Ú

3 个答案:

答案 0 :(得分:1)

我的那是一面文字墙。它可以使用一些过滤/重写。

据我所知,你有几个文件代表你的3D元素等。

我很好的OO方式(至少在我看来)会为你想要加载的每种类型的文件都有一个单独的类,在构造函数中传递文件名并加载数据,并且有可访问的成员访问数据。

但是如果没有进一步的信息,你要问的结构有点难以说明。

答案 1 :(得分:1)

您可能希望了解SOLID principles of OOP。 在我看来,这一切都是为了让你在面对变化时不那么脆弱。简而言之,您应该努力使设计变得更加友好:模型中的微小变化应该通过设计和实施中的次要和局部变化来反映。

不要忘记C ++不是OO语言,而是支持几种范例(包括OO)和其他范例的语言可以更好地适应手头的任务。如果您可以访问Bjarne Stroustrup优秀的“The C ++ Programming Language(Special Edition)”,请阅读第IV部分(“使用C ++设计”)以了解类和其他C ++概念的角色。

答案 2 :(得分:0)

OO解决方案侧重于行为,而不是数据。您尚未告诉我们您需要哪些行为,因此我们无法使用 OO 解决方案。

也就是说,找到你的不变量并为每个相关的不变量集创建一个类,你应该得到一个像样的模块化解决方案。

我建议您阅读Arthur Riel撰写的面向对象设计启发式一书。