This book is about the C++ programming language and how to use it to write abstract data types and object-oriented programs. An abstract data type is a programmer-defined data type that encompasses data elements along with the operations that can be perfomed on them. Object-oriented programming (O-OP) extends the concept by organizing abstract data types and exploiting their common features to reduce programming effort. This book grew out of a project, on which the authors continue to work at the time of this writing, to make UNIX-based workstations more useful to biomedical scientists at the National Institutes of Health (NIH).
Part 1 Introduction: data abstraction; object-oriented programming; the NIH class library. Part 2 Progamming with abstract data types in C++: data abstraction in C++; specification of class BigInt; implementation of class BigInt; applications for abstract data types; stream I/O; dynamic character strings; abstract data types for dates and times; regular expressions; numeric data types. Part 3 Object-oriented programming in C++: object-oriented programming concepts; geometry example; object-oriented progamming terminology; an introduction to the NIH class library; geometry example using NIH library classes; copying objects; object I/O; progamming with the NIH container classes; the NIH class library container classes; guidelines for using container classes; designing library classes; an example NIH library class; lightweight processes; an object-oriented application; the object-oriented design; an implementation based on the NIH class library; implementing a database with the NIH class library; multiple inheritance; multiple inheritance and modular programming; virtual functions and multiple inheritance; virtual base classes; virtual base classes and virtual functions; object initialization and multiple inheritance; programming with virtual base classes; multiple inheritance and the NIH class library; exception handling; parameterized types; garbage collection; dynamic linking. Appendices: the NIH class library hierarchy; NIH class library template files; tips for C programmers.