使用类封装数值算法的固有优点和缺点是什么?
科学计算中使用的许多算法与通常在数学运算强度较低的软件工程形式中通常考虑的算法具有不同的固有结构。特别是,个别的数学算法往往非常复杂,通常涉及成百上千的代码行,但是却不涉及任何状态(即不作用于复杂的数据结构),并且通常可以归结为编程语言。接口-作用于一个或多个数组的单个函数。 这表明函数(而不是类)是科学计算中遇到的大多数算法的自然接口。但是,该论点对于如何处理复杂的多部分算法的实现并没有多大见解。 尽管传统方法只是简单地拥有一个调用多个其他函数的函数,并沿途传递相关参数,但是OOP提供了另一种方法,其中算法可以封装为类。为了清楚起见,通过将算法封装在类中,我的意思是创建一个类,在该类中将算法输入输入到类构造函数中,然后调用一个公共方法来实际调用该算法。C ++ psuedocode中的这种多重网格实现可能看起来像: class multigrid { private: x_, b_ [grid structure] restrict(...) interpolate(...) relax(...) public: multigrid(x,b) : x_(x), b_(b) { } run() } multigrid::run() { [call restrict, interpolate, relax, etc.] } 那么我的问题如下:与没有班级的更传统的方法相比,这种做法的利弊是什么?是否存在可扩展性或可维护性问题?明确地说,我并不是要征求意见,而是要更好地理解采用这种编码实践的下游影响(即,直到代码库变得很大之前可能不会产生的影响)。