Class Overview
The Class Concept
The focus of a traditional procedural interface is on action: "This routine does this algorithm." In contrast, the focus of an object-oriented interface is on things: "This object represents this concept." Since numerical linear algebra also tends to be organized around things, like vectors, matrices, factorizations, and decompositions, the mapping from numerical linear algebra to an object-oriented programming language is natural and straightforward. Of course, you do need the objects that represent the concepts of linear algebra, and these are provided in the Linear Algebra Module.
Each class in the library represents a single concept. Each class is designed to be orthogonal to the other classes. This design implies that you use only objects directly related to your problem. As your problem becomes more complex, you can draw on additional objects and additional capabilities of objects you are already using, but only if you need to.
Although the classes are independent and orthogonal, they all have similar interfaces. After you learn one matrix class, the others are easy to master. Also, since the classes have similar interfaces, you can easily use the Linear Algebra Module classes as C++ template arguments.