A matrix class library in C++ for structural engineering computing

Abstract Matrix computations are traditionally performed using procedural languages such as FORTRAN. This paper describes the object-oriented design and implementation of a matrix class library in C++. A wide range of abstractions and algorithms such as symmetric matrices, profile matrices, banded matrices, column vectors, and LU decompositions are presented which address a variety of time/ space demands in structural engineering computing. The object-oriented design presented here applies encapsulation, inheritance, composition, and type parameterization. Consistent semantics and uniform syntax of the interface is a major focus of the design for the matrix class library. Careful design to take advantage of the type system of C++, a strongly typed object-oriented programming language, allows potential misuses of abstractions to be detected at compile time. The proposed object-oriented matrix library not only improves the clarity and expressiveness of the client code, but also enhances its reliability.

[1]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[2]  Stanley B. Lippman,et al.  C++ Primer , 1993 .

[3]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[4]  Niklaus Wirth,et al.  From modula to oberon , 1988, Softw. Pract. Exp..

[5]  Daniel G. Bobrow,et al.  Common lisp object system specification , 1988, SIGP.

[6]  Jun Lu,et al.  Applying object-oriented design to finite element programming , 1993, SAC '93.

[7]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[8]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[9]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[10]  Hong Zhang A structural engineering software development environment , 1991 .

[11]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[12]  R. Cook,et al.  Concepts and Applications of Finite Element Analysis , 1974 .

[13]  Peter Wegner Dimensions of object-based language design , 1987, OOPSLA 1987.

[14]  Gene H. Golub,et al.  Matrix computations , 1983 .

[15]  James Coplien,et al.  Advanced C++ Programming Styles and Idioms , 1991, Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239).

[16]  Barbara Liskov,et al.  Data Abstraction and Hierarchy , 1987 .

[17]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[18]  Edsger W. Dijkstra,et al.  Predicate Calculus and Program Semantics , 1989, Texts and Monographs in Computer Science.